Загальні відомості про обробку повідомлень
З кожним вікном в графічній програмі позв'язана функція, яку назівають процедурою вікна. Коли відбувається деяка подія, операційна система викликає цю функцію, передаючи їй ідентифікатор події, що відбулася, і будь-які дані для його обробки. Подібний процес називається передачею повідомленя вікну. Процедура вікна за допомогою бібліотеки MFC створюється автоматично. Процедури вікон виконують мінімальну стандартну обробку переданного повідомлення. Якщо необхідна власна обробка повідомлення, то створюється функція обробки повідомлення, що є членом класу управління вікном. Для визначення обробника повідомлення можна скористатися ClassWizard. Наприклад, якщо покажчик знаходиться усередині вікна уявлення, то при натисненні лівої кнопки миші передається ідентифікатор wm_lbuttondown. Щоб передбачити власну обробку цього повідомлення, використовуйте майстер ClassWizard для створення функції класу уявлення. Командні повідомлення. MFC забезпечує спеціальну обробку повідомлень, що генеруються об'єктами призначеного для користувача інтерфейсу, стандартними елементами, підтримуваними бібліотекою MFC: меню, комбінації клавіш, кнопки панелей інструментів, рядка стану, елементи управління діалогових вікон. Повідомлення, що генеруються об'єктами призначеного для користувача інтерфейсу, називають командними повідомленнями. Кожного разу, коли користувач вибирає об'єкт інтерфейсу або коли один з цих об'єктів необхідно відновити, об'єкт передає командне повідомлення головному вікну. Проте бібліотека MFC відразу направляє повідомлення об'єкту вікна уявлення. Якщо він не має потрібного обробника, бібліотека MFC направляє повідомлення об'єкту документа.
Якщо ж об'єкт документа не містить обробник, бібліотека MFC направляє повідомлення об'єкту головного вікна програми. Якщо головне вікно також не має обробника, повідомлення прямує об'єкту додатку. Нарешті, якщо об'єкт додатку не забезпечує обробку, те повідомлення обробляється стандартним чином. Таким чином, бібліотека MFC розширює основний механізм повідомлень, щоб командні повідомлення оброблялися не тільки об'єктами, що управляють вікнами, але і будь-якими іншими об'єктами додатку. Кожний з них належить класу, прямо або побічно породженому від класу CCmdTarget, що реалізовує механізм передачі повідомлень. Важливою особливістю такого механізму є те, що програма може обробляти потрібне повідомлення усередині найбільш відповідного для цього класу. Наприклад, в програмі, створеній майстром AppWizard, команда Exit в меню File обробляється класом додатку, оскільки ця команда впливає на додаток в цілому. З другого боку, команда Save в меню File обробляється класом документа, оскільки цей клас відповідає за зберігання і запис даних документа. Карти повідомлень Використовування карти повідомлень лежить в основі підходу, який реалізується в MFC для програмування Windows-додатків. Суть його полягає в тому, що від розробника вимагається тільки написати функції обробки повідомлень і включити в свій клас карту повідомлень, яка фактично визначає оброблювані повідомлення. Карта повідомлень формується автоматично при створенні додатку майстром. Згодом, при необхідності, її можна відредагувати уручну. Для цього необхідно знати призначення основних макросів карти повідомлень.
Читайте также: Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|