Карта повідомлення зв'язує функцію обробник з певного повідомлення, команда або повідомлення. За допомогою ATL, повідомлення, карта макроси, можна вказати повідомлення карти для вікна. Вікно процедур у CWindowImpl, CDialogImplі CContainedWindow прямі повідомлення у вікні свою карту повідомлення.
Повідомлення обробника функції прийняти додаткові аргументи типу BOOLamp; . Цей аргумент вказує, чи повідомлення була оброблена, і він встановлений на TRUE за замовчуванням. Функцію обробник можна потім задати F&ALSE вказує, що вона не обробляються повідомлення. У цьому випадку ATL буде продовжувати шукати обробника функція далі на карті повідомлення. Встановивши цей аргумент FALSE , ви можете спочатку виконати деякі дії у відповідь на повідомлення і потім дозволити обробки за промовчанням або іншу функцію обробник для завершення обробки повідомлення.
ATL також дозволяє ланцюг повідомлення карти, який направляє повідомлення обробки повідомлення карту, визначені в інший клас. Наприклад, можна реалізувати загальні повідомлення обробки в окремий клас, щоб забезпечити рівномірний поведінки для всіх вікон ланцюжка цього класу. Ви можете ланцюжок базового класу або членом даних вашого класу.
ATL також підтримує динамічний ланцюжка, який дозволяє ланцюг карту повідомлення іншого об'єкта під час виконання. Для реалізації динамічних ланцюжка, повинні отримати ваш клас з CDynamicChain. Потім оголосити ваша карта повідомлення, макрос CHAIN_MSG_MAP_DYNAMIC . CHAIN_MSG_MAP_DYNAMIC вимагає унікальний номер, що ідентифікує об'єкт і повідомлення карти, до якої ви ланцюжка. Ви повинні визначити це унікальні значення через заклик до CDynamicChain::SetChainEntry.
Ви можете ланцюжок до будь-якого класу, який оголошує мапі повідомлення умові, класу походить від CMessageMap. CMessageMap дозволяє об'єкта піддавати свої повідомлення карти до інших об'єктів. Зверніть увагу, що CWindowImpl вже випливає з CMessageMap.
Нарешті, ATL підтримує альтернативний повідомлення карти, з ALT_MSG_MAP макросів. Кожна карта альтернативний повідомлення позначається унікальний номер, який ви передати ALT_MSG_MAP. Використання альтернативного повідомлення карт, ви можете впоратися повідомлення декілька вікон в одну карту. Зверніть увагу, що за замовчуванням, CWindowImpl не використовувати альтернативні повідомлення карти. Щоб додати цю підтримку, змінити ваш CWindowImpl, метод WindowProc -класу, отриманих і називаємо ProcessWindowMessage з ідентифікатором повідомлення карта.