стpуктуpа TMsg, Wnd: Вікно призначення повідомлень або 0 для всіх вікон у прикладні задачі. MsgFilterMin: Нуль у разі відсутності фильтpация або wm_KeyFirst тільки для клавіатури або wm_MouseFirst тільки для миші. MsgFilterMiax Нуль у разі відсутності фильтpация або wm_KeyLast тільки для клавіатури або wm_MouseLast тільки для миші. Також в основному циклі програми міститься функція TranslateMessage для перекладу комбінацій повідомлень і перенаправлення їх у чергу повідомлень (величезний switch) і функція DispatchMessage для здійснення всіх взаємозв'язків між двома основними функціями програми. Основна функція програми повинна повертати значення msg.wParam, тобто молодше слово Windows-повідомлень. Потім йде функція WndProc. Вона за допомогою функції зворотного виклику CALLBACK взаємопов'язана з циклом обробки повідомлень і має структуру LRESULT. Основним вмістом цієї функції є чергу повідомлень. Мітки case можна писати в будь-якому порядку. Основними мітками є мітки пов'язані із закриттям вікна WM_CLOSE і WM_DESTROY. У мітці default jgbcsdftncz будь-яке повідомлення, що не обробляє віконна процедура. Воно відправляється на обробку в функцію DefWindowProc.
Далі створюється меню верхнього рівня, тобто основне меню програми. Для найпростішого створення цього меню в першу чергу потрібно оголосити константи в якості глобальних констант, а також всі глобальні змінні типу HMENU. Потім функцію CreatePopupMenu необхідно присвоїти змінним самого меню, наприклад hFileMenu. Далі в самій черги повідомлень прописується самі елементи меню за допомогою функції AppendMenu () через розгалуження if. Також потрібно приєднати меню до головної панелі управління і до самого вікна теж за допомогою функції AppendMenu (). Клас UNDO призначений для пункту меню Скасування, він прописується в якості глобальної змінної. Цей клас називається стеком.
Після створення меню верхнього рівня створюється статусна панель. Для її створення оголошуються змінні двох типів HWND і UINT і правильного закріплення, тобто щоб вона могла міняти розміри залежно від зміни розмірів вікна як вручну, так і автоматично. Так само для створення цієї панелі потрібно підключити бібліотеку commctrl.h і написати функцію hStatusWindow типу HWND. Потім змінної hStatusWindow присвоюється функція з назвою CreateStatusWindow створює цю панель і конструкція if:
hStatusWindow=CreateStatusWindow (WS_CHILD | WS_VISIBLE, Блокнот Ярослава , hWnd, wld); (! hStatusWindow)
{(NULL, Can not create window , Error , MB_OK);
return 0;
}
На наступному етапі створюються акселератори, тобто гарячі клавіші. Для цього потрібно створити змінні типу HACCEL і ACCEL, а також у циклі обробки прописати свого роду конструкцію, тобто if (! TranslateAccelerator (hWnd, hAccel, amp; Msg)), а також всі функції для роботи з акселераторами.
Для більш повного опису функції роботи з акселераторами використовується наступна структура:
TBBUTTON buttons [3]=
{
{0, IDP_Save, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, NULL},
{1, IDP_Open, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, NULL},
{2, IDP_Print, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, NULL}
};=CreateToolbarEx (hWnd, WS_CHILD | WS_VISIBLE | TBSTYLE_TOOLTIPS,
, 3, hInstance, IDB_BITMAP1, buttons, 3, 22, 22, 20, 20, sizeof (TBBUTTON));
Далі потрібно до меню верхнього рівня приєднати меню другого рівня. Для цього потрібно панель управління для даного меню промальовувати в програмі PAINT і створити файл з назвою toolbar.bmp.
Вона приєднується за допомогою спеціального файлу ресурсів resource.h raquo ;, структури MAKEINRESOURE та інших функцій. Також вона описується наступною структурою:
icx;
icx.dwICC=ICC_BAR_CLASSES;
icx.dwSize=sizeof (icx); ( amp; icx); (! toolbar2)
{(NULL, Can not create toolbar window , Error , MB_OK);
return 0;
}
Найважливішим етапом у проектуванні програми є створення основного елемента управління, тобто самого текстового поля. Для цього необхідно підключити бібліотеку richedit.h а також підключити спеціальну lib-бібліотеку. У шостій студії вона називається Msftedit.dll. Також потрібна константа з назвою _RICHEDIT_VER 0x0200. Вона оголошується через ключове слово #define. Вікно для редагування вважається дочірнім вікном для програми і створюється за допомогою функції, але з назвою CreateWindowExW і присвоюється змінної edit.
edit=CreateWi...