|
||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
Віконна процедура Тепер розглянемо, як влаштована віконна процедура wndProc. Її ім'я вже двічі з'являлося в тексті програми. Спочатку був оголошений її прототип, потім воно було привласнене одному з полів структури типа WNDCLASSEX. Поле має типа покажчика на функцію з особливим прототипом віконної функції. Тут корисно пригадати, що ім'я функції трактуючи компілятором C++ як її адреса. Віконна процедура повинна «просіювати» всі посилані нею повідомлення і обробляти ті з них, які були вибрані програмістом для забезпечення бажаної функціональності. Типовою структурою віконної процедури є switch-блок, кожна гілка якого містить обробку одного повідомлення. У першому наближенні наша віконна процедура реагує лише на три повідомлення:
Повідомлення WM_DESTROY (знищити вікно) посилається системою вже після того, як вікно зникло з екрану. Ми реагуємо на нього викликом функції PostQuitMessage, яка вказує системі, що потік додатка вимагає свого завершення, шляхом посилки повідомлення WM_QUIT. Його параметром є код завершення, який ми вказуємо при виклику PostQuitMessage. Примітка
Якщо
віконна процедура не обробляє яке-небудь повідомлення, то управління передається в
гілку default. Ви бачите, що в цій гілці ми викликаємо функцію DefWindowProc,
яка носить назву віконної процедури за умовчанням. Ця функція гарантує,
що всі повідомлення будуть оброблені, тобто, видалені з черги. Повертане значення
залежить від посланого повідомлення. Ви, звичайно, звернули увагу на велику кількість нових типів даних, які використовуються в додатках Win32. Багато хто з них має префікс Н, який є скороченням слова Handle, - дескриптор, описувач. Описувачі різних типів (HWND, HPEN, HBITMAP і т. д.) є посередниками, які допомагають знайти потрібну структуру даних на віртуальному світі Windows. Об'єкти Windows або її ресурси, такі як вікна, файли, потоки, пір'я, кисті, області, представлені в системі структурами мови З, і адреси цих структур можуть змінюватися. В разі браку реальної пам'яті Windows вивантажує з пам'яті непотрібні в даний момент часу об'єкти і завантажує на їх місце об'єкти, потрібні додатком. У системної області оперативної пам'яті Windows підтримує таблицю, в якій зберігаються фізичні адреси об'єктів. Для пошуку об'єкту і управління їм спочатку слід отримати біля системи його описувач (місце в таблиці, індекс). Поважно мати на увазі, що фізична адреса об'єкту - поняття для Windows, а не для програміста. Описувач типа HANDLE можна уподібнити номеру мобільного телефону, за допомогою якого ви відшукуєте об'єкт, що переміщається на віртуальному світі Windows.
рекламодавці: / LF KS Рекомендуем дёшево прооперировать вросший ноготь профессиональным врачём |
|
|||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||