Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
В-ДПОВ-Д- НА КОНТРОЛЬН- ПИТАННЯ ДО КОНТРОЛЬНОп...doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
250.88 Кб
Скачать
  1. Карти повідомлень.

Windows взаимодействует с программой, посылая ей сообщения. Все приложения Windows должны организовать так называемый цикл сообщений (обычно внутри функции WinMain()). В этом цикле каждое необработанное сообщение должно быть извлечено из очереди сообщений данного приложения и передано назад в Windows, которая затем вызывает функцию окна программы с данным сообщением в качестве аргумента. В традиционных Windows-программах необходимо самостоятельно создавать и активизировать такой цикл. При использовании MFC это также выполняется автоматически. Однако важно помнить, что цикл сообщений все же существует. Он является неотъемлемой частью любого приложения Windows.

Тип повідомлення Опис

П овідомлення

Windows Ці повідомлення поСілаються операційною Сістемою. Вони інформують додаток про створення вікна, про його майбутнє знищенні, про події клавіатури і миші, про зміни Сістемних квітів і про всім іншому, що здатно вплинути на виконання програми. Ідентифікатори цих повідомлень звичайно починаються з префікса WM_. Повідомлення Windows як правило обробляються вікном, якому вони послані. Їм може бути і головне вікно додатка, і діалогове вікно

Командні

повідомлення Командні повідомлення генеруються у відповідь на дії користувача, наприклад на вибір пункту меню, щиглик кнопки панелі чи інструментів натискання «швидкої» клавіші. Коли відбувається одне з таких подій, додатку відправляється повідомлення WM_COMMAND з параметром, що залежить від команди. Дані повідомлення передаються каркасом об'єкту додатка. Така маршрутизація команд дозволяє додатку обробити повідомлення в найбільш придатному для цього класі

Командні

повідомлення Дані повідомлення генеруються каркасом додатка, відновлення . таким чином, вони притаманні тільки MFC. Вони користувальницького Сігналізують додатку про зміну стану інтерфейсу елементів інтерфейсу, таких, як пункти меню і кнопки панелей інструментів. Наприклад, перед відображенням меню додатку відправляється відповідне -повідомлення, що дає йому можливість змінити стан цього меню — зробити його доступним, недоступної чи позначеним

Створення карт повідомлень

MFC значно спрощує створення карт повідомлень. Їх підтримують усі клаСі, похідні від CCmdTarget. КлаСі, генерируємі майстром AppWizard, створюються разом з найпростішою картою повідомлень. За допомогою майстра ClassWizard можна додавати нові клаСі, що містять карту повідомлень, і маніпулювати записами таких карт вже існуючих класів. Користаючись цим майстром, Ви заощадите час і не допустите помилок.

Карта повідомлень є в будь-якого класу, що може обробляти повідомлення. А обробляти повідомлення можуть тільки клаСі породжені від CCmdTarget. Карта повідомлень складається з двох частин. Перша визначається в заголовку класу.

class CTestListDlg : public CDialog

{

......

DECLARE_MESSAGE_MAP()

};

І описується у файлі реалізації:

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

//{{AFX_MSG_MAP(CAboutDlg)

// No message handlers

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

Починається карта повідомлень з макросу BEGIN_MESSAGE_MAP, у якого вказується два параметри: ім'я класу й ім'я класу батька. Закінчується карта повідомлень макросом END_MESSAGE_MAP().

В основних випадках карту повідомлень формує Class Wizard на вкладці Message Map.

Усередині карти повідомлень використовуються наступні макроСі, але це далеко не повний список.

ON_COMMAND - визначає функцію, що буде обробляти повідомлення. ON_COMMAND_RANGE - визначає діапазон повідомлень, що буде обробляти одна функція. ON_CONTROL - визначає функцію обробки повідомлення від елемента керування. ON_CONTROL_RANGE - визначає функцію обробки повідомлень від групи елементів керування. ON_MESSAGE - визначає функцію обробки повідомлення користувача. ON_OLECMD - визначає функцію обробки повідомлення від OLE контейнера. ON_REGISTERED_MESSAGE - визначає функцію обробки зареєстрованого користувачем повідомлення. ON_UPDATE_COMMAND_UI - визначає функцію, що буде оброблятися у відповідь на повідомлення про відновлення користувальницького інтерфейсу. ON_UPDATE_COMMAND_UI_RANGE - визначає функцію, що буде оброблятися у відповідь на групу повідомлень про відновлення користувальницького інтерфейсу.