Схемы сообщений

Схема сообщений связывает функцию обработчика с конкретного сообщения, команды или уведомления. С помощью библиотеки 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 не использует альтернативные сообщение карты. Для добавления этой поддержки, переопределите метод WindowProc в вашем CWindowImpl-производного класса и вызвать ProcessWindowMessage с карты идентификатор сообщения.

Index