Шаг 19.
Среда программирования Visual C++.
Обработка сообщений

    На этом шаге мы рассмотрим классификацию сообщений в MFC и введем понятие "карты сообщений".

    Основная задача разработчика программ для Windows - связь сообщений с обрабатывающими их функциями. В приложении, не использующем MFC, для этого нужна оконная процедура для каждого зарегистрированного оконного класса. Такая процедура обычно реализуется с помощью оператора switch, получающего идентификатор сообщения. В MFC-приложении сообщения обрабатывают функции-члены классов приложения, созданныx как Вами, так и мастером AppWizard. Чтобы связать сообщение с обработчиком, достаточно карты сообщений.

    Карта сообщений - это таблица, объявленная в теле класса, которая связывает системные сообщения с функциями-членами данного класса. Она состоит из записей, назначающих функцию-обработчик для каждого идентификатора сообщения. Карта поддерживает 4 типа сообщений:

Таблица 1. Типы сообщений в MFC
Тип сообщения Описание
Сообщения Windows Эти сообщения посылаются операционной системой. Они информируют приложение о создании окна, о его предстоящем уничтожении, о событиях клавиатуры и мыши, об изменениях системных цветов и обо всем остальном, что способно повлиять на выполнение программы. Идентификаторы этих сообщений обычно начинаются с префикса WM_. Сообщения Windows как правило обрабатываются окном, которому они посланы. Им может быть и главное окно приложения, и диалоговое окно
Командные сообщения Командные сообщения генерируются в ответ на действия пользователя, например на выбор пункта меню, щелчок кнопки панели инструментов или нажатие "быстрой" клавиши. Когда происходит одно из таких событий, приложению отправляется сообщение WM_COM MAND с параметром, зависящим от команды. Данные сообщения передаются каркасом объекту приложения. Такая маршрутизация команд позволяет приложению обработать сообщение в наиболее подходящем для этого классе
Командные сообщения обновления пользовательского интерфейса Данные сообщения генерируются каркасом приложения, таким образом, они присущи только MFC. Они сигнализируют приложению об изменении состояния элементов интерфейса, таких, как пункты меню и кнопки панелей инструментов. Например, перед отображением меню приложению отправляется соответствующее сообщение, что дает ему возможность изменить состояние этого меню - сделать его доступным, недоступным или помеченным
Уведомления от элементов управления Такие сообщения посылают родительскому окну элементы управления и другие дочерние окна. Они обычно представляют собой сообщения WM_COMMAND с параметрами уведомления. Например, поле ввода генерирует для своего родительского окна сообщение WM_COMMAND, содержащее код уведомления EN_CHANGE, когда пользователь предпринимает действия, которые могут изменить текст в этом поле

    Назначение карты сообщений аналогично таблице откликов, реализованной в библиотеке OWL.

    На следующем шаге мы рассмотрим создание карты ссобщений.




Предыдущий шаг Содержание Следующий шаг