Microsoft Visual C++ и MFC. Программирование для Win95 и WinNT

         

Таблица сообщений


В библиотеке классов MFC для обработки сообщений используется специальный механизм, который получил название Message Map - таблица сообщений.

Таблица сообщений состоит из набора специальных макрокоманд, ограниченных макрокомандами BEGIN_MESSAGE_MAP и END_MESSAGE_MAP. Между ними расположены макрокоманды, отвечающие за обработку отдельных сообщений.

Макрокоманда BEGIN_MESSAGE_MAP представляет собой заголовок таблицы сообщений. Она имеет два параметра. Первый параметр содержит имя класса таблицы сообщений. Второй параметр указывает его базовый класс.

Если в таблице сообщений класса отсутствует обработчик для сообщения, оно передается для обработки базовому классу, указанному вторым параметром макрокоманды BEGIN_MESSAGE_MAP. Если таблица сообщений базового класса также не содержит обработчик этого сообщения, оно передается следующему базовому классу и т. д.

В том случае если ни один из базовых классов не может обработать сообщение, выполняется обработка по умолчанию, зависящая от типа сообщения.

  • Стандартные сообщения Windows обрабатываются функцией “default window procedure”
  • Командные сообщения передаются по цепочке следующему объекту, который может обработать командное сообщение. Более подробно мы расскажем об этой цепочке в главах “Однооконный интерфейс” и “Многооконный интерфейс”
  • В библиотеке MFC определены несколько макрокоманд, отвечающих за обработку сообщений. Их названия представлены в следующей таблице.

    Макрокоманда

    Устанавливает методы для обработки сообщений

    ON_WM_<name>

    Стандартных сообщений операционной системы Windows

    ON_REGISTERED_MESSAGE

    Зарегистрированные сообщения операционной системы Windows

    ON_MESSAGE

    Сообщений, определенных пользователем

    ON_COMMAND,

    ON_COMMAND_RANGE

    Командных сообщений

    ON_UPDATE_COMMAND_UI,

    ON_UPDATE_COMMAND_UI_RANGE

    Сообщений, предназначенных для обновления пользовательского интерфейса

    ON_<name>,

    ON_CONTROL_RANGE

    Сообщений от органов управления

    Перечисленные в таблице макрокоманды имеют различное количество параметров в зависимости от типа обрабатываемых ими сообщений.



    Содержание раздела