Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/34: Рейтинг темы: голосов - 34, средняя оценка - 4.85
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,860

Ошибка при сборке "Аргумент типа const wchar_t несовместим с параметром типа LPWSTR"

02.05.2019, 22:13. Показов 6726. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При попытке собрать решение вылетают ошибки в 242-248 строках

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
#include<Windows.h>
#include<WindowsX.h>
#include<CommCtrl.h>
#include<tchar.h>
#include <WinUser.h>
#define IDC_LIST 2001
#define IDC_BUTTON_ADD 2002
#define IDC_BUTTON_ADD2 2003
#define IDC_BUTTON_DEL 2004
#define IDC_BUTTON_FIND 2005
#define IDC_BUTTON_FONT 2006
#define IDC_TAB_CONTROL 2007
#define IDC_PROGRESS 2008
#define IDC_SPIN 2009
#define IDC_EDIT 2010
#define IDC_EDIT1 2011
#define IDC_BUTTON_MODAL3 2012
#define IDC_BUTTON_MODAL4 2013
#define IDC_BUTTON_MODAL2 2014
#define IDC_BUTTON_MODAL1 2015
#define IDC_RADIOBUTTON2 2016
#define IDC_DATATIMEPECKER1 2017
#define IDD_DIALOG1 2018
#define IDC_RADIOBUTTON1 2019
#define IDC_MYBUTTON1 2020
#define IDC_SYSLINK1 2021
#define IDC_STATIC1 2022
#define IDC_STATIC2 2023
#define IDC_STATIC3 2024
#define IDC_STATIC4 2025
#define IDC_STATIC5 2026
#define IDC_STATIC6 2027
#define IDC_STATIC7 2028
#define IDC_STATIC8 2029
#define IDC_STATIC9 2030
#define IDC_STATIC10 2031
#define IDC_STATIC11 2032
#define IDC_STATIC12 2033
#define IDC_TREEVIEW1 2034
#define IDI_TIMER1 2
#define TIMER 1
 
boolean flag = false;
 
#define WM_ADDITEM WM_USER + 1
int t = 0;
 
//ДЕСКРИПТОРЫ НЕМОДАЛЬНЫХ ДИАЛОГОВЫХ ОКОН
HWND hDlg = NULL;
HWND hFindDlg = NULL;
HWND hReplDlg = NULL;
HWND hwndTab = NULL;
HWND hwndPB = NULL;
HWND hwndTree = NULL;
TCHAR szBuffer[100] = TEXT("");
FINDREPLACE findDlg, repl;
UINT uFindMsgString = 0;
TCHAR szFindWhat[80];
TCHAR szBufferReplace[100] = TEXT("");
HFONT hFont = NULL;
//дескриптор открытого немодального диалогового окна
HWND hwndDlgCurrent = NULL;
 
//Оконная процедура главного окна
LRESULT CALLBACK MyWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
HTREEITEM InsTreeItem(HTREEITEM hParent, LPWSTR szText, HTREEITEM hAfter, int iImage, int iSelectedImage);
//функция, вызываемая в цикле обработки сообщений, пока в очереди нет сообщений
void OnIdle(HWND hwnd);
//функция, вызываемая в цикле обработки сообщений, перед тем, как сообщение будет передано в оконную процедуру
BOOL PreTranslateMessage(LPMSG lpmsg);
//обработки сообщений главного окна
//обработчик WM_CREATE
BOOL OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct);
//WM_DESTROY
void OnDestroy(HWND hwnd);
//WM_SIZE
void OnSize(HWND hwnd, UINT state, int cx, int cy);
//WM_COMMAND
void OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
//WM_ADDITEM
void OnAddItem(HWND hwnd);
//FindMsgString
void OnFindMsgString(HWND hwnd, LPFINDREPLACE lpFindReplace);
//процедура диалогового окна
INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
//Обработчики сообщений диалогового окна
//WM_INITDIALOG
BOOL Dialog_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam);
//WM_CLOSE
void Dialog_OnClose(HWND hwnd);
//WM_COMMAND
void Dialog_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE, LPTSTR lpszCmdLine, int nCmdShow)
{
    //регистрация оконного класса главного окна
    WNDCLASSEX myWindow = { sizeof(WNDCLASSEX) };
    myWindow.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
    myWindow.lpfnWndProc = MyWindowProc;
    myWindow.hInstance = hInstance;
    myWindow.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    myWindow.lpszMenuName = NULL;
    myWindow.lpszClassName = TEXT("MyWindowClass");
    myWindow.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
    if (0 == RegisterClassEx(&myWindow)) // регистрируем класс
    {
        // не удалось зарегистрировать новый оконный класс
        return -1; // завершение работы приложения
    }
    // загрузка библиотеки элементов управления общего пользования
    LoadLibrary(TEXT("ComCtl32.dll"));
    // создание главного окна на основе нового оконного класса
    HWND hwnd = CreateWindowEx(0, TEXT("MyWindowClass"), TEXT("Главное меню"),
        WS_OVERLAPPEDWINDOW, 100, 100, 1000, 500, NULL, NULL, hInstance, NULL);
    ShowWindow(hwnd, nCmdShow); // отображение главного окна ... цикл обработки сообщения ...
    MSG msg;
    BOOL bRet;
    for (;;)
    {
        // определение наличия сообщений в очереди
        while (!PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
        {
        }
        // извлечение сообщения из очереди
        bRet = GetMessage(&msg, NULL, 0, 0);
        if (bRet == -1)
        {/* обработка ошибки и возможно выход из цикла */
        }
        else if (FALSE == bRet)
        {
            break; // получено WM_QUIT, выход из цикла
        }
        else if (PreTranslateMessage(&msg) == FALSE)
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        } // if
    } // for
    return (int)msg.wParam; // завершение работы приложения
} // _tWinMain
 
LRESULT CALLBACK MyWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    LPFINDREPLACE lpfr;
    switch (uMsg)
    {
    case WM_CREATE: return HANDLE_WM_CREATE(hWnd, wParam, lParam, OnCreate);
    case WM_DESTROY: return HANDLE_WM_DESTROY(hWnd, wParam, lParam, OnDestroy);
    case WM_COMMAND: return HANDLE_WM_COMMAND(hWnd, wParam, lParam, OnCommand);
    case WM_NOTIFY:
    {
        LPNMHDR lpnmhdr = (LPNMHDR)lParam;
        if (lpnmhdr->code == NM_CLICK)
        {
            if (lpnmhdr->idFrom == IDC_SYSLINK1)
                ShellExecute(NULL, _T("open"), TEXT("http://msdn.microsoft.com"), NULL, NULL, SW_SHOWDEFAULT);
        }
        return 0;
    }
 
    case WM_LBUTTONDBLCLK: SetDlgItemText(hWnd, IDC_STATIC11, TEXT("Двойной клик ЛКМ"));
        SetTimer(hWnd, IDI_TIMER1, 5000, TIMERPROC(NULL));
        return 0;
    case WM_LBUTTONDOWN: SetDlgItemText(hWnd, IDC_STATIC11, TEXT("Нажал ЛКМ"));
        SetTimer(hWnd, IDI_TIMER1, 5000, TIMERPROC(NULL));
        return 0;
    case WM_LBUTTONUP: SetDlgItemText(hWnd, IDC_STATIC12, TEXT("Отпустил ЛКМ"));
        return 0;
    case WM_MOUSEMOVE: SetDlgItemInt(hWnd, IDC_STATIC3, GET_X_LPARAM(lParam), TRUE);
        SetDlgItemInt(hWnd, IDC_STATIC4, GET_Y_LPARAM(lParam), TRUE);
        return 0;
    case WM_SIZE: SetDlgItemInt(hWnd, IDC_STATIC1, GET_X_LPARAM(lParam), TRUE);
        SetDlgItemInt(hWnd, IDC_STATIC2, GET_Y_LPARAM(lParam), TRUE);
        return 0;
    case WM_SYSKEYDOWN: SetDlgItemInt(hWnd, IDC_STATIC7, wParam, TRUE);
        return 0;
    case WM_SYSCHAR: SetDlgItemInt(hWnd, IDC_STATIC8, wParam, TRUE);
        return 0;
    case WM_TIMER: SetDlgItemText(hWnd, IDC_STATIC11, TEXT("Нажатие ЛКМ"));
        SetDlgItemText(hWnd, IDC_STATIC12, TEXT("Отпускание ЛКМ"));
        return 0;
    } // switch
 
    if (uFindMsgString == uMsg) // сообщение FINDMSGSTRING
    {
        lpfr = (LPFINDREPLACE)lParam;
        if (lpfr->Flags & FR_DIALOGTERM)
        {
            hwndDlgCurrent = NULL;
            return 0;
        }
    } // if
      // передача необработанного сообщения оконной процедуре по умолчанию
    return DefWindowProc(hWnd, uMsg, wParam, lParam);
} // MyWindowProc
 
INT_PTR CALLBACK Dialog1Proc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
    case WM_INITDIALOG: return HANDLE_WM_INITDIALOG(hwndDlg, wParam, lParam, Dialog_OnInitDialog);
    case WM_CLOSE: HANDLE_WM_CLOSE(hwndDlg, wParam, lParam, Dialog_OnClose);
        return true;
    case WM_COMMAND: HANDLE_WM_COMMAND(hwndDlg, wParam, lParam, Dialog_OnCommand);
        return true;
    }
    return false;
}
 
void OnIdle(HWND hwnd)
{
    /* обработка каких-либо данных */
} // OnIdle
BOOL PreTranslateMessage(LPMSG lpMsg)
{
    return (NULL != hwndDlgCurrent) && IsDialogMessage(hwndDlgCurrent, lpMsg);
} // PreTranslateMessage
BOOL OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct)
{
    LoadLibrary(TEXT("Comctl32.dll"));
    CreateWindowEx(0, WC_LINK, TEXT("<a>msdn.microsoft.com</a>"), WS_CHILD | WS_VISIBLE, 260, 470, 140, 20, hwnd, (HMENU)IDC_SYSLINK1, lpCreateStruct->hInstance, NULL);
    // создание списка
    CreateWindowEx(0, TEXT("ListBox"), NULL,
        WS_CHILD | WS_VISIBLE | WS_BORDER | LBS_STANDARD, 0, 0, 250, 480, hwnd, (HMENU)IDC_LIST, lpCreateStruct->hInstance, NULL);
    // создание кнопки "Добавить запись"
    CreateWindowEx(0, TEXT("Button"), TEXT("Добавить запись"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 260, 10, 150, 25, hwnd, (HMENU)IDC_BUTTON_ADD, lpCreateStruct->hInstance, NULL);
    // создание кнопки "Удалить запись"
    CreateWindowEx(0, TEXT("Button"), TEXT("Удалить запись"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 260, 45, 150, 25, hwnd, (HMENU)IDC_BUTTON_DEL, lpCreateStruct->hInstance, NULL);
    // создание кнопки "Найти запись"
    CreateWindowEx(0, TEXT("Button"), TEXT("Найти запись"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 260, 80, 150, 25, hwnd, (HMENU)IDC_BUTTON_FIND, lpCreateStruct->hInstance, NULL);
    // создание поля даты или времени
    CreateWindowEx(0, TEXT("SysDateTimePick32"), TEXT("Поле ввода даты или времени"), WS_VISIBLE | WS_CHILD | WS_TABSTOP, 260, 150, 150, 25, hwnd, (HMENU)IDC_DATATIMEPECKER1, lpCreateStruct->hInstance, NULL);
    // создание переключателя 1
    CreateWindowEx(0, TEXT("Button"), TEXT("Переключатель 1"), WS_VISIBLE | WS_CHILD | WS_TABSTOP | BS_AUTORADIOBUTTON, 430, 80, 150, 25, hwnd, (HMENU)IDC_RADIOBUTTON1, lpCreateStruct->hInstance, NULL);
    // создание переключателя 2
    CreateWindowEx(0, TEXT("Button"), TEXT("Переключатель 2"), WS_VISIBLE | WS_CHILD | WS_TABSTOP | BS_AUTORADIOBUTTON, 430, 110, 150, 25, hwnd, (HMENU)IDC_RADIOBUTTON2, lpCreateStruct->hInstance, NULL);
    // создание гиперссылки
    hwndTree = CreateWindowEx(WS_EX_STATICEDGE, TEXT("SysTreeView32"), TEXT("Дерево просмотра"),
        WS_VISIBLE | WS_CHILD | TVS_HASBUTTONS | TVS_LINESATROOT | TVS_HASLINES, 5, 5, 240, 470, hwnd, (HMENU)IDC_TREEVIEW1, lpCreateStruct->hInstance, NULL);
    HTREEITEM hItem = InsTreeItem((HTREEITEM)TVI_ROOT, TEXT("Мои письма"), (HTREEITEM)TVI_FIRST, 0, 0);
    HTREEITEM hItem1 = InsTreeItem(hItem, TEXT("Входящие"), (HTREEITEM)TVI_SORT, 0, 0);
    HTREEITEM hItem2 = InsTreeItem(hItem, TEXT("Исходящие"), (HTREEITEM)TVI_SORT, 0, 0);
    InsTreeItem(hItem1, TEXT("Прочитанные"), (HTREEITEM)TVI_SORT, 0, 0);
    InsTreeItem(hItem1, TEXT("Непрочитанные"), (HTREEITEM)TVI_SORT, 0, 0);
    InsTreeItem(hItem2, TEXT("Отправленные"), (HTREEITEM)TVI_SORT, 0, 0);
    InsTreeItem(hItem2, TEXT("Черновики"), (HTREEITEM)TVI_SORT, 0, 0);
    //progress bar
    hwndPB = CreateWindowEx(0, PROGRESS_CLASS, NULL,
        WS_CHILD | WS_VISIBLE | PBS_SMOOTH | WS_BORDER, 700, 140, 150, 20, hwnd, (HMENU)IDC_PROGRESS, lpCreateStruct->hInstance, NULL);
    SendMessage(hwndPB, PBM_SETRANGE, 0, (LPARAM)MAKELONG(0, 10));
    //SendMessage(hwndPB, PBM_SETSTEP,(WPARAM)1,0);
    UpdateWindow(hwndPB);
    //spin control+edit1
    HWND Edit1 = CreateWindowEx(0, TEXT("Edit"), TEXT("0"),
        WS_CHILD | WS_VISIBLE | WS_BORDER | ES_CENTER | ES_NUMBER, 750, 70, 115, 25, hwnd, (HMENU)IDC_EDIT, lpCreateStruct->hInstance, NULL);
    CreateUpDownControl(WS_CHILD | WS_VISIBLE | UDS_ALIGNRIGHT | UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS,
        0, 0, 0, 0, hwnd, IDC_SPIN, lpCreateStruct->hInstance, Edit1, 100, 0, 0);
    //TIMER
    CreateWindowEx(0, TEXT("Button"), TEXT("Включить таймер"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 650, 10, 150, 25, hwnd, (HMENU)IDC_BUTTON_MODAL3, lpCreateStruct->hInstance, NULL);
 
    CreateWindowEx(0, TEXT("Button"), TEXT("Отключить таймер"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 650, 45, 150, 25, hwnd, (HMENU)IDC_BUTTON_MODAL4, lpCreateStruct->hInstance, NULL);
    //открыть
    CreateWindowEx(0, TEXT("Button"), TEXT("Диалоговое окно Открыть"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 430, 10, 200, 25, hwnd, (HMENU)IDC_BUTTON_MODAL2, lpCreateStruct->hInstance, NULL);
    CreateWindowEx(0, TEXT("Button"), TEXT("Диалоговое окно Заменить"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 430, 45, 200, 25, hwnd, (HMENU)IDC_BUTTON_MODAL1, lpCreateStruct->hInstance, NULL);
    return TRUE;
} // OnCreate
void OnDestroy(HWND hwnd)
{
    // удаление созданного шрифта
    if (NULL != hFont)
        DeleteObject(hFont), hFont = NULL;
    PostQuitMessage(0); // отправка сообщения WM_QUIT
} // OnDestroy
void OnSize(HWND hwnd, UINT state, int cx, int cy)
{
    if (state != SIZE_MINIMIZED)
    {
        // получение дескриптора списка
        HWND hwndCtl = GetDlgItem(hwnd, IDC_LIST);
        // изменение высоты списка
        MoveWindow(hwndCtl, 15, 15, 250, cy - 25, TRUE);
    } // if
} // OnSize
void OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    if (BN_CLICKED == codeNotify)
    {
        // получение дескриптора экземпляра приложения
        HINSTANCE hInstance = GetWindowInstance(hwnd);
        switch (id)
        {
        case IDC_BUTTON_MODAL1:
        {
            HWND hdlg = NULL; // десткриптор диалога поиска текста           
            memset(szFindWhat, 0, _countof(szFindWhat));
            // Заполнение FINDREPLACE
            if (0 == uFindMsgString)
            {
                // получение кода сообщения FINDMSGSTRING
                uFindMsgString = RegisterWindowMessage(FINDMSGSTRING);
            } // if
            if (IsWindow(hReplDlg) == FALSE)
            {
                repl.lStructSize = sizeof(FINDREPLACE);
                repl.hInstance = hInstance;
                repl.hwndOwner = hwnd;
                repl.lpstrFindWhat = szFindWhat;
                repl.wFindWhatLen = _countof(szFindWhat);
                repl.lpstrReplaceWith = szBufferReplace;
                repl.wReplaceWithLen = _countof(szBufferReplace);
                repl.wFindWhatLen = 80;
                repl.Flags = 0;
                hReplDlg = ReplaceText(&repl);
            }
        }
        break;
 
        case IDC_BUTTON_MODAL2:
            OPENFILENAME ofn;       // структура диалога открытия файла
            TCHAR szFile[MAX_PATH];        // буфер для имени файла
            memset(szFile, 0, _countof(szFile));
            HANDLE hf;// дескриптор файла
                      // Заполнение OPENFILENAME
            ZeroMemory(&ofn, sizeof(ofn));
            ofn.lStructSize = sizeof(ofn);
            ofn.hwndOwner = hwnd;
            ofn.lpstrFile = szFile;
            ofn.nMaxFile = sizeof(szFile);
            ofn.lpstrFilter = _T("All\0*.*\0Text\0*.TXT\0");
            ofn.nFilterIndex = 1;
            ofn.lpstrFileTitle = NULL;
            ofn.nMaxFileTitle = 0;
            ofn.lpstrInitialDir = NULL;
            ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
 
            // Показ диалога открытия файла.
            if (GetOpenFileName(&ofn) == TRUE)
                hf = CreateFile(ofn.lpstrFile, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, (HANDLE)NULL);
            break;
 
        case IDC_BUTTON_ADD: // нажата кнопка "Добавить запись"
        {
            // создание модального диалогового окна
            int nDlgResult = DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), hwnd, DialogProc);
            if (IDOK == nDlgResult)
            {
                // отправка окну сообщение о том, что нужно добавить запись
                SendMessage(hwnd, WM_ADDITEM, 0, 0);
            } // if
        }
        break;
        case IDC_BUTTON_DEL: // нажата кнопка "Удалить запись"
        {
            // получение дескриптор списка
            HWND hwndCtl = GetDlgItem(hwnd, IDC_LIST);
            // определение текущего выделенного элемента в списке
            int iItem = ListBox_GetCurSel(hwndCtl);
            if (iItem != -1)
            {
                int mbResult = MessageBox(hwnd, TEXT("Удалить выбранный элемент?"), TEXT("SampleWin32"), MB_YESNO | MB_ICONQUESTION);
 
                if (mbResult == IDYES)
                {
                    // удаление выделенного элемента из списка
                    ListBox_DeleteString(hwndCtl, iItem);
                } // if
            } // if
        }
        break;
        case IDC_BUTTON_FIND: // нажата кнопка "Найти запись"
            if (0 == uFindMsgString)
            {
                // получение кода сообщения FINDMSGSTRING
                uFindMsgString = RegisterWindowMessage(FINDMSGSTRING);
            } // if
              // если диалоговое окно "Найти" еще не создано
            if (IsWindow(hFindDlg) == FALSE)
            {
                findDlg.lStructSize = sizeof(FINDREPLACE);
                // указывание дескриптора экземпляра приложения
                findDlg.hInstance = hInstance;
                // указывание дескриптор окна владельца
                findDlg.hwndOwner = hwnd;
                // указывание строкового буфера
                findDlg.lpstrFindWhat = szBuffer;
                // указывание размера буфера
                findDlg.wFindWhatLen = _countof(szBuffer);
                // создание диалогового окно "Найти"
                hFindDlg = FindText(&findDlg);
            } // if
            break;
        case IDC_BUTTON_MODAL3:
            SendMessage(hwndPB, PBM_SETSTEP, (WPARAM)1, 0);
            SendMessage(hwndPB, PBM_STEPIT, 0, 0);
            int timeID;
            timeID = SetTimer(hwnd, TIMER, 1000, NULL);
            if (timeID == 0)
                MessageBox(NULL, TEXT("Не удалось начать загрузку"), TEXT("Таймер"), MB_OK | MB_ICONWARNING);
            else
                MessageBox(NULL, TEXT("Загрузка начата"), TEXT("Таймер"), MB_OK | MB_ICONWARNING);
            break;
        case IDC_BUTTON_MODAL4:
            KillTimer(hwnd, TIMER);
            t++;
            MessageBox(NULL, TEXT("Загрузка прервана"), TEXT("Таймер"), MB_OK | MB_ICONWARNING);
            break;
            // отображание немодального диалогового окна
            ShowWindow(hwndDlgCurrent, SW_SHOW);
            break;
        } // switch
    } // if
} // OnCommand
void OnAddItem(HWND hwnd)
{
    // получение дескриптора списка
    HWND hwndCtl = GetDlgItem(hwnd, IDC_LIST);
    // добавление нового элемента в список
    int iItem = ListBox_AddString(hwndCtl, szBuffer);
    // вставка нового элемента
    ListBox_SetCurSel(hwndCtl, iItem);
} // OnAddItem
void OnFindMsgString(HWND hwnd, LPFINDREPLACE lpFindReplace)
{
    if (lpFindReplace->Flags & FR_FINDNEXT) // нажата кнопка "Найти далее"
    {
        // получение дескриптора списка
        HWND hwndCtl = GetDlgItem(hwnd, IDC_LIST);
        // определение текущего выделенного элемента в списке
        int iItem = ListBox_GetCurSel(hwndCtl);
        // поиск указанного текста в списке
        // сразу после текущего выделенного элемента
        iItem = ListBox_FindString(hwndCtl, iItem, lpFindReplace->lpstrFindWhat);
        // выделение найденного элемента
        ListBox_SetCurSel(hwndCtl, iItem);
        if (LB_ERR == iItem) // элемент не найден
        {
            MessageBox(hFindDlg, TEXT("Поиск завершен"), TEXT("SampleWin32"), MB_OK | MB_ICONINFORMATION);
        } // if
    } // if
} // OnFindMsgString
INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
    case WM_INITDIALOG:
    {
        BOOL bRet = HANDLE_WM_INITDIALOG(hwndDlg, wParam, lParam, Dialog_OnInitDialog);
        return SetDlgMsgResult(hwndDlg, uMsg, bRet);
    }
    case WM_CLOSE:
        HANDLE_WM_CLOSE(hwndDlg, wParam, lParam, Dialog_OnClose);
        return TRUE;
    case WM_COMMAND:
        HANDLE_WM_COMMAND(hwndDlg, wParam, lParam, Dialog_OnCommand);
        return TRUE;
    } // switch
    return FALSE;
} // DialogProc
BOOL Dialog_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
    // получение дескриптора окна редактируемого поля
    HWND hwndEdit = GetDlgItem(hwnd, IDC_EDIT1);
    // задавание максимальной длины текста в редактируемом поле
    Edit_LimitText(hwndEdit, _countof(szBuffer) - 1);
    // задавание серого (фонового) текста в редактируемом поле
    Edit_SetCueBannerText(hwndEdit, L"Название новой записи");
    return TRUE;
} // Dialog_OnInitDialog
void Dialog_OnClose(HWND hwnd)
{
    if (hwnd == hDlg)
    {
        // удаление немодального диалогового окна
        DestroyWindow(hwnd);
    } // if
    else
    {
        // завершение работы модального диалогового окна
        EndDialog(hwnd, IDCLOSE);
    } // else
} // Dialog_OnClose
void Dialog_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    if (BN_CLICKED == codeNotify) // была нажата кнопка
    {
        switch (id)
        {
        case IDOK: // нажата кнопка "ОК"
        {
            // получение содержимого редактируемого поля
            int cch = GetDlgItemText(hwnd, IDC_EDIT1, szBuffer, _countof(szBuffer));
            if (0 == cch) // в редактируемого поле нет текста
            {
                // получение дескриптора окна редактируемого поля
                HWND hwndEdit = GetDlgItem(hwnd, IDC_EDIT1);
 
                EDITBALLOONTIP ebt = { sizeof(EDITBALLOONTIP) };
 
                ebt.pszTitle = L"SampleWin32";
                ebt.pszText = L"Укажите название новой записи";
                ebt.ttiIcon = TTI_WARNING;
                Edit_ShowBalloonTip(hwndEdit, &ebt);
            } // if
            else if (hwnd == hDlg)
            {
                // очистка редактируемого поля
                SetDlgItemText(hwnd, IDC_EDIT1, TEXT(""));
                // отправка окну-владельцу сообщение о том, что нужно добавить запись
                SendMessage(GetParent(hwnd), WM_ADDITEM, 0, 0);
            } // if
            else
            {
                // завершение работы модального диалогового окна
                EndDialog(hwnd, IDOK);
            } // else
        } // if
        break;
        case IDCANCEL: // нажата кнопка "Отмена"
            if (hwnd == hDlg)
            {
                // уничтожение немодального диалогового окна
                DestroyWindow(hwnd);
            } // if
            else
            {
                // завершение работы модального диалогового окна
                EndDialog(hwnd, IDCANCEL);
            } // else
            break;
        } // switch
    } // if
} // Dialog_OnCommand
Миниатюры
Ошибка при сборке "Аргумент типа const wchar_t несовместим с параметром типа LPWSTR"   Ошибка при сборке "Аргумент типа const wchar_t несовместим с параметром типа LPWSTR"   Ошибка при сборке "Аргумент типа const wchar_t несовместим с параметром типа LPWSTR"  

0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.05.2019, 22:13
Ответы с готовыми решениями:

Ошибка 'аргумент типа "const char *" несовместим с параметром типа "LPCWSTR"'
Здравствуйте, вот только начал изучать библиотеку WinApi и сразу же при первом примере в учебнике столкнулся с ошибкой: #include...

Аргумент типа const char несовместим с параметром типа char
Есть код: #include &quot;stdafx.h&quot; #include &lt;windows.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; #include &lt;tchar.h&gt; #include...

Столкнулся с ошибкой "аргумент типа "const char *" несовместим с параметром типа "LPCWSTR"
Привет, столкнулся с ошибкой &quot;аргумент типа &quot;const char *&quot; несовместим с параметром типа &quot;LPCWSTR&quot;&quot; HBITMAP hBitmap =...

14
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
03.05.2019, 04:30
Поменяйте в InsTreeItem() тип второго параметра на LPCWSTR что бы функция могла принимать строковые литералы (т.е. const wchar_t *).
Это же ваша функция?..
И используйте макрос TEXT() - безопаснее.
0
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,860
03.05.2019, 05:02  [ТС]
L0M, см.скрин
Но как только я ставлю в свойствах проекта: "набор символов - многобайтовую кодировку" ... у меня вдобавок в 221 строке с этой же ошибкой подчеркивается WC_LINK
Миниатюры
Ошибка при сборке "Аргумент типа const wchar_t несовместим с параметром типа LPWSTR"  
0
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,860
03.05.2019, 05:49  [ТС]
L0M, И почему-то у меня до всего этого, когда программа запускалась нормально, гиперссылка вообще не видна была

Добавлено через 25 минут
L0M, То есть у меня сейчас вся проблема даже не в этой гиперссылке (хотя она тоже что-то не появляется и ошибку выдает), так как я её удалил - ошибка осталась.
Все это началось после того как я вставил блок "дерева просмотра" (240 строка).
0
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,860
03.05.2019, 05:53  [ТС]
L0M, Это без блока дерева (гиперссылки не видно че-то)
Миниатюры
Ошибка при сборке "Аргумент типа const wchar_t несовместим с параметром типа LPWSTR"  
0
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,860
03.05.2019, 08:21  [ТС]
L0M, Все вопрос по дереву аннулирован - я просто кусок кода забыл в конец общего кода добавить.
Только я до сих пор не могу решить вопрос с:
1. отображением гиперссылки, она нигде не выскакивает;
2. У меня не отображаются окна добавления и удаления записей (хотя я вроде бы все прописал в коде);
3. И я не могу понять в чем у меня косяк - у меня коряво и не по-русски работает (и не останавливается сам) таймер (в соответствии с тем, какое время секунд установлено в поле ниже)
И последнее ... что мне нужно сделать чтобы зафиксировать и заблокировать на растяжение-сжатие границы главного окна?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
#include<Windows.h>
#include<WindowsX.h>
#include<CommCtrl.h>
#include<tchar.h>
#include <WinUser.h>
#define IDC_LIST 2001
#define IDC_BUTTON_ADD 2002
#define IDC_BUTTON_ADD2 2003
#define IDC_BUTTON_DEL 2004
#define IDC_BUTTON_FIND 2005
#define IDC_BUTTON_FONT 2006
#define IDC_TAB_CONTROL 2007
#define IDC_PROGRESS 2008
#define IDC_SPIN 2009
#define IDC_EDIT 2010
#define IDC_EDIT1 2011
#define IDC_BUTTON_MODAL3 2012
#define IDC_BUTTON_MODAL4 2013
#define IDC_BUTTON_MODAL2 2014
#define IDC_BUTTON_MODAL1 2015
#define IDC_RADIOBUTTON2 2016
#define IDC_DATATIMEPECKER1 2017
#define IDD_DIALOG1 2018
#define IDC_RADIOBUTTON1 2019
#define IDC_MYBUTTON1 2020
#define IDC_SYSLINK1 2021
#define IDC_STATIC1 2022
#define IDC_STATIC2 2023
#define IDC_STATIC3 2024
#define IDC_STATIC4 2025
#define IDC_STATIC5 2026
#define IDC_STATIC6 2027
#define IDC_STATIC7 2028
#define IDC_STATIC8 2029
#define IDC_STATIC9 2030
#define IDC_STATIC10 2031
#define IDC_STATIC11 2032
#define IDC_STATIC12 2033
#define IDC_TREEVIEW1 2034
#define ID_FORMAT_FONT 2035
#define IDI_TIMER1 2
#define TIMER 1
 
boolean flag = false;
 
#define WM_ADDITEM WM_USER + 1
int t = 0;
 
//ДЕСКРИПТОРЫ НЕМОДАЛЬНЫХ ДИАЛОГОВЫХ ОКОН
HWND hDlg = NULL;
HWND hFindDlg = NULL;
HWND hReplDlg = NULL;
HWND hwndTab = NULL;
HWND hwndPB = NULL;
HWND hwndTree = NULL;
TCHAR szBuffer[100] = TEXT("");
FINDREPLACE findDlg, repl;
UINT uFindMsgString = 0;
TCHAR szFindWhat[80];
TCHAR szBufferReplace[100] = TEXT("");
HFONT hFont = NULL;
//дескриптор открытого немодального диалогового окна
HWND hwndDlgCurrent = NULL;
 
//Оконная процедура главного окна
LRESULT CALLBACK MyWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
HTREEITEM InsTreeItem(HTREEITEM hParent, LPWSTR szText, HTREEITEM hAfter, int iImage, int iSelectedImage);
//функция, вызываемая в цикле обработки сообщений, пока в очереди нет сообщений
void OnIdle(HWND hwnd);
//функция, вызываемая в цикле обработки сообщений, перед тем, как сообщение будет передано в оконную процедуру
BOOL PreTranslateMessage(LPMSG lpmsg);
//обработки сообщений главного окна
//обработчик WM_CREATE
BOOL OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct);
//WM_DESTROY
void OnDestroy(HWND hwnd);
//WM_SIZE
void OnSize(HWND hwnd, UINT state, int cx, int cy);
//WM_COMMAND
void OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
//WM_ADDITEM
void OnAddItem(HWND hwnd);
//FindMsgString
void OnFindMsgString(HWND hwnd, LPFINDREPLACE lpFindReplace);
//процедура диалогового окна
INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
//Обработчики сообщений диалогового окна
//WM_INITDIALOG
BOOL Dialog_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam);
//WM_CLOSE
void Dialog_OnClose(HWND hwnd);
//WM_COMMAND
void Dialog_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE, LPTSTR lpszCmdLine, int nCmdShow)
{
    //регистрация оконного класса главного окна
    WNDCLASSEX myWindow = { sizeof(WNDCLASSEX) };
    myWindow.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
    myWindow.lpfnWndProc = MyWindowProc;
    myWindow.hInstance = hInstance;
    myWindow.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    myWindow.lpszMenuName = NULL;
    myWindow.lpszClassName = TEXT("MyWindowClass");
    myWindow.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
    if (0 == RegisterClassEx(&myWindow)) // регистрируем класс
    {
        // не удалось зарегистрировать новый оконный класс
        return -1; // завершение работы приложения
    }
    // загрузка библиотеки элементов управления общего пользования
    LoadLibrary(TEXT("ComCtl32.dll"));
    // создание главного окна на основе нового оконного класса
    HWND hwnd = CreateWindowEx(0, TEXT("MyWindowClass"), TEXT("Главное меню"),
        WS_OVERLAPPEDWINDOW, 100, 100, 1000, 500, NULL, NULL, hInstance, NULL);
    ShowWindow(hwnd, nCmdShow); // отображение главного окна ... цикл обработки сообщения ...
    MSG msg;
    BOOL bRet;
    for (;;)
    {
        // определение наличия сообщений в очереди
        while (!PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
        {
        }
        // извлечение сообщения из очереди
        bRet = GetMessage(&msg, NULL, 0, 0);
        if (bRet == -1)
        {/* обработка ошибки и возможно выход из цикла */
        }
        else if (FALSE == bRet)
        {
            break; // получено WM_QUIT, выход из цикла
        }
        else if (PreTranslateMessage(&msg) == FALSE)
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        } // if
    } // for
    return (int)msg.wParam; // завершение работы приложения
} // _tWinMain
 
LRESULT CALLBACK MyWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    LPFINDREPLACE lpfr;
    switch (uMsg)
    {
    case WM_CREATE: return HANDLE_WM_CREATE(hWnd, wParam, lParam, OnCreate);
    case WM_DESTROY: return HANDLE_WM_DESTROY(hWnd, wParam, lParam, OnDestroy);
    case WM_COMMAND: return HANDLE_WM_COMMAND(hWnd, wParam, lParam, OnCommand);
    case WM_NOTIFY:
    {
        LPNMHDR lpnmhdr = (LPNMHDR)lParam;
        if (lpnmhdr->code == NM_CLICK)
        {
            if (lpnmhdr->idFrom == IDC_SYSLINK1)
                ShellExecute(NULL, TEXT("open"), TEXT("http://msdn.microsoft.com"), NULL, NULL, SW_SHOWDEFAULT);
        }
        return 0;
    }
 
    case WM_LBUTTONDBLCLK: SetDlgItemText(hWnd, IDC_STATIC11, TEXT("Двойной клик ЛКМ"));
        SetTimer(hWnd, IDI_TIMER1, 5000, TIMERPROC(NULL));
        return 0;
    case WM_LBUTTONDOWN: SetDlgItemText(hWnd, IDC_STATIC11, TEXT("Нажал ЛКМ"));
        SetTimer(hWnd, IDI_TIMER1, 5000, TIMERPROC(NULL));
        return 0;
    case WM_LBUTTONUP: SetDlgItemText(hWnd, IDC_STATIC12, TEXT("Отпустил ЛКМ"));
        return 0;
    case WM_MOUSEMOVE: SetDlgItemInt(hWnd, IDC_STATIC3, GET_X_LPARAM(lParam), TRUE);
        SetDlgItemInt(hWnd, IDC_STATIC4, GET_Y_LPARAM(lParam), TRUE);
        return 0;
    case WM_SIZE: SetDlgItemInt(hWnd, IDC_STATIC1, GET_X_LPARAM(lParam), TRUE);
        SetDlgItemInt(hWnd, IDC_STATIC2, GET_Y_LPARAM(lParam), TRUE);
        return 0;
    case WM_SYSKEYDOWN: SetDlgItemInt(hWnd, IDC_STATIC7, wParam, TRUE);
        return 0;
    case WM_SYSCHAR: SetDlgItemInt(hWnd, IDC_STATIC8, wParam, TRUE);
        return 0;
    case WM_TIMER: SetDlgItemText(hWnd, IDC_STATIC11, TEXT("Нажатие ЛКМ"));
        SetDlgItemText(hWnd, IDC_STATIC12, TEXT("Отпускание ЛКМ"));
        return 0;
    } // switch
 
    if (uFindMsgString == uMsg) // сообщение FINDMSGSTRING
    {
        lpfr = (LPFINDREPLACE)lParam;
        if (lpfr->Flags & FR_DIALOGTERM)
        {
            hwndDlgCurrent = NULL;
            return 0;
        }
    } // if
      // передача необработанного сообщения оконной процедуре по умолчанию
    return DefWindowProc(hWnd, uMsg, wParam, lParam);
} // MyWindowProc
 
INT_PTR CALLBACK Dialog1Proc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
    case WM_INITDIALOG: return HANDLE_WM_INITDIALOG(hwndDlg, wParam, lParam, Dialog_OnInitDialog);
    case WM_CLOSE: HANDLE_WM_CLOSE(hwndDlg, wParam, lParam, Dialog_OnClose);
        return true;
    case WM_COMMAND: HANDLE_WM_COMMAND(hwndDlg, wParam, lParam, Dialog_OnCommand);
        return true;
    }
    return false;
}
 
void OnIdle(HWND hwnd)
{
    /* обработка каких-либо данных */
} // OnIdle
BOOL PreTranslateMessage(LPMSG lpMsg)
{
    return (NULL != hwndDlgCurrent) && IsDialogMessage(hwndDlgCurrent, lpMsg);
} // PreTranslateMessage
BOOL OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct)
{
 
    LoadLibrary(TEXT("Comctl32.dll"));
    // создание гиперссылки
    CreateWindowEx(0, WC_LINK, TEXT("<a>msdn.microsoft.com</a>"), WS_CHILD | WS_VISIBLE, 260, 470, 140, 20, hwnd, (HMENU)IDC_SYSLINK1, lpCreateStruct->hInstance, NULL);
    // создание списка
    CreateWindowEx(0, TEXT("ListBox"), NULL,
        WS_CHILD | WS_VISIBLE | WS_BORDER | LBS_STANDARD, 0, 0, 250, 480, hwnd, (HMENU)IDC_LIST, lpCreateStruct->hInstance, NULL);
    // создание кнопки "Добавить запись"
    CreateWindowEx(0, TEXT("Button"), TEXT("Добавить запись"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 260, 10, 150, 25, hwnd, (HMENU)IDC_BUTTON_ADD, lpCreateStruct->hInstance, NULL);
    // создание кнопки "Удалить запись"
    CreateWindowEx(0, TEXT("Button"), TEXT("Удалить запись"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 260, 45, 150, 25, hwnd, (HMENU)IDC_BUTTON_DEL, lpCreateStruct->hInstance, NULL);
    // создание кнопки "Найти запись"
    CreateWindowEx(0, TEXT("Button"), TEXT("Найти запись"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 260, 80, 150, 25, hwnd, (HMENU)IDC_BUTTON_FIND, lpCreateStruct->hInstance, NULL);
    // создание кнопки "Шрифт"
    CreateWindowEx(0, TEXT("Button"), TEXT("Шрифт"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 260, 115, 150, 25, hwnd, (HMENU)ID_FORMAT_FONT, lpCreateStruct->hInstance, NULL);
    // создание поля даты или времени
    CreateWindowEx(0, TEXT("SysDateTimePick32"), TEXT("Поле ввода даты или времени"), WS_VISIBLE | WS_CHILD | WS_TABSTOP, 260, 150, 150, 25, hwnd, (HMENU)IDC_DATATIMEPECKER1, lpCreateStruct->hInstance, NULL);
    // создание переключателя 1
    CreateWindowEx(0, TEXT("Button"), TEXT("Переключатель 1"), WS_VISIBLE | WS_CHILD | WS_TABSTOP | BS_AUTORADIOBUTTON, 430, 80, 150, 25, hwnd, (HMENU)IDC_RADIOBUTTON1, lpCreateStruct->hInstance, NULL);
    // создание переключателя 2
    CreateWindowEx(0, TEXT("Button"), TEXT("Переключатель 2"), WS_VISIBLE | WS_CHILD | WS_TABSTOP | BS_AUTORADIOBUTTON, 430, 110, 150, 25, hwnd, (HMENU)IDC_RADIOBUTTON2, lpCreateStruct->hInstance, NULL);
    // создание дерева просмотра
    hwndTree = CreateWindowEx(WS_EX_STATICEDGE, TEXT("SysTreeView32"), TEXT("Дерево просмотра"), WS_VISIBLE | WS_CHILD | TVS_HASBUTTONS | TVS_LINESATROOT | TVS_HASLINES, 5, 5, 240, 470, hwnd, (HMENU)IDC_TREEVIEW1, lpCreateStruct->hInstance, NULL);
    HTREEITEM hItem = InsTreeItem((HTREEITEM)TVI_ROOT, LPWSTR("Мои письма"), (HTREEITEM)TVI_FIRST, 0, 0);
    HTREEITEM hItem1 = InsTreeItem(hItem, LPWSTR("Входящие"), (HTREEITEM)TVI_SORT, 0, 0);
    HTREEITEM hItem2 = InsTreeItem(hItem, LPWSTR("Исходящие"), (HTREEITEM)TVI_SORT, 0, 0);
    InsTreeItem(hItem1, LPWSTR("Прочитанные"), (HTREEITEM)TVI_SORT, 0, 0);
    InsTreeItem(hItem1, LPWSTR("Непрочитанные"), (HTREEITEM)TVI_SORT, 0, 0);
    InsTreeItem(hItem2, LPWSTR("Отправленные"), (HTREEITEM)TVI_SORT, 0, 0);
    InsTreeItem(hItem2, LPWSTR("Черновики"), (HTREEITEM)TVI_SORT, 0, 0);
    //progress bar
    hwndPB = CreateWindowEx(0, PROGRESS_CLASS, NULL,
        WS_CHILD | WS_VISIBLE | PBS_SMOOTH | WS_BORDER, 650, 115, 150, 25, hwnd, (HMENU)IDC_PROGRESS, lpCreateStruct->hInstance, NULL);
    SendMessage(hwndPB, PBM_SETRANGE, 0, (LPARAM)MAKELONG(0, 10));
    //SendMessage(hwndPB, PBM_SETSTEP,(WPARAM)1,0);
    UpdateWindow(hwndPB);
    //spin control+edit1
    HWND Edit1 = CreateWindowEx(0, TEXT("Edit"), TEXT("0"),
        WS_CHILD | WS_VISIBLE | WS_BORDER | ES_CENTER | ES_NUMBER, 650, 80, 150, 25, hwnd, (HMENU)IDC_EDIT, lpCreateStruct->hInstance, NULL);
    CreateUpDownControl(WS_CHILD | WS_VISIBLE | UDS_ALIGNRIGHT | UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS,
        0, 0, 20, 0, hwnd, IDC_SPIN, lpCreateStruct->hInstance, Edit1, 100, 0, 0);
    //TIMER
    CreateWindowEx(0, TEXT("Button"), TEXT("Включить таймер"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 650, 10, 150, 25, hwnd, (HMENU)IDC_BUTTON_MODAL3, lpCreateStruct->hInstance, NULL);
 
    CreateWindowEx(0, TEXT("Button"), TEXT("Отключить таймер"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 650, 45, 150, 25, hwnd, (HMENU)IDC_BUTTON_MODAL4, lpCreateStruct->hInstance, NULL);
    //открыть
    CreateWindowEx(0, TEXT("Button"), TEXT("Диалоговое окно Открыть"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 430, 10, 200, 25, hwnd, (HMENU)IDC_BUTTON_MODAL2, lpCreateStruct->hInstance, NULL);
    CreateWindowEx(0, TEXT("Button"), TEXT("Диалоговое окно Заменить"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 430, 45, 200, 25, hwnd, (HMENU)IDC_BUTTON_MODAL1, lpCreateStruct->hInstance, NULL);
    return TRUE;
} // OnCreate
void OnDestroy(HWND hwnd)
{
    // удаление созданного шрифта
    if (NULL != hFont)
        DeleteObject(hFont), hFont = NULL;
    PostQuitMessage(0); // отправка сообщения WM_QUIT
} // OnDestroy
void OnSize(HWND hwnd, UINT state, int cx, int cy)
{
    if (state != SIZE_MINIMIZED)
    {
        // получение дескриптора списка
        HWND hwndCtl = GetDlgItem(hwnd, IDC_LIST);
        // изменение высоты списка
        MoveWindow(hwndCtl, 15, 15, 250, cy - 25, TRUE);
    } // if
} // OnSize
void OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    if (BN_CLICKED == codeNotify)
    {
        // получение дескриптора экземпляра приложения
        HINSTANCE hInstance = GetWindowInstance(hwnd);
        switch (id)
        {
        case IDC_BUTTON_MODAL1:
        {
            HWND hdlg = NULL; // десткриптор диалога поиска текста           
            memset(szFindWhat, 0, _countof(szFindWhat));
            // Заполнение FINDREPLACE
            if (0 == uFindMsgString)
            {
                // получение кода сообщения FINDMSGSTRING
                uFindMsgString = RegisterWindowMessage(FINDMSGSTRING);
            } // if
            if (IsWindow(hReplDlg) == FALSE)
            {
                repl.lStructSize = sizeof(FINDREPLACE);
                repl.hInstance = hInstance;
                repl.hwndOwner = hwnd;
                repl.lpstrFindWhat = szFindWhat;
                repl.wFindWhatLen = _countof(szFindWhat);
                repl.lpstrReplaceWith = szBufferReplace;
                repl.wReplaceWithLen = _countof(szBufferReplace);
                repl.wFindWhatLen = 80;
                repl.Flags = 0;
                // создание диалогового окна "Найти"
                hReplDlg = ReplaceText(&repl);
            }
        }
        break;
 
        case ID_FORMAT_FONT:
        {
            CHOOSEFONT font = { sizeof(CHOOSEFONT) };
            font.hInstance = hInstance;
            font.hwndOwner = hwnd;
            LOGFONT lf;
            ZeroMemory(&lf, sizeof(lf));
            font.lpLogFont = &lf; // используемая структура для создания шрифта
            BOOL bRet = ChooseFont(&font);
            if (FALSE != bRet)
            {
                HFONT hNewFont = CreateFontIndirect(font.lpLogFont);
                if (NULL != hNewFont)
                {
                    if (NULL != hFont) DeleteObject(hFont); //удаление созданного шрифта
                    hFont = hNewFont;
                    SendDlgItemMessage(hwnd, IDC_LIST, WM_SETFONT, (WPARAM)hFont, (LPARAM)TRUE);
                }
            }
            break;
        }
 
        case IDC_BUTTON_MODAL2:
            OPENFILENAME ofn;       // структура диалога открытия файла
            TCHAR szFile[MAX_PATH];        // буфер для имени файла
            memset(szFile, 0, _countof(szFile));
            HANDLE hf;// дескриптор файла
                      // Заполнение OPENFILENAME
            ZeroMemory(&ofn, sizeof(ofn));
            ofn.lStructSize = sizeof(ofn);
            ofn.hwndOwner = hwnd;
            ofn.lpstrFile = szFile;
            ofn.nMaxFile = sizeof(szFile);
            ofn.lpstrFilter = _T("All\0*.*\0Text\0*.TXT\0");
            ofn.nFilterIndex = 1;
            ofn.lpstrFileTitle = NULL;
            ofn.nMaxFileTitle = 0;
            ofn.lpstrInitialDir = NULL;
            ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
 
            // Показ диалога открытия файла.
            if (GetOpenFileName(&ofn) == TRUE)
                hf = CreateFile(ofn.lpstrFile, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, (HANDLE)NULL);
            break;
 
        case IDC_BUTTON_ADD: // нажата кнопка "Добавить запись"
        {
            // создание модального диалогового окна
            int nDlgResult = DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), hwnd, DialogProc);
            if (IDOK == nDlgResult)
            {
                // отправка окну сообщение о том, что нужно добавить запись
                MessageBox(hwnd, TEXT("Нажата кнопка ОК"), TEXT("Диалоговое окно"), MB_OK | MB_ICONINFORMATION);
            } // if
        }
        break;
        case IDC_BUTTON_DEL: // нажата кнопка "Удалить запись"
        {
            // получение дескриптор списка
            HWND hwndCtl = GetDlgItem(hwnd, IDC_LIST);
            // определение текущего выделенного элемента в списке
            int iItem = ListBox_GetCurSel(hwndCtl);
            if (iItem != -1)
            {
                int mbResult = MessageBox(hwnd, TEXT("Удалить выбранный элемент?"), TEXT("SampleWin32"), MB_YESNO | MB_ICONQUESTION);
 
                if (mbResult == IDYES)
                {
                    // удаление выделенного элемента из списка
                    ListBox_DeleteString(hwndCtl, iItem);
                } // if
            } // if
        }
        break;
        case IDC_BUTTON_FIND: // нажата кнопка "Найти запись"
            if (0 == uFindMsgString)
            {
                // получение кода сообщения FINDMSGSTRING
                uFindMsgString = RegisterWindowMessage(FINDMSGSTRING);
            } // if
              // если диалоговое окно "Найти" еще не создано
            if (IsWindow(hFindDlg) == FALSE)
            {
                findDlg.lStructSize = sizeof(FINDREPLACE);
                // указывание дескриптора экземпляра приложения
                findDlg.hInstance = hInstance;
                // указывание дескриптор окна владельца
                findDlg.hwndOwner = hwnd;
                // указывание строкового буфера
                findDlg.lpstrFindWhat = szBuffer;
                // указывание размера буфера
                findDlg.wFindWhatLen = _countof(szBuffer);
                // создание диалогового окно "Найти"
                hFindDlg = FindText(&findDlg);
            } // if
            break;
        case IDC_BUTTON_MODAL3:
            SendMessage(hwndPB, PBM_SETSTEP, (WPARAM)1, 0);
            SendMessage(hwndPB, PBM_STEPIT, 0, 0);
            int timeID;
            timeID = SetTimer(hwnd, TIMER, 1000, NULL);
            if (timeID == 0)
                MessageBox(NULL, TEXT("Не удалось начать загрузку"), TEXT("Таймер"), MB_OK | MB_ICONWARNING);
            else
                MessageBox(NULL, TEXT("Загрузка начата"), TEXT("Таймер"), MB_OK | MB_ICONWARNING);
            break;
        case IDC_BUTTON_MODAL4:
            KillTimer(hwnd, TIMER);
            t++;
            MessageBox(NULL, TEXT("Загрузка прервана"), TEXT("Таймер"), MB_OK | MB_ICONWARNING);
            break;
            // отображание немодального диалогового окна
            ShowWindow(hwndDlgCurrent, SW_SHOW);
            break;
        } // switch
    } // if
} // OnCommand
void OnAddItem(HWND hwnd)
{
    // получение дескриптора списка
    HWND hwndCtl = GetDlgItem(hwnd, IDC_LIST);
    // добавление нового элемента в список
    int iItem = ListBox_AddString(hwndCtl, szBuffer);
    // вставка нового элемента
    ListBox_SetCurSel(hwndCtl, iItem);
} // OnAddItem
void OnFindMsgString(HWND hwnd, LPFINDREPLACE lpFindReplace)
{
    if (lpFindReplace->Flags & FR_FINDNEXT) // нажата кнопка "Найти далее"
    {
        // получение дескриптора списка
        HWND hwndCtl = GetDlgItem(hwnd, IDC_LIST);
        // определение текущего выделенного элемента в списке
        int iItem = ListBox_GetCurSel(hwndCtl);
        // поиск указанного текста в списке
        // сразу после текущего выделенного элемента
        iItem = ListBox_FindString(hwndCtl, iItem, lpFindReplace->lpstrFindWhat);
        // выделение найденного элемента
        ListBox_SetCurSel(hwndCtl, iItem);
        if (LB_ERR == iItem) // элемент не найден
        {
            MessageBox(hFindDlg, TEXT("Поиск завершен"), TEXT("SampleWin32"), MB_OK | MB_ICONINFORMATION);
        } // if
    } // if
} // OnFindMsgString
INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
    case WM_INITDIALOG:
    {
        BOOL bRet = HANDLE_WM_INITDIALOG(hwndDlg, wParam, lParam, Dialog_OnInitDialog);
        return SetDlgMsgResult(hwndDlg, uMsg, bRet);
    }
    case WM_CLOSE:
        HANDLE_WM_CLOSE(hwndDlg, wParam, lParam, Dialog_OnClose);
        return TRUE;
    case WM_COMMAND:
        HANDLE_WM_COMMAND(hwndDlg, wParam, lParam, Dialog_OnCommand);
        return TRUE;
    } // switch
    return FALSE;
} // DialogProc
BOOL Dialog_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
    // получение дескриптора окна редактируемого поля
    HWND hwndEdit = GetDlgItem(hwnd, IDC_EDIT1);
    // задавание максимальной длины текста в редактируемом поле
    Edit_LimitText(hwndEdit, _countof(szBuffer) - 1);
    // задавание серого (фонового) текста в редактируемом поле
    Edit_SetCueBannerText(hwndEdit, L"Название новой записи");
    return TRUE;
} // Dialog_OnInitDialog
void Dialog_OnClose(HWND hwnd)
{
    if (hwnd == hDlg)
    {
        // удаление немодального диалогового окна
        DestroyWindow(hwnd);
    } // if
    else
    {
        // завершение работы модального диалогового окна
        EndDialog(hwnd, IDCLOSE);
    } // else
} // Dialog_OnClose
void Dialog_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    if (BN_CLICKED == codeNotify) // была нажата кнопка
    {
        switch (id)
        {
        case IDOK: // нажата кнопка "ОК"
        {
            // получение содержимого редактируемого поля
            int cch = GetDlgItemText(hwnd, IDC_EDIT1, szBuffer, _countof(szBuffer));
            if (0 == cch) // в редактируемого поле нет текста
            {
                // получение дескриптора окна редактируемого поля
                HWND hwndEdit = GetDlgItem(hwnd, IDC_EDIT1);
 
                EDITBALLOONTIP ebt = { sizeof(EDITBALLOONTIP) };
 
                ebt.pszTitle = L"SampleWin32";
                ebt.pszText = L"Укажите название новой записи";
                ebt.ttiIcon = TTI_WARNING;
                Edit_ShowBalloonTip(hwndEdit, &ebt);
            } // if
            else if (hwnd == hDlg)
            {
                // очистка редактируемого поля
                SetDlgItemText(hwnd, IDC_EDIT1, TEXT(""));
                // отправка окну-владельцу сообщение о том, что нужно добавить запись
                SendMessage(GetParent(hwnd), WM_ADDITEM, 0, 0);
            } // if
            else
            {
                // завершение работы модального диалогового окна
                EndDialog(hwnd, IDOK);
            } // else
        } // if
        break;
        case IDCANCEL: // нажата кнопка "Отмена"
            if (hwnd == hDlg)
            {
                // уничтожение немодального диалогового окна
                DestroyWindow(hwnd);
            } // if
            else
            {
                // завершение работы модального диалогового окна
                EndDialog(hwnd, IDCANCEL);
            } // else
            break;
        } // switch
    } // if
} // Dialog_OnCommand
 
HTREEITEM InsTreeItem(HTREEITEM hParent, LPWSTR szText, HTREEITEM hAfter, int iImage, int iSelectedImage)
{
    TV_INSERTSTRUCT tvins;
    HTREEITEM hItem;
    memset(&tvins, 0, sizeof(tvins));
    tvins.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM;
    tvins.item.pszText = szText;
    tvins.item.cchTextMax = lstrlen(szText);
    tvins.item.iImage = iImage;
    tvins.item.iSelectedImage = iSelectedImage;
    tvins.hInsertAfter = hAfter;
    tvins.hParent = hParent;
    hItem = TreeView_InsertItem(hwndTree, &tvins);
    return hItem;
}
Миниатюры
Ошибка при сборке "Аргумент типа const wchar_t несовместим с параметром типа LPWSTR"  
0
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
03.05.2019, 23:12
Я вам кое-что поправил.

Цитата Сообщение от xamelione25 Посмотреть сообщение
1. отображением гиперссылки, она нигде не выскакивает;
Теперь выскакивает.
Цитата Сообщение от xamelione25 Посмотреть сообщение
2. У меня не отображаются окна добавления и удаления записей (хотя я вроде бы все прописал в коде);
Для диалога добавления у меня нет ваших ресурсов: UINT_PTR nDlgResult = DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), hwnd, DialogProc);
Поэтому создание диалога всегда фэйлится.
С удалением - разбирайтесь со списком. У вас он то ли недописан, то ли где-то некорректно работает. Не разбирался.
Цитата Сообщение от xamelione25 Посмотреть сообщение
3. И я не могу понять в чем у меня косяк - у меня коряво и не по-русски работает (и не останавливается сам) таймер (в соответствии с тем, какое время секунд установлено в поле ниже)
С таймерами у вас вообще какая-то ерунда написана. Поищите по коду "timer". Их как-то подозрительно много.
И определитесь, где будут обрабатываться события таймера: в таймерной процедуре, назначаемой в SetTimer(), или в оконной процедуре на WM_TIMER.
Цитата Сообщение от xamelione25 Посмотреть сообщение
И последнее ... что мне нужно сделать чтобы зафиксировать и заблокировать на растяжение-сжатие границы главного окна?
Назначить окну нужные стили. Сделано.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
#include<Windows.h>
#include<WindowsX.h>
#include<tchar.h>
#include <WinUser.h>
 
#include<CommCtrl.h>
#pragma comment(lib, "ComCtl32.Lib")
#pragma comment(linker,"\"/manifestdependency:type                  = 'win32' \
                                              name                  = 'Microsoft.Windows.Common-Controls' \
                                              version               = '6.0.0.0' \
                                              processorArchitecture = '*' \
                                              publicKeyToken        = '6595b64144ccf1df' \
                                              language              = '*'\"")
 
#define IDC_LIST 2001
#define IDC_BUTTON_ADD 2002
#define IDC_BUTTON_ADD2 2003
#define IDC_BUTTON_DEL 2004
#define IDC_BUTTON_FIND 2005
#define IDC_BUTTON_FONT 2006
#define IDC_TAB_CONTROL 2007
#define IDC_PROGRESS 2008
#define IDC_SPIN 2009
#define IDC_EDIT 2010
#define IDC_EDIT1 2011
#define IDC_BUTTON_MODAL3 2012
#define IDC_BUTTON_MODAL4 2013
#define IDC_BUTTON_MODAL2 2014
#define IDC_BUTTON_MODAL1 2015
#define IDC_RADIOBUTTON2 2016
#define IDC_DATATIMEPECKER1 2017
#define IDD_DIALOG1 2018
#define IDC_RADIOBUTTON1 2019
#define IDC_MYBUTTON1 2020
#define IDC_SYSLINK1 2021
#define IDC_STATIC1 2022
#define IDC_STATIC2 2023
#define IDC_STATIC3 2024
#define IDC_STATIC4 2025
#define IDC_STATIC5 2026
#define IDC_STATIC6 2027
#define IDC_STATIC7 2028
#define IDC_STATIC8 2029
#define IDC_STATIC9 2030
#define IDC_STATIC10 2031
#define IDC_STATIC11 2032
#define IDC_STATIC12 2033
#define IDC_TREEVIEW1 2034
#define ID_FORMAT_FONT 2035
#define IDI_TIMER1 2
#define TIMER 1
 
boolean flag = false;
 
#define WM_ADDITEM WM_USER + 1
int t = 0;
 
//ДЕСКРИПТОРЫ НЕМОДАЛЬНЫХ ДИАЛОГОВЫХ ОКОН
HWND hDlg = NULL;
HWND hFindDlg = NULL;
HWND hReplDlg = NULL;
HWND hwndTab = NULL;
HWND hwndPB = NULL;
HWND hwndTree = NULL;
TCHAR szBuffer[100] = TEXT("");
FINDREPLACE findDlg, repl;
UINT uFindMsgString = 0;
TCHAR szFindWhat[80];
TCHAR szBufferReplace[100] = TEXT("");
HFONT hFont = NULL;
//дескриптор открытого немодального диалогового окна
HWND hwndDlgCurrent = NULL;
 
//Оконная процедура главного окна
LRESULT CALLBACK MyWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
HTREEITEM InsTreeItem(HTREEITEM hParent, LPCWSTR szText, HTREEITEM hAfter, int iImage, int iSelectedImage);
//функция, вызываемая в цикле обработки сообщений, пока в очереди нет сообщений
void OnIdle(HWND hwnd);
//функция, вызываемая в цикле обработки сообщений, перед тем, как сообщение будет передано в оконную процедуру
BOOL PreTranslateMessage(LPMSG lpmsg);
//обработки сообщений главного окна
//обработчик WM_CREATE
BOOL OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct);
//WM_DESTROY
void OnDestroy(HWND hwnd);
//WM_SIZE
void OnSize(HWND hwnd, UINT state, int cx, int cy);
//WM_COMMAND
void OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
//WM_ADDITEM
void OnAddItem(HWND hwnd);
//FindMsgString
void OnFindMsgString(HWND hwnd, LPFINDREPLACE lpFindReplace);
//процедура диалогового окна
INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
//Обработчики сообщений диалогового окна
//WM_INITDIALOG
BOOL Dialog_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam);
//WM_CLOSE
void Dialog_OnClose(HWND hwnd);
//WM_COMMAND
void Dialog_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
 
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE, LPTSTR lpszCmdLine, int nCmdShow)
{
    //регистрация оконного класса главного окна
    WNDCLASSEX myWindow = { sizeof(WNDCLASSEX) };
    myWindow.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
    myWindow.lpfnWndProc = MyWindowProc;
    myWindow.hInstance = hInstance;
    myWindow.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    myWindow.lpszMenuName = NULL;
    myWindow.lpszClassName = TEXT("MyWindowClass");
    myWindow.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
    if (0 == RegisterClassEx(&myWindow)) // регистрируем класс
    {
        // не удалось зарегистрировать новый оконный класс
        return -1; // завершение работы приложения
    }
    // загрузка библиотеки элементов управления общего пользования
    //LoadLibrary(TEXT("ComCtl32.dll"));
 
    // создание главного окна на основе нового оконного класса
    HWND hwnd = CreateWindowEx(0, TEXT("MyWindowClass"), TEXT("Главное меню"),
        WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX, 100, 100, 1000, 500, NULL, NULL, hInstance, NULL);
    ShowWindow(hwnd, nCmdShow); // отображение главного окна ... цикл обработки сообщения ...
    MSG msg;
    BOOL bRet;
    for (;;)
    {
        // определение наличия сообщений в очереди
        while (!PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
        {
        }
        // извлечение сообщения из очереди
        bRet = GetMessage(&msg, NULL, 0, 0);
        if (bRet == -1)
        {/* обработка ошибки и возможно выход из цикла */
        }
        else if (FALSE == bRet)
        {
            break; // получено WM_QUIT, выход из цикла
        }
        else if (PreTranslateMessage(&msg) == FALSE)
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        } // if
    } // for
    return (int)msg.wParam; // завершение работы приложения
} // _tWinMain
 
LRESULT CALLBACK MyWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    LPFINDREPLACE lpfr;
    switch (uMsg)
    {
    case WM_CREATE: return HANDLE_WM_CREATE(hWnd, wParam, lParam, OnCreate);
    case WM_DESTROY: return HANDLE_WM_DESTROY(hWnd, wParam, lParam, OnDestroy);
    case WM_COMMAND: return HANDLE_WM_COMMAND(hWnd, wParam, lParam, OnCommand);
    case WM_NOTIFY:
    {
        LPNMHDR lpnmhdr = (LPNMHDR)lParam;
        if (lpnmhdr->code == NM_CLICK)
        {
            if (lpnmhdr->idFrom == IDC_SYSLINK1)
                ShellExecute(NULL, TEXT("open"), TEXT("http://msdn.microsoft.com"), NULL, NULL, SW_SHOWDEFAULT);
        }
        return 0;
    }
 
    case WM_LBUTTONDBLCLK: SetDlgItemText(hWnd, IDC_STATIC11, TEXT("Двойной клик ЛКМ"));
        SetTimer(hWnd, IDI_TIMER1, 5000, TIMERPROC(NULL));
        return 0;
    case WM_LBUTTONDOWN: SetDlgItemText(hWnd, IDC_STATIC11, TEXT("Нажал ЛКМ"));
        SetTimer(hWnd, IDI_TIMER1, 5000, TIMERPROC(NULL));
        return 0;
    case WM_LBUTTONUP: SetDlgItemText(hWnd, IDC_STATIC12, TEXT("Отпустил ЛКМ"));
        return 0;
    case WM_MOUSEMOVE: SetDlgItemInt(hWnd, IDC_STATIC3, GET_X_LPARAM(lParam), TRUE);
        SetDlgItemInt(hWnd, IDC_STATIC4, GET_Y_LPARAM(lParam), TRUE);
        return 0;
    case WM_SIZE: SetDlgItemInt(hWnd, IDC_STATIC1, GET_X_LPARAM(lParam), TRUE);
        SetDlgItemInt(hWnd, IDC_STATIC2, GET_Y_LPARAM(lParam), TRUE);
        return 0;
    case WM_SYSKEYDOWN: SetDlgItemInt(hWnd, IDC_STATIC7, wParam, TRUE);
        return 0;
    case WM_SYSCHAR: SetDlgItemInt(hWnd, IDC_STATIC8, wParam, TRUE);
        return 0;
    case WM_TIMER: SetDlgItemText(hWnd, IDC_STATIC11, TEXT("Нажатие ЛКМ"));
        SetDlgItemText(hWnd, IDC_STATIC12, TEXT("Отпускание ЛКМ"));
        return 0;
    } // switch
 
    if (uFindMsgString == uMsg) // сообщение FINDMSGSTRING
    {
        lpfr = (LPFINDREPLACE)lParam;
        if (lpfr->Flags & FR_DIALOGTERM)
        {
            hwndDlgCurrent = NULL;
            return 0;
        }
    } // if
      // передача необработанного сообщения оконной процедуре по умолчанию
    return DefWindowProc(hWnd, uMsg, wParam, lParam);
} // MyWindowProc
 
INT_PTR CALLBACK Dialog1Proc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
    case WM_INITDIALOG: return HANDLE_WM_INITDIALOG(hwndDlg, wParam, lParam, Dialog_OnInitDialog);
    case WM_CLOSE: HANDLE_WM_CLOSE(hwndDlg, wParam, lParam, Dialog_OnClose);
        return true;
    case WM_COMMAND: HANDLE_WM_COMMAND(hwndDlg, wParam, lParam, Dialog_OnCommand);
        return true;
    }
    return false;
}
 
void OnIdle(HWND hwnd)
{
    /* обработка каких-либо данных */
} // OnIdle
BOOL PreTranslateMessage(LPMSG lpMsg)
{
    return (NULL != hwndDlgCurrent) && IsDialogMessage(hwndDlgCurrent, lpMsg);
} // PreTranslateMessage
BOOL OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct)
{
 
    //LoadLibrary(TEXT("Comctl32.dll"));
    INITCOMMONCONTROLSEX icex;
    icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
    icex.dwICC = ICC_UPDOWN_CLASS | ICC_LINK_CLASS | ICC_TREEVIEW_CLASSES;
    InitCommonControlsEx(&icex);
 
    // создание гиперссылки
    HWND hSysLink = CreateWindowEx(0, WC_LINK,
        TEXT("For more information, <A HREF=\"http://www.microsoft.com\">click here</A> or <A ID=\"idInfo\">here</A>."),
        WS_VISIBLE | WS_CHILD | WS_TABSTOP,
        300, 300, 300, 50,
        hwnd, (HMENU)IDC_SYSLINK1, lpCreateStruct->hInstance, NULL);
 
    //CreateWindowEx(0, WC_LINK, TEXT("<a>msdn.microsoft.com</a>"), WS_CHILD | WS_VISIBLE, 650, 470, 140, 20, hwnd, (HMENU)IDC_SYSLINK1, lpCreateStruct->hInstance, NULL);
    // создание списка
    CreateWindowEx(0, TEXT("ListBox"), NULL,
        WS_CHILD | WS_VISIBLE | WS_BORDER | LBS_STANDARD, 0, 0, 250, 480, hwnd, (HMENU)IDC_LIST, lpCreateStruct->hInstance, NULL);
    // создание кнопки "Добавить запись"
    CreateWindowEx(0, TEXT("Button"), TEXT("Добавить запись"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 260, 10, 150, 25, hwnd, (HMENU)IDC_BUTTON_ADD, lpCreateStruct->hInstance, NULL);
    // создание кнопки "Удалить запись"
    CreateWindowEx(0, TEXT("Button"), TEXT("Удалить запись"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 260, 45, 150, 25, hwnd, (HMENU)IDC_BUTTON_DEL, lpCreateStruct->hInstance, NULL);
    // создание кнопки "Найти запись"
    CreateWindowEx(0, TEXT("Button"), TEXT("Найти запись"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 260, 80, 150, 25, hwnd, (HMENU)IDC_BUTTON_FIND, lpCreateStruct->hInstance, NULL);
    // создание кнопки "Шрифт"
    CreateWindowEx(0, TEXT("Button"), TEXT("Шрифт"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 260, 115, 150, 25, hwnd, (HMENU)ID_FORMAT_FONT, lpCreateStruct->hInstance, NULL);
    // создание поля даты или времени
    CreateWindowEx(0, TEXT("SysDateTimePick32"), TEXT("Поле ввода даты или времени"), WS_VISIBLE | WS_CHILD | WS_TABSTOP, 260, 150, 150, 25, hwnd, (HMENU)IDC_DATATIMEPECKER1, lpCreateStruct->hInstance, NULL);
    // создание переключателя 1
    CreateWindowEx(0, TEXT("Button"), TEXT("Переключатель 1"), WS_VISIBLE | WS_CHILD | WS_TABSTOP | BS_AUTORADIOBUTTON, 430, 80, 150, 25, hwnd, (HMENU)IDC_RADIOBUTTON1, lpCreateStruct->hInstance, NULL);
    // создание переключателя 2
    CreateWindowEx(0, TEXT("Button"), TEXT("Переключатель 2"), WS_VISIBLE | WS_CHILD | WS_TABSTOP | BS_AUTORADIOBUTTON, 430, 110, 150, 25, hwnd, (HMENU)IDC_RADIOBUTTON2, lpCreateStruct->hInstance, NULL);
    // создание дерева просмотра
    hwndTree = CreateWindowEx(WS_EX_STATICEDGE, TEXT("SysTreeView32"), TEXT("Дерево просмотра"), WS_VISIBLE | WS_CHILD | TVS_HASBUTTONS | TVS_LINESATROOT | TVS_HASLINES, 5, 5, 240, 470, hwnd, (HMENU)IDC_TREEVIEW1, lpCreateStruct->hInstance, NULL);
 
    HTREEITEM hItem = InsTreeItem((HTREEITEM)TVI_ROOT, TEXT("Мои письма"), (HTREEITEM)TVI_FIRST, 0, 0);
    HTREEITEM hItem1 = InsTreeItem(hItem, TEXT("Входящие"), (HTREEITEM)TVI_SORT, 0, 0);
    HTREEITEM hItem2 = InsTreeItem(hItem, TEXT("Исходящие"), (HTREEITEM)TVI_SORT, 0, 0);
    InsTreeItem(hItem1, TEXT("Прочитанные"), (HTREEITEM)TVI_SORT, 0, 0);
    InsTreeItem(hItem1, TEXT("Непрочитанные"), (HTREEITEM)TVI_SORT, 0, 0);
    InsTreeItem(hItem2, TEXT("Отправленные"), (HTREEITEM)TVI_SORT, 0, 0);
    InsTreeItem(hItem2, TEXT("Черновики"), (HTREEITEM)TVI_SORT, 0, 0);
    TreeView_Expand(hwndTree, hItem, TVE_EXPAND);
    TreeView_Expand(hwndTree, hItem1, TVE_EXPAND);
    TreeView_Expand(hwndTree, hItem2, TVE_EXPAND);
    //progress bar
    hwndPB = CreateWindowEx(0, PROGRESS_CLASS, NULL,
        WS_CHILD | WS_VISIBLE | PBS_SMOOTH | WS_BORDER, 650, 115, 150, 25, hwnd, (HMENU)IDC_PROGRESS, lpCreateStruct->hInstance, NULL);
    SendMessage(hwndPB, PBM_SETRANGE, 0, (LPARAM)MAKELONG(0, 10));
    //SendMessage(hwndPB, PBM_SETSTEP,(WPARAM)1,0);
    UpdateWindow(hwndPB);
    //spin control+edit1
    HWND Edit1 = CreateWindowEx(0, TEXT("Edit"), TEXT("0"),
        WS_CHILD | WS_VISIBLE | WS_BORDER | ES_CENTER | ES_NUMBER, 650, 80, 150, 25, hwnd, (HMENU)IDC_EDIT, lpCreateStruct->hInstance, NULL);
    // spin control
    HWND hSpinControl = CreateWindowEx(WS_EX_LEFT | WS_EX_LTRREADING,
        UPDOWN_CLASS,
        NULL,
        WS_CHILDWINDOW | WS_VISIBLE
        | UDS_AUTOBUDDY | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_ARROWKEYS | UDS_HOTTRACK,
        0, 0,
        0, 0,         // Set to zero to automatically size to fit the buddy window.
        hwnd,
        NULL,
        lpCreateStruct->hInstance,
        NULL);
    SendMessage(hSpinControl, UDM_SETRANGE, 0, MAKELPARAM(0, 10));    // Sets the controls direction and range.
 
    //CreateUpDownControl(WS_CHILD | WS_VISIBLE | UDS_ALIGNRIGHT | UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS,
    //  0, 0, 20, 0, hwnd, IDC_SPIN, lpCreateStruct->hInstance, Edit1, 100, 0, 0);
 
 
    //TIMER
    CreateWindowEx(0, TEXT("Button"), TEXT("Включить таймер"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 650, 10, 150, 25, hwnd, (HMENU)IDC_BUTTON_MODAL3, lpCreateStruct->hInstance, NULL);
 
    CreateWindowEx(0, TEXT("Button"), TEXT("Отключить таймер"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 650, 45, 150, 25, hwnd, (HMENU)IDC_BUTTON_MODAL4, lpCreateStruct->hInstance, NULL);
    //открыть
    CreateWindowEx(0, TEXT("Button"), TEXT("Диалоговое окно Открыть"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 430, 10, 200, 25, hwnd, (HMENU)IDC_BUTTON_MODAL2, lpCreateStruct->hInstance, NULL);
    CreateWindowEx(0, TEXT("Button"), TEXT("Диалоговое окно Заменить"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 430, 45, 200, 25, hwnd, (HMENU)IDC_BUTTON_MODAL1, lpCreateStruct->hInstance, NULL);
    return TRUE;
} // OnCreate
void OnDestroy(HWND hwnd)
{
    // удаление созданного шрифта
    if (NULL != hFont)
        DeleteObject(hFont), hFont = NULL;
    PostQuitMessage(0); // отправка сообщения WM_QUIT
} // OnDestroy
void OnSize(HWND hwnd, UINT state, int cx, int cy)
{
    if (state != SIZE_MINIMIZED)
    {
        // получение дескриптора списка
        HWND hwndCtl = GetDlgItem(hwnd, IDC_LIST);
        // изменение высоты списка
        MoveWindow(hwndCtl, 15, 15, 250, cy - 25, TRUE);
    } // if
} // OnSize
void OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    if (BN_CLICKED == codeNotify)
    {
        // получение дескриптора экземпляра приложения
        HINSTANCE hInstance = GetWindowInstance(hwnd);
        switch (id)
        {
        case IDC_BUTTON_MODAL1:
        {
            HWND hdlg = NULL; // десткриптор диалога поиска текста           
            memset(szFindWhat, 0, _countof(szFindWhat));
            // Заполнение FINDREPLACE
            if (0 == uFindMsgString)
            {
                // получение кода сообщения FINDMSGSTRING
                uFindMsgString = RegisterWindowMessage(FINDMSGSTRING);
            } // if
            if (IsWindow(hReplDlg) == FALSE)
            {
                repl.lStructSize = sizeof(FINDREPLACE);
                repl.hInstance = hInstance;
                repl.hwndOwner = hwnd;
                repl.lpstrFindWhat = szFindWhat;
                repl.wFindWhatLen = _countof(szFindWhat);
                repl.lpstrReplaceWith = szBufferReplace;
                repl.wReplaceWithLen = _countof(szBufferReplace);
                repl.wFindWhatLen = 80;
                repl.Flags = 0;
                // создание диалогового окна "Найти"
                hReplDlg = ReplaceText(&repl);
            }
        }
        break;
 
        case ID_FORMAT_FONT:
        {
            CHOOSEFONT font = { sizeof(CHOOSEFONT) };
            font.hInstance = hInstance;
            font.hwndOwner = hwnd;
            LOGFONT lf;
            ZeroMemory(&lf, sizeof(lf));
            font.lpLogFont = &lf; // используемая структура для создания шрифта
            BOOL bRet = ChooseFont(&font);
            if (FALSE != bRet)
            {
                HFONT hNewFont = CreateFontIndirect(font.lpLogFont);
                if (NULL != hNewFont)
                {
                    if (NULL != hFont) DeleteObject(hFont); //удаление созданного шрифта
                    hFont = hNewFont;
                    SendDlgItemMessage(hwnd, IDC_LIST, WM_SETFONT, (WPARAM)hFont, (LPARAM)TRUE);
                }
            }
            break;
        }
 
        case IDC_BUTTON_MODAL2:
            OPENFILENAME ofn;       // структура диалога открытия файла
            TCHAR szFile[MAX_PATH];        // буфер для имени файла
            memset(szFile, 0, _countof(szFile));
            HANDLE hf;// дескриптор файла
                      // Заполнение OPENFILENAME
            ZeroMemory(&ofn, sizeof(ofn));
            ofn.lStructSize = sizeof(ofn);
            ofn.hwndOwner = hwnd;
            ofn.lpstrFile = szFile;
            ofn.nMaxFile = sizeof(szFile);
            ofn.lpstrFilter = _T("All\0*.*\0Text\0*.TXT\0");
            ofn.nFilterIndex = 1;
            ofn.lpstrFileTitle = NULL;
            ofn.nMaxFileTitle = 0;
            ofn.lpstrInitialDir = NULL;
            ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
 
            // Показ диалога открытия файла.
            if (GetOpenFileName(&ofn) == TRUE)
                hf = CreateFile(ofn.lpstrFile, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, (HANDLE)NULL);
            break;
 
        case IDC_BUTTON_ADD: // нажата кнопка "Добавить запись"
        {
            // создание модального диалогового окна
            UINT_PTR nDlgResult = DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), hwnd, DialogProc);
            if (IDOK == nDlgResult)
            {
                // отправка окну сообщение о том, что нужно добавить запись
                MessageBox(hwnd, TEXT("Нажата кнопка ОК"), TEXT("Диалоговое окно"), MB_OK | MB_ICONINFORMATION);
            } // if
        }
        break;
        case IDC_BUTTON_DEL: // нажата кнопка "Удалить запись"
        {
            // получение дескриптор списка
            HWND hwndCtl = GetDlgItem(hwnd, IDC_LIST);
            // определение текущего выделенного элемента в списке
            int iItem = ListBox_GetCurSel(hwndCtl);
            if (iItem != -1)
            {
                int mbResult = MessageBox(hwnd, TEXT("Удалить выбранный элемент?"), TEXT("SampleWin32"), MB_YESNO | MB_ICONQUESTION);
 
                if (mbResult == IDYES)
                {
                    // удаление выделенного элемента из списка
                    ListBox_DeleteString(hwndCtl, iItem);
                } // if
            } // if
        }
        break;
        case IDC_BUTTON_FIND: // нажата кнопка "Найти запись"
            if (0 == uFindMsgString)
            {
                // получение кода сообщения FINDMSGSTRING
                uFindMsgString = RegisterWindowMessage(FINDMSGSTRING);
            } // if
              // если диалоговое окно "Найти" еще не создано
            if (IsWindow(hFindDlg) == FALSE)
            {
                findDlg.lStructSize = sizeof(FINDREPLACE);
                // указывание дескриптора экземпляра приложения
                findDlg.hInstance = hInstance;
                // указывание дескриптор окна владельца
                findDlg.hwndOwner = hwnd;
                // указывание строкового буфера
                findDlg.lpstrFindWhat = szBuffer;
                // указывание размера буфера
                findDlg.wFindWhatLen = _countof(szBuffer);
                // создание диалогового окно "Найти"
                hFindDlg = FindText(&findDlg);
            } // if
            break;
        case IDC_BUTTON_MODAL3:
            SendMessage(hwndPB, PBM_SETSTEP, (WPARAM)1, 0);
            SendMessage(hwndPB, PBM_STEPIT, 0, 0);
            UINT_PTR timeID;
            timeID = SetTimer(hwnd, TIMER, 1000, NULL);
            if (timeID == 0)
                MessageBox(NULL, TEXT("Не удалось начать загрузку"), TEXT("Таймер"), MB_OK | MB_ICONWARNING);
            else
                MessageBox(NULL, TEXT("Загрузка начата"), TEXT("Таймер"), MB_OK | MB_ICONWARNING);
            break;
        case IDC_BUTTON_MODAL4:
            KillTimer(hwnd, TIMER);
            t++;
            MessageBox(NULL, TEXT("Загрузка прервана"), TEXT("Таймер"), MB_OK | MB_ICONWARNING);
            break;
            // отображание немодального диалогового окна
            ShowWindow(hwndDlgCurrent, SW_SHOW);
            break;
        } // switch
    } // if
} // OnCommand
void OnAddItem(HWND hwnd)
{
    // получение дескриптора списка
    HWND hwndCtl = GetDlgItem(hwnd, IDC_LIST);
    // добавление нового элемента в список
    int iItem = ListBox_AddString(hwndCtl, szBuffer);
    // вставка нового элемента
    ListBox_SetCurSel(hwndCtl, iItem);
} // OnAddItem
void OnFindMsgString(HWND hwnd, LPFINDREPLACE lpFindReplace)
{
    if (lpFindReplace->Flags & FR_FINDNEXT) // нажата кнопка "Найти далее"
    {
        // получение дескриптора списка
        HWND hwndCtl = GetDlgItem(hwnd, IDC_LIST);
        // определение текущего выделенного элемента в списке
        int iItem = ListBox_GetCurSel(hwndCtl);
        // поиск указанного текста в списке
        // сразу после текущего выделенного элемента
        iItem = ListBox_FindString(hwndCtl, iItem, lpFindReplace->lpstrFindWhat);
        // выделение найденного элемента
        ListBox_SetCurSel(hwndCtl, iItem);
        if (LB_ERR == iItem) // элемент не найден
        {
            MessageBox(hFindDlg, TEXT("Поиск завершен"), TEXT("SampleWin32"), MB_OK | MB_ICONINFORMATION);
        } // if
    } // if
} // OnFindMsgString
INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
    case WM_INITDIALOG:
    {
        BOOL bRet = HANDLE_WM_INITDIALOG(hwndDlg, wParam, lParam, Dialog_OnInitDialog);
        return SetDlgMsgResult(hwndDlg, uMsg, bRet);
    }
    case WM_CLOSE:
        HANDLE_WM_CLOSE(hwndDlg, wParam, lParam, Dialog_OnClose);
        return TRUE;
    case WM_COMMAND:
        HANDLE_WM_COMMAND(hwndDlg, wParam, lParam, Dialog_OnCommand);
        return TRUE;
    } // switch
    return FALSE;
} // DialogProc
BOOL Dialog_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
    // получение дескриптора окна редактируемого поля
    HWND hwndEdit = GetDlgItem(hwnd, IDC_EDIT1);
    // задавание максимальной длины текста в редактируемом поле
    Edit_LimitText(hwndEdit, _countof(szBuffer) - 1);
    // задавание серого (фонового) текста в редактируемом поле
    Edit_SetCueBannerText(hwndEdit, L"Название новой записи");
    return TRUE;
} // Dialog_OnInitDialog
void Dialog_OnClose(HWND hwnd)
{
    if (hwnd == hDlg)
    {
        // удаление немодального диалогового окна
        DestroyWindow(hwnd);
    } // if
    else
    {
        // завершение работы модального диалогового окна
        EndDialog(hwnd, IDCLOSE);
    } // else
} // Dialog_OnClose
void Dialog_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    if (BN_CLICKED == codeNotify) // была нажата кнопка
    {
        switch (id)
        {
        case IDOK: // нажата кнопка "ОК"
        {
            // получение содержимого редактируемого поля
            int cch = GetDlgItemText(hwnd, IDC_EDIT1, szBuffer, _countof(szBuffer));
            if (0 == cch) // в редактируемого поле нет текста
            {
                // получение дескриптора окна редактируемого поля
                HWND hwndEdit = GetDlgItem(hwnd, IDC_EDIT1);
 
                EDITBALLOONTIP ebt = { sizeof(EDITBALLOONTIP) };
 
                ebt.pszTitle = L"SampleWin32";
                ebt.pszText = L"Укажите название новой записи";
                ebt.ttiIcon = TTI_WARNING;
                Edit_ShowBalloonTip(hwndEdit, &ebt);
            } // if
            else if (hwnd == hDlg)
            {
                // очистка редактируемого поля
                SetDlgItemText(hwnd, IDC_EDIT1, TEXT(""));
                // отправка окну-владельцу сообщение о том, что нужно добавить запись
                SendMessage(GetParent(hwnd), WM_ADDITEM, 0, 0);
            } // if
            else
            {
                // завершение работы модального диалогового окна
                EndDialog(hwnd, IDOK);
            } // else
        } // if
        break;
        case IDCANCEL: // нажата кнопка "Отмена"
            if (hwnd == hDlg)
            {
                // уничтожение немодального диалогового окна
                DestroyWindow(hwnd);
            } // if
            else
            {
                // завершение работы модального диалогового окна
                EndDialog(hwnd, IDCANCEL);
            } // else
            break;
        } // switch
    } // if
} // Dialog_OnCommand
 
HTREEITEM InsTreeItem(HTREEITEM hParent, LPCWSTR szText, HTREEITEM hAfter, int iImage, int iSelectedImage)
{
    TCHAR buf[261];
    _tcsncpy_s(buf, szText, 261);
 
    TV_INSERTSTRUCT tvins;
    HTREEITEM hItem;
    memset(&tvins, 0, sizeof(tvins));
    tvins.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM;
    tvins.item.pszText = buf;
    tvins.item.cchTextMax = lstrlen(szText);
    tvins.item.iImage = iImage;
    tvins.item.iSelectedImage = iSelectedImage;
    tvins.hInsertAfter = hAfter;
    tvins.hParent = hParent;
    hItem = TreeView_InsertItem(hwndTree, &tvins);
    return hItem;
}
PS. Я совсем не великий знаток WinAPI, поэтому возможны варианты...
1
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,860
04.05.2019, 09:43  [ТС]
L0M,
Цитата Сообщение от L0M Посмотреть сообщение
нет ваших ресурсов:
...
... фэйлится.
Не сильно понял смысла написанного.

Цитата Сообщение от L0M Посмотреть сообщение
И определитесь, где будут обрабатываться события таймера: в таймерной процедуре, назначаемой в SetTimer(), или в оконной процедуре на WM_TIMER.
У меня по заданию должен быть WM_TIMER. Он просто после включения отщелкивает одну секунду и все и останавливается ... и не обращает внимание на значение в поле (сколько секунд ему было там написано). И так каждое включение отщелкивает и стопорится. Причем таймер даже как-то не пропорционально длине отведенного ему поля отщелкивает значение зелеными шагами в поле. Даже если я ему напишу 2сек он мне все-равно делает мелкие шаги.

------------------------------------------------------------------------------------------------------------------------
А что мне сделать, чтобы у меня "дерево" после нажатия на "-" не исчезало, а просто сворачивалось.
0
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,860
04.05.2019, 23:15  [ТС]
L0M, Может быть в этих строках в обработчике что-то не правильно прописано 87,102,160,214,388-415,500
Не работает DialogBox и WM_TIMER. Добавление и удаление записей через модальное диалоговое окно

Добавлено через 4 часа 14 минут
L0M,
Я уже все перепробовал.... все равно не работают кнопки "удалить" и "добавить" хоть в лоб хоть по лбу..... вешалка
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
#include<Windows.h>
#include<WindowsX.h>
#include<tchar.h>
#include<WinUser.h>
 
#include<CommCtrl.h>
#pragma comment(lib, "ComCtl32.Lib")
#pragma comment(linker,"\"/manifestdependency:type                  = 'win32' \
                                              name                  = 'Microsoft.Windows.Common-Controls' \
                                              version               = '6.0.0.0' \
                                              processorArchitecture = '*' \
                                              publicKeyToken        = '6595b64144ccf1df' \
                                              language              = '*'\"")
 
#define IDR_MENU1 2000
#define IDC_LIST 2001
#define IDC_BUTTON_ADD 2002
#define IDC_BUTTON_ADD2 2003
#define IDC_BUTTON_DEL 2004
#define IDC_BUTTON_FIND 2005
#define IDC_BUTTON_FONT 2006
#define IDC_TAB_CONTROL 2007
#define IDC_PROGRESS 2008
#define IDC_SPIN 2009
#define IDC_EDIT 2010
#define IDC_EDIT1 2011
#define IDC_BUTTON_MODAL3 2012
#define IDC_BUTTON_MODAL4 2013
#define IDC_BUTTON_MODAL2 2014
#define IDC_BUTTON_MODAL1 2015
#define IDC_RADIOBUTTON2 2016
#define IDC_DATATIMEPECKER1 2017
#define IDD_DIALOG1 2018
#define IDC_RADIOBUTTON1 2019
#define IDC_MYBUTTON1 2020
#define IDC_SYSLINK1 2021
#define IDC_STATIC1 2022
#define IDC_STATIC2 2023
#define IDC_STATIC3 2024
#define IDC_STATIC4 2025
#define IDC_STATIC5 2026
#define IDC_STATIC6 2027
#define IDC_STATIC7 2028
#define IDC_STATIC8 2029
#define IDC_STATIC9 2030
#define IDC_STATIC10 2031
#define IDC_STATIC11 2032
#define IDC_STATIC12 2033
#define IDC_TREEVIEW1 2034
#define ID_FORMAT_FONT 2035
#define IDI_TIMER1 2
#define TIMER 1
boolean flag = false;
#define WM_ADDITEM WM_USER + 1
int t = 0;
 
//ДЕСКРИПТОРЫ НЕМОДАЛЬНЫХ ДИАЛОГОВЫХ ОКОН
HWND hwnd = NULL;
HACCEL hAccel = NULL;
HWND hDlg = NULL;
HWND hFindDlg = NULL;
HWND hReplDlg = NULL;
HWND hwndTab = NULL;
HWND hwndPB = NULL;
HWND hwndTree = NULL;
TCHAR szBuffer[100] = TEXT("");
FINDREPLACE findDlg, repl;
UINT uFindMsgString = 0;
TCHAR szFindWhat[80];
TCHAR szBufferReplace[100] = TEXT("");
HFONT hFont = NULL;
//дескриптор открытого немодального диалогового окна
HWND hwndDlgCurrent = NULL;
 
//Оконная процедура главного окна
LRESULT CALLBACK MyWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
HTREEITEM InsTreeItem(HTREEITEM hParent, LPCWSTR szText, HTREEITEM hAfter, int iImage, int iSelectedImage);
//функция, вызываемая в цикле обработки сообщений, пока в очереди нет сообщений
void OnIdle(HWND hwnd);
//функция, вызываемая в цикле обработки сообщений, перед тем, как сообщение будет передано в оконную процедуру
BOOL PreTranslateMessage(LPMSG lpmsg);
//обработки сообщений главного окна
//обработчик WM_CREATE
BOOL OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct);
//WM_DESTROY
void OnDestroy(HWND hwnd);
//WM_SIZE
void OnSize(HWND hwnd, UINT state, int cx, int cy);
//WM_COMMAND
void OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
//WM_ADDITEM
void OnAddItem(HWND hwnd);
//FindMsgString
void OnFindMsgString(HWND hwnd, LPFINDREPLACE lpFindReplace);
//процедура диалогового окна
INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
//Обработчики сообщений диалогового окна
 
 
//WM_INITDIALOG
BOOL Dialog_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam);
//WM_CLOSE
void Dialog_OnClose(HWND hwnd);
//WM_COMMAND
void Dialog_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
 
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE, LPTSTR lpszCmdLine, int nCmdShow)
{
    //регистрация оконного класса главного окна
    WNDCLASSEX myWindow = { sizeof(WNDCLASSEX) };
    myWindow.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
    myWindow.lpfnWndProc = MyWindowProc;
    myWindow.hInstance = hInstance;
    myWindow.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    myWindow.hCursor = LoadCursor(NULL, IDC_ARROW);
    myWindow.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
    myWindow.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);
    myWindow.lpszClassName = TEXT("MyWindowClass");
    myWindow.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
    if (0 == RegisterClassEx(&myWindow)) // регистрируем класс
    {
        // не удалось зарегистрировать новый оконный класс
        return -1; // завершение работы приложения
    }
    // загрузка библиотеки элементов управления общего пользования
    //LoadLibrary(TEXT("ComCtl32.dll"));
 
    // создание главного окна на основе нового оконного класса
    HWND hwnd = CreateWindowEx(0, TEXT("MyWindowClass"), TEXT("Главное меню"), WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX, 100, 100, 1000, 500, NULL, NULL, hInstance, NULL);
    if (NULL == hwnd)
    {
        return -1;
    }
    ShowWindow(hwnd, nCmdShow); // отображение главного окна ... цикл обработки сообщения ...
    MSG msg;
    BOOL bRet;
    for (;;)
    {
        // определение наличия сообщений в очереди
        while (!PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
        {
            OnIdle(hwnd);
        }
        // извлечение сообщения из очереди
        bRet = GetMessage(&msg, NULL, 0, 0);
        if (bRet == -1)
        {/* обработка ошибки и возможно выход из цикла */
        }
        else if (FALSE == bRet)
        {
            break; // получено WM_QUIT, выход из цикла
        }
        else if (!PreTranslateMessage(&msg))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        } // if
    } // for
    return (int)msg.wParam; // завершение работы приложения
} // _tWinMain
 
LRESULT CALLBACK MyWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    LPFINDREPLACE lpfr;
    switch (uMsg)
    {
    case WM_CREATE: return HANDLE_WM_CREATE(hwnd, wParam, lParam, OnCreate);
    case WM_DESTROY: return HANDLE_WM_DESTROY(hwnd, wParam, lParam, OnDestroy);
    case WM_COMMAND: return HANDLE_WM_COMMAND(hwnd, wParam, lParam, OnCommand);
    case WM_NOTIFY:
    {
        LPNMHDR lpnmhdr = (LPNMHDR)lParam;
        if (lpnmhdr->code == NM_CLICK)
        {
            if (lpnmhdr->idFrom == IDC_SYSLINK1)
                ShellExecute(NULL, TEXT("open"), TEXT("http://msdn.microsoft.com"), NULL, NULL, SW_SHOWDEFAULT);
        }
        return 0;
    }
    case WM_ADDITEM: OnAddItem(hwnd);
    case WM_LBUTTONDBLCLK: SetDlgItemText(hwnd, IDC_STATIC11, TEXT("Двойной клик ЛКМ"));
        SetTimer(hwnd, IDI_TIMER1, 5000, TIMERPROC(NULL));
        return 0;
    case WM_LBUTTONDOWN: SetDlgItemText(hwnd, IDC_STATIC11, TEXT("Нажал ЛКМ"));
        SetTimer(hwnd, IDI_TIMER1, 5000, TIMERPROC(NULL));
        return 0;
    case WM_LBUTTONUP: SetDlgItemText(hwnd, IDC_STATIC12, TEXT("Отпустил ЛКМ"));
        return 0;
    case WM_MOUSEMOVE: SetDlgItemInt(hwnd, IDC_STATIC3, GET_X_LPARAM(lParam), TRUE);
        SetDlgItemInt(hwnd, IDC_STATIC4, GET_Y_LPARAM(lParam), TRUE);
        return 0;
    case WM_SIZE: SetDlgItemInt(hwnd, IDC_STATIC1, GET_X_LPARAM(lParam), TRUE);
        SetDlgItemInt(hwnd, IDC_STATIC2, GET_Y_LPARAM(lParam), TRUE);
        return 0;
    case WM_SYSKEYDOWN: SetDlgItemInt(hwnd, IDC_STATIC7, wParam, TRUE);
        return 0;
    case WM_SYSCHAR: SetDlgItemInt(hwnd, IDC_STATIC8, wParam, TRUE);
        return 0;
    case WM_TIMER: SetDlgItemText(hwnd, IDC_STATIC11, TEXT("Нажатие ЛКМ"));
        SetDlgItemText(hwnd, IDC_STATIC12, TEXT("Отпускание ЛКМ"));
        return 0;
    } // switch
 
    if (uFindMsgString == uMsg) // сообщение FINDMSGSTRING
    {
        lpfr = (LPFINDREPLACE)lParam;
        if (lpfr->Flags & FR_DIALOGTERM)
        {
            hwndDlgCurrent = NULL;
            return 0;
        }
    } // if
      // передача необработанного сообщения оконной процедуре по умолчанию
    return DefWindowProc(hwnd, uMsg, wParam, lParam);
} // MyWindowProc
 
INT_PTR CALLBACK Dialog1Proc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
    case WM_INITDIALOG: 
    {
        BOOL bRet = HANDLE_WM_INITDIALOG(hwndDlg, wParam, lParam, Dialog_OnInitDialog);
        return HANDLE_WM_INITDIALOG(hwndDlg, wParam, lParam, Dialog_OnInitDialog);
    }
        
    case WM_CLOSE: HANDLE_WM_CLOSE(hwndDlg, wParam, lParam, Dialog_OnClose);
        return true;
    case WM_COMMAND: HANDLE_WM_COMMAND(hwndDlg, wParam, lParam, Dialog_OnCommand);
        return true;
    }
    return false;
}
 
void OnIdle(HWND hwnd)
{
    /* обработка каких-либо данных */
} // OnIdle
BOOL PreTranslateMessage(LPMSG lpMsg)
{
    BOOL bRet = TRUE;
    if (!TranslateAccelerator(hwnd, hAccel, lpMsg))
    {
        bRet = IsDialogMessage(hDlg, lpMsg);
        if (FALSE == bRet)
            bRet = IsDialogMessage(hFindDlg, lpMsg);
    }
    return (NULL != hwndDlgCurrent) && IsDialogMessage(hwndDlgCurrent, lpMsg);
} // PreTranslateMessage
BOOL OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct)
{
    //LoadLibrary(TEXT("Comctl32.dll"));
    INITCOMMONCONTROLSEX icex;
    icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
    icex.dwICC = ICC_UPDOWN_CLASS | ICC_LINK_CLASS | ICC_TREEVIEW_CLASSES;
    InitCommonControlsEx(&icex);
    // создание гиперссылки
    HWND hSysLink = CreateWindowEx(0, WC_LINK, TEXT("Сайт Microsoft, <A HREF=\"http://www.microsoft.com\">click here</A>"), WS_VISIBLE | WS_CHILD | WS_TABSTOP, 260, 420, 100, 30, hwnd, (HMENU)IDC_SYSLINK1, lpCreateStruct->hInstance, NULL);
    //CreateWindowEx(0, WC_LINK, TEXT("<a>msdn.microsoft.com</a>"), WS_CHILD | WS_VISIBLE, 650, 470, 140, 20, hwnd, (HMENU)IDC_SYSLINK1, lpCreateStruct->hInstance, NULL);
    // создание списка
    CreateWindowEx(0, TEXT("ListBox"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | LBS_STANDARD, 0, 0, 250, 480, hwnd, (HMENU)IDC_LIST, lpCreateStruct->hInstance, NULL);
    // создание кнопки "Добавить запись"
    CreateWindowEx(0, TEXT("Button"), TEXT("Добавить запись"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 260, 10, 150, 25, hwnd, (HMENU)IDC_BUTTON_ADD, lpCreateStruct->hInstance, NULL);
    // создание кнопки "Удалить запись"
    CreateWindowEx(0, TEXT("Button"), TEXT("Удалить запись"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 260, 45, 150, 25, hwnd, (HMENU)IDC_BUTTON_DEL, lpCreateStruct->hInstance, NULL);
    // создание кнопки "Найти запись"
    CreateWindowEx(0, TEXT("Button"), TEXT("Найти запись"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 260, 80, 150, 25, hwnd, (HMENU)IDC_BUTTON_FIND, lpCreateStruct->hInstance, NULL);
    // создание кнопки "Шрифт"
    CreateWindowEx(0, TEXT("Button"), TEXT("Шрифт"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 260, 115, 150, 25, hwnd, (HMENU)ID_FORMAT_FONT, lpCreateStruct->hInstance, NULL);
    // создание поля даты или времени
    CreateWindowEx(0, TEXT("SysDateTimePick32"), TEXT("Поле ввода даты или времени"), WS_VISIBLE | WS_CHILD | WS_TABSTOP, 260, 150, 150, 25, hwnd, (HMENU)IDC_DATATIMEPECKER1, lpCreateStruct->hInstance, NULL);
    // создание переключателя 1
    CreateWindowEx(0, TEXT("Button"), TEXT("Переключатель 1"), WS_VISIBLE | WS_CHILD | WS_TABSTOP | BS_AUTORADIOBUTTON, 430, 80, 150, 25, hwnd, (HMENU)IDC_RADIOBUTTON1, lpCreateStruct->hInstance, NULL);
    // создание переключателя 2
    CreateWindowEx(0, TEXT("Button"), TEXT("Переключатель 2"), WS_VISIBLE | WS_CHILD | WS_TABSTOP | BS_AUTORADIOBUTTON, 430, 110, 150, 25, hwnd, (HMENU)IDC_RADIOBUTTON2, lpCreateStruct->hInstance, NULL);
    // создание дерева просмотра
    hwndTree = CreateWindowEx(WS_EX_STATICEDGE, TEXT("SysTreeView32"), TEXT("Дерево просмотра"), WS_VISIBLE | WS_CHILD | TVS_HASBUTTONS | TVS_LINESATROOT | TVS_HASLINES, 5, 5, 240, 470, hwnd, (HMENU)IDC_TREEVIEW1, lpCreateStruct->hInstance, NULL);
    HTREEITEM hItem = InsTreeItem((HTREEITEM)TVI_ROOT, TEXT("Мои письма"), (HTREEITEM)TVI_FIRST, 0, 0);
    HTREEITEM hItem1 = InsTreeItem(hItem, TEXT("Входящие"), (HTREEITEM)TVI_SORT, 0, 0);
    HTREEITEM hItem2 = InsTreeItem(hItem, TEXT("Исходящие"), (HTREEITEM)TVI_SORT, 0, 0);
    InsTreeItem(hItem1, TEXT("Прочитанные"), (HTREEITEM)TVI_SORT, 0, 0);
    InsTreeItem(hItem1, TEXT("Непрочитанные"), (HTREEITEM)TVI_SORT, 0, 0);
    InsTreeItem(hItem2, TEXT("Отправленные"), (HTREEITEM)TVI_SORT, 0, 0);
    InsTreeItem(hItem2, TEXT("Черновики"), (HTREEITEM)TVI_SORT, 0, 0);
    TreeView_Expand(hwndTree, hItem, TVE_EXPAND);
    TreeView_Expand(hwndTree, hItem1, TVE_EXPAND);
    TreeView_Expand(hwndTree, hItem2, TVE_EXPAND);
    //progress bar
    hwndPB = CreateWindowEx(0, PROGRESS_CLASS, NULL, WS_CHILD | WS_VISIBLE | PBS_SMOOTH | WS_BORDER, 650, 115, 150, 25, hwnd, (HMENU)IDC_PROGRESS, lpCreateStruct->hInstance, NULL);
    SendMessage(hwndPB, PBM_SETRANGE, 0, (LPARAM)MAKELONG(0, 10));
    //SendMessage(hwndPB, PBM_SETSTEP,(WPARAM)1,0);
    UpdateWindow(hwndPB);
    //spin control+edit1
    HWND Edit1 = CreateWindowEx(0, TEXT("Edit"), TEXT("0"), WS_CHILD | WS_VISIBLE | WS_BORDER | ES_CENTER | ES_NUMBER, 650, 80, 150, 25, hwnd, (HMENU)IDC_EDIT, lpCreateStruct->hInstance, NULL);
    // spin control
    HWND hSpinControl = CreateWindowEx(WS_EX_LEFT | WS_EX_LTRREADING, UPDOWN_CLASS, NULL, WS_CHILDWINDOW | WS_VISIBLE | UDS_AUTOBUDDY | UDS_SETBUDDYINT 
        | UDS_ALIGNRIGHT | UDS_ARROWKEYS | UDS_HOTTRACK, 0, 0, 0, 0, hwnd, NULL, lpCreateStruct->hInstance, NULL); // Set to zero to automatically size to fit the buddy window.
    SendMessage(hSpinControl, UDM_SETRANGE, 0, MAKELPARAM(0, 10));
    // Sets the controls direction and range. CreateUpDownControl(WS_CHILD | WS_VISIBLE | UDS_ALIGNRIGHT | UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS, 0, 0, 20, 0, hwnd, IDC_SPIN, lpCreateStruct->hInstance, Edit1, 100, 0, 0);
    //TIMER
    CreateWindowEx(0, TEXT("Button"), TEXT("Включить таймер"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 650, 10, 150, 25, hwnd, (HMENU)IDC_BUTTON_MODAL3, lpCreateStruct->hInstance, NULL);
    CreateWindowEx(0, TEXT("Button"), TEXT("Отключить таймер"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 650, 45, 150, 25, hwnd, (HMENU)IDC_BUTTON_MODAL4, lpCreateStruct->hInstance, NULL);
    //открыть
    CreateWindowEx(0, TEXT("Button"), TEXT("Диалоговое окно Открыть"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 430, 10, 200, 25, hwnd, (HMENU)IDC_BUTTON_MODAL2, lpCreateStruct->hInstance, NULL);
    CreateWindowEx(0, TEXT("Button"), TEXT("Диалоговое окно Заменить"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 430, 45, 200, 25, hwnd, (HMENU)IDC_BUTTON_MODAL1, lpCreateStruct->hInstance, NULL);
    return TRUE;
} // OnCreate
void OnDestroy(HWND hwnd)
{
    // удаление созданного шрифта
    if (NULL != hFont)
        DeleteObject(hFont), hFont = NULL;
    PostQuitMessage(0); // отправка сообщения WM_QUIT
} // OnDestroy
void OnSize(HWND hwnd, UINT state, int cx, int cy)
{
    if (state != SIZE_MINIMIZED)
    {
        // получение дескриптора списка
        HWND hwndCtl = GetDlgItem(hwnd, IDC_LIST);
        // изменение высоты списка
        MoveWindow(hwndCtl, 15, 15, 250, cy - 25, TRUE);
    } // if
} // OnSize
void OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    if (BN_CLICKED == codeNotify)
    {
        // получение дескриптора экземпляра приложения
        HINSTANCE hInstance = GetWindowInstance(hwnd);
        switch (id)
        {
        case IDC_BUTTON_MODAL1:
        {
            HWND hdlg = NULL; // десткриптор диалога поиска текста           
            memset(szFindWhat, 0, _countof(szFindWhat));
            // Заполнение FINDREPLACE
            if (0 == uFindMsgString)
            {
                // получение кода сообщения FINDMSGSTRING
                uFindMsgString = RegisterWindowMessage(FINDMSGSTRING);
            } // if
            if (IsWindow(hReplDlg) == FALSE)
            {
                repl.lStructSize = sizeof(FINDREPLACE);
                repl.hInstance = hInstance;
                repl.hwndOwner = hwnd;
                repl.lpstrFindWhat = szFindWhat;
                repl.wFindWhatLen = _countof(szFindWhat);
                repl.lpstrReplaceWith = szBufferReplace;
                repl.wReplaceWithLen = _countof(szBufferReplace);
                repl.wFindWhatLen = 80;
                repl.Flags = 0;
                // создание диалогового окна "Найти"
                hReplDlg = ReplaceText(&repl);
            }
        }
        break;
 
        case ID_FORMAT_FONT:
        {
            CHOOSEFONT font = { sizeof(CHOOSEFONT) };
            font.hInstance = hInstance;
            font.hwndOwner = hwnd;
            LOGFONT lf;
            ZeroMemory(&lf, sizeof(lf));
            font.lpLogFont = &lf; // используемая структура для создания шрифта
            BOOL bRet = ChooseFont(&font);
            if (FALSE != bRet)
            {
                HFONT hNewFont = CreateFontIndirect(font.lpLogFont);
                if (NULL != hNewFont)
                {
                    if (NULL != hFont) DeleteObject(hFont); //удаление созданного шрифта
                    hFont = hNewFont;
                    SendDlgItemMessage(hwnd, IDC_LIST, WM_SETFONT, (WPARAM)hFont, (LPARAM)TRUE);
                }
            }
            break;
        }
        case IDC_BUTTON_MODAL2:
            OPENFILENAME ofn;       // структура диалога открытия файла
            TCHAR szFile[MAX_PATH];        // буфер для имени файла
            memset(szFile, 0, _countof(szFile));
            HANDLE hf;// дескриптор файла
                      // Заполнение OPENFILENAME
            ZeroMemory(&ofn, sizeof(ofn));
            ofn.lStructSize = sizeof(ofn);
            ofn.hwndOwner = hwnd;
            ofn.lpstrFile = szFile;
            ofn.nMaxFile = sizeof(szFile);
            ofn.lpstrFilter = _T("All\0*.*\0Text\0*.TXT\0");
            ofn.nFilterIndex = 1;
            ofn.lpstrFileTitle = NULL;
            ofn.nMaxFileTitle = 0;
            ofn.lpstrInitialDir = NULL;
            ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
            // Показ диалога открытия файла.
            if (GetOpenFileName(&ofn) == TRUE)
                hf = CreateFile(ofn.lpstrFile, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, (HANDLE)NULL);
            break;
        case IDC_BUTTON_ADD: // нажата кнопка "Добавить запись"
        {
            // создание модального диалогового окна
            UINT_PTR nDlgResult = DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), hwnd, DialogProc);
            if (IDOK == nDlgResult)
            {
                // отправка окну сообщение о том, что нужно добавить запись
                SendMessage(hwnd, WM_ADDITEM, 0, 0);
            } // if
        }
        break;
        case IDC_BUTTON_DEL: // нажата кнопка "Удалить запись"
        {
            // получение дескриптор списка
            HWND hwndCtl = GetDlgItem(hwnd, IDC_LIST);
            // определение текущего выделенного элемента в списке
            int iItem = ListBox_GetCurSel(hwndCtl);
            if (iItem != -1)
            {
                int mbResult = MessageBox(hwnd, TEXT("Удалить выбранный элемент?"), TEXT("SampleWin32"), MB_YESNO | MB_ICONQUESTION);
                if (mbResult == IDYES)
                {
                    // удаление выделенного элемента из списка
                    ListBox_DeleteString(hwndCtl, iItem);
                } // if
            } // if
        }
        break;
        case IDC_BUTTON_FIND: // нажата кнопка "Найти запись"
            if (0 == uFindMsgString)
            {
                // получение кода сообщения FINDMSGSTRING
                uFindMsgString = RegisterWindowMessage(FINDMSGSTRING);
            } // if
              // если диалоговое окно "Найти" еще не создано
            if (IsWindow(hFindDlg) == FALSE)
            {
                findDlg.lStructSize = sizeof(FINDREPLACE);
                // указывание дескриптора экземпляра приложения
                findDlg.hInstance = hInstance;
                // указывание дескриптор окна владельца
                findDlg.hwndOwner = hwnd;
                // указывание строкового буфера
                findDlg.lpstrFindWhat = szBuffer;
                // указывание размера буфера
                findDlg.wFindWhatLen = _countof(szBuffer);
                // создание диалогового окно "Найти"
                hFindDlg = FindText(&findDlg);
            } // if
            break;
        case IDC_BUTTON_MODAL3:
            SendMessage(hwndPB, PBM_SETSTEP, (WPARAM)1, 0);
            SendMessage(hwndPB, PBM_STEPIT, 0, 0);
            UINT_PTR timeID;
            timeID = SetTimer(hwnd, TIMER, 1000, NULL);
            if (timeID == 0)
                MessageBox(NULL, TEXT("Не удалось начать загрузку"), TEXT("Таймер"), MB_OK | MB_ICONWARNING);
            else
                MessageBox(NULL, TEXT("Загрузка начата"), TEXT("Таймер"), MB_OK | MB_ICONWARNING);
            break;
        case IDC_BUTTON_MODAL4:
            KillTimer(hwnd, TIMER);
            t++;
            MessageBox(NULL, TEXT("Загрузка прервана"), TEXT("Таймер"), MB_OK | MB_ICONWARNING);
            break;
            // отображание немодального диалогового окна
            ShowWindow(hwndDlgCurrent, SW_SHOW);
            break;
        } // switch
    } // if
} // OnCommand
void OnAddItem(HWND hwnd)
{
    // получение дескриптора списка
    HWND hwndCtl = GetDlgItem(hwnd, IDC_LIST);
    // добавление нового элемента в список
    int iItem = ListBox_AddString(hwndCtl, szBuffer);
    // вставка нового элемента
    ListBox_SetCurSel(hwndCtl, iItem);
} // OnAddItem
void OnFindMsgString(HWND hwnd, LPFINDREPLACE lpFindReplace)
{
    if (lpFindReplace->Flags & FR_FINDNEXT) // нажата кнопка "Найти далее"
    {
        // получение дескриптора списка
        HWND hwndCtl = GetDlgItem(hwnd, IDC_LIST);
        // определение текущего выделенного элемента в списке
        int iItem = ListBox_GetCurSel(hwndCtl);
        // поиск указанного текста в списке
        // сразу после текущего выделенного элемента
        iItem = ListBox_FindString(hwndCtl, iItem, lpFindReplace->lpstrFindWhat);
        // выделение найденного элемента
        ListBox_SetCurSel(hwndCtl, iItem);
        if (LB_ERR == iItem) // элемент не найден
        {
            MessageBox(hFindDlg, TEXT("Поиск завершен"), TEXT("SampleWin32"), MB_OK | MB_ICONINFORMATION);
        } // if
    } // if
} // OnFindMsgString
INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
    case WM_INITDIALOG:
    {
        BOOL bRet = HANDLE_WM_INITDIALOG(hwndDlg, wParam, lParam, Dialog_OnInitDialog);
        return SetDlgMsgResult(hwndDlg, uMsg, bRet);
    }
    case WM_CLOSE: HANDLE_WM_CLOSE(hwndDlg, wParam, lParam, Dialog_OnClose);
        return TRUE;
    case WM_COMMAND: HANDLE_WM_COMMAND(hwndDlg, wParam, lParam, Dialog_OnCommand);
        return TRUE;
    } // switch
    return FALSE;
} // DialogProc
BOOL Dialog_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
    // получение дескриптора окна редактируемого поля
    HWND hwndEdit = GetDlgItem(hwnd, IDC_EDIT1);
    // задавание максимальной длины текста в редактируемом поле
    Edit_LimitText(hwndEdit, _countof(szBuffer) - 1);
    // задавание серого (фонового) текста в редактируемом поле
    Edit_SetCueBannerText(hwndEdit, L"Название новой записи");
    return TRUE;
} // Dialog_OnInitDialog
void Dialog_OnClose(HWND hwnd)
{
    if (hwnd == hDlg)
    {
        // удаление немодального диалогового окна
        DestroyWindow(hwnd);
    } // if
    else
    {
        // завершение работы модального диалогового окна
        EndDialog(hwnd, IDCLOSE);
    } // else
} // Dialog_OnClose
void Dialog_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    if (BN_CLICKED == codeNotify) // была нажата кнопка
    {
        switch (id)
        {
        case IDOK: // нажата кнопка "ОК"
        {
            // получение содержимого редактируемого поля
            int cch = GetDlgItemText(hwnd, IDC_EDIT1, szBuffer, _countof(szBuffer));
            if (0 == cch) // в редактируемого поле нет текста
            {
                // получение дескриптора окна редактируемого поля
                HWND hwndEdit = GetDlgItem(hwnd, IDC_EDIT1);
                EDITBALLOONTIP ebt = { sizeof(EDITBALLOONTIP) };
                ebt.pszTitle = L"SampleWin32";
                ebt.pszText = L"Укажите название новой записи";
                ebt.ttiIcon = TTI_WARNING;
                Edit_ShowBalloonTip(hwndEdit, &ebt);
            } // if
            else if (hwnd == hDlg)
            {
                // очистка редактируемого поля
                SetDlgItemText(hwnd, IDC_EDIT1, TEXT(""));
                // отправка окну-владельцу сообщение о том, что нужно добавить запись
                SendMessage(GetParent(hwnd), WM_ADDITEM, 0, 0);
            } // if
            else
            {
                // завершение работы модального диалогового окна
                EndDialog(hwnd, IDOK);
            } // else
        } // if
        break;
        case IDCANCEL: // нажата кнопка "Отмена"
            if (hwnd == hDlg)
            {
                // уничтожение немодального диалогового окна
                DestroyWindow(hwnd);
            } // if
            else
            {
                // завершение работы модального диалогового окна
                EndDialog(hwnd, IDCANCEL);
            } // else
            break;
        } // switch
    } // if
} // Dialog_OnCommand
 
HTREEITEM InsTreeItem(HTREEITEM hParent, LPCWSTR szText, HTREEITEM hAfter, int iImage, int iSelectedImage)
{
    TCHAR buf[261];
    _tcsncpy_s(buf, szText, 261);
    TV_INSERTSTRUCT tvins;
    HTREEITEM hItem;
    memset(&tvins, 0, sizeof(tvins));
    tvins.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM;
    tvins.item.pszText = buf;
    tvins.item.cchTextMax = lstrlen(szText);
    tvins.item.iImage = iImage;
    tvins.item.iSelectedImage = iSelectedImage;
    tvins.hInsertAfter = hAfter;
    tvins.hParent = hParent;
    hItem = TreeView_InsertItem(hwndTree, &tvins);
    return hItem;
}
0
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,860
05.05.2019, 10:57  [ТС]
L0M, Причем у меня по непонятным причинам дебаг запускается а релиз - нет.
0
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
05.05.2019, 16:41
Цитата Сообщение от xamelione25 Посмотреть сообщение
Цитата Сообщение от L0M
нет ваших ресурсов:
...
... фэйлится.
Не сильно понял смысла написанного.
Здесь
C++
1
2
3
4
5
            UINT_PTR nDlgResult = DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), hwnd, DialogProc);
            if (IDOK == nDlgResult)
            {
                // ...
            }
создаётся диалоговое окно из ресурса. У меня нет файла ресурсов в котором описан этот диалог. Поэтому вызов всегда возвращает ошибку.

Цитата Сообщение от xamelione25 Посмотреть сообщение
У меня по заданию должен быть WM_TIMER. Он просто после включения отщелкивает одну секунду и все и останавливается ... и не обращает внимание ...
А что у вас в оконной процедуре MyWindowProc написано по поводу обработки WM_TIMER? Вот это?
C++
1
2
3
    case WM_TIMER: SetDlgItemText(hwnd, IDC_STATIC11, TEXT("Нажатие ЛКМ"));
        SetDlgItemText(hwnd, IDC_STATIC12, TEXT("Отпускание ЛКМ"));
        return 0;
И как это, по-вашему, должно двигать прогресс бар и пр.??
Цитата Сообщение от xamelione25 Посмотреть сообщение
И так каждое включение отщелкивает и стопорится.
Ничего у вас не "отщёлкивает". Видимые изменения прогресс бара происходят здесь:
C++
1
2
3
4
5
        case IDC_BUTTON_MODAL3:
            SendMessage(hwndPB, PBM_SETSTEP, (WPARAM)1, 0);
            SendMessage(hwndPB, PBM_STEPIT, 0, 0);              // <<<<<<<<<
            UINT_PTR timeID;
            timeID = SetTimer(hwnd, TIMER, 1000, NULL);
ещё ДО запуска таймера. Хотя на самом деле, здесь, видимо, должен быть только сброс прогресс бара на 0, а "шагать" он должен из обработчика WM_TIMER.
Цитата Сообщение от xamelione25 Посмотреть сообщение
Причем таймер даже как-то не пропорционально длине отведенного ему поля отщелкивает значение зелеными шагами в поле. Даже если я ему напишу 2сек он мне все-равно делает мелкие шаги.
Устанавливайте нужный диапазон для прогресс бара непосредственно перед запуском таймера вместе с размером шага.
C++
1
SendMessage(hwndPB, PBM_SETRANGE, 0, (LPARAM)MAKELONG(0, 10));
И убивание таймера должно быть не только по кнопке IDC_BUTTON_MODAL4, но и в обработчике WM_TIMER, когда истечёт запланированный вами интервал времени.

Добавлено через 3 минуты
Кстати, у вас есть загадочный фрагмент:
C++
1
2
3
4
5
6
7
8
        case IDC_BUTTON_MODAL4:
            KillTimer(hwnd, TIMER);
            t++;
            MessageBox(NULL, TEXT("Загрузка прервана"), TEXT("Таймер"), MB_OK | MB_ICONWARNING);
            break;
            // отображание немодального диалогового окна
            ShowWindow(hwndDlgCurrent, SW_SHOW);           // <<<<<<<<<<<
            break;
Отмеченная строка никогда выполнена не будет.
1
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,860
05.05.2019, 16:52  [ТС]
L0M, https://www.youtube.com/watch?v=d4TWw_7lnjs
У меня вопрос: а можно ли как-то если я все делаю сейчас в виде кода....а модальное диалоговое окно сделаю через конструктор??? Потому что я сделал все по аналогии как в видео ... но "добавить запись" все-равно не реагирует...
Или если я все делаю в коде, то и все остальное тоже в коде должно быть в нем прописано, а если конструкторе, то соответственно все окна через него должны создаваться??????

Добавлено через 5 минут
L0M, И объясни пожалуйста значение 6-13 строк в коде
0
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
05.05.2019, 17:22
Цитата Сообщение от xamelione25 Посмотреть сообщение
И объясни пожалуйста значение 6-13 строк в коде
RTFM How to Create Up-Down Controls
Там вообще много полезной информации по использованию контролсов из commctrl.

Цитата Сообщение от xamelione25 Посмотреть сообщение
а можно ли как-то если я все делаю сейчас в виде кода....а модальное диалоговое окно сделаю через конструктор???
Можно.
Только ресурсы, сделанные в конструкторе, подключать к проекту таки надо.
Ну и не запутаться в обработчиках событий: где и что вы руками прописываете, а где код частично генерируется конструктором.

А у вас этих ресурсов нет ни в этой теме, ни в архиве в теме Не работает DialogBox и WM_TIMER. Добавление и удаление записей через модальное диалоговое окно, которую вы зачем-то сделали в параллель к этой.

Кстати, если бы вы вычистили из архива лишнее (каталоги .vs, Debug), то объём уменьшился бы до 20-30КБ. Это на будущее.
0
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,860
05.05.2019, 17:33  [ТС]
L0M, А можешь попробовать у себя глянуть своими глазами, в своей VS запустив пошагово... где или чего не хватает для выскакивания диалоговых модальных окон добавления и удаления записей???
0
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
05.05.2019, 18:12
Цитата Сообщение от xamelione25 Посмотреть сообщение
А можешь попробовать у себя глянуть своими глазами
Да хоть обсмотрюсь, отсутствующие ресурсы от этого не появятся.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.05.2019, 18:12
Помогаю со студенческими работами здесь

Аргумент типа const char* не совместим с параметром типа LPCWSTR
Начал учить win32 по книге Финогенова, вставил код первой проги в VS10, пишет мне ошибку &quot;аргумент типа const char* не совместим с...

Аргумент типа const char* не совместим с параметром типа TCHAR*
Здравствуйте, появилась проблема с кодом, при наведении на: NtOpenProcess, NtClose, NtWriteVirtualMemory, NtProtectVirtualMemory...

Аргумент типа const char* несовместим с параметром типа LPCWSTR
Аргумент типа const char* несовместим с параметром типа LPCWSTR Используется Юникод, переключение на многобайтовую обработку не помогает,...

Ошибка: аргумент типа "const char *" несовместим с параметром типа "LPCWSTR"
Здравствуйте я хочу запустить музыку в консоли с++, но мне выдает ошибку: аргумент типа &quot;const char *&quot; несовместим с параметром...

Проблема с вызовом функции(аргумент типа const char* несовместим с параметром типа char*)
void cht(char* binary) { n = 0; double s = 0; fout &lt;&lt; &quot;Чтение файла: &quot; &lt;&lt; endl; fin.open(binary, ios::in | ios::binary); if...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru