Основні типи віконних повідомлень

Віконна процедура

Основним отримувачем повідомлень є спеціальна віконна процедура, якій йдуть з черги повідомлень програми (точніше – з потоку програми). У цій процедурі повідомлення обробляються індивідуально:

 

LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

switch (message) {

case WM_DESTROY :

PostQuitMessage(0);

break;

default :

return DefWindowProc(hWnd, message, wParam, lParam);

}

return 0;

}

Ця функція явно обробляє тільки одне повідомлення WM_DESTROY, а решта передається віконній процедурі за замовчуванням DefWindowProc(). Вона обробляє усі повідомлення, що асоціюються з певним вікном.

Функція PostQuitMessage() – це найпростіший обробник повідомлень, що застосовуються при написанні програм. Обробник повідомлень – це функція, що відповідає тільки за обробку одного-єдиного повідомлення.

 

На даний час ОС Windows налічує більше ніж 900 стандартних повідомлень, але більшість з них використовуються досить рідко. Наприклад, одні характерні тільки для певного типу вікна, інші відіграють особливу роль при використанні певного типу інтерфейсу (SDI чи MDI). Треті проходять через цикл повідомлень, але ніколи не використовуються (внутрішні повідомлення Windows створені для її власної мети).

Всі імена повідомлень, що використовується при створення інтерфейсу користувача, визначені в файлі заголовків WINUSER.H наступним чином:

 

#define WM_COMMAND 0x0111

 

або

 

#define WM_PAINT 0x000F

 

Префікс WM_ вказує, що це “віконне повідомлення” (Windows Message). Ці символічні імена визначають числа, що служать ідентифікаторами повідомлень. Інші префікси вказують на відношення повідомлення до певного виду вікна (елементу керування), наприклад: EM_ (Edit Message) – елементу керування EDIT; BM_ (Button Message) – елементу керування BUTTON; та інше.

Окрім стандартних повідомлень в ОС передбачена можливість створення власних повідомлень розробником прикладного програмного забезпечення.

 


 

Лекція № 3: Бібліотека базових класів Microsoft (MFC)

 

План

1. Огляд бібліотеки базових класів Microsoft.

2. Ієрархія класів MFC.

3. Основні архітектури програм на основі MFC.

4. Макровизначення, глобальні функції та змінні.