Урок №3 - Исследование  структуры приложения MFC   

     Таблица сообщений
     В файлах HW.h и HW.cpp мы встретились с макросами DECLARE_MESSAGE_MAP, BEGIN_MESSAGE_MAP и END_MESSAGE_MAP. Что представляют собой эти макросы и как они связываются с основным циклом сообщений приложения в функции Run объекта приложения?
     Функция Run отправляет сообщения их окнам назначения, как и любое приложение делает это в своем основном цикле. В действительности он вызывает для этой цели ту же функцию, ::DispatchMessage. Таким образом, первым получателем сообщения всегда является окно.
     Функция обработки сообщений в объекте, способном получать сообщения обычно передает или маршрутизирует сообщения в следующем порядке:      Например, командное сообщение, которое в конце концов обрабатывается классом документа приложения, может пройти путь через его окно-рамку и окно просмотра перед тем, как его действительно достигнет обработчик сообщения в классе документа.
     Итак, макрос DECLARE_MESSAGE_MAP объявляет массив входов таблицы сообщений частью объявления класса. Макросы BEGIN_MESSAGE_MAP и END_MESSAGE_MAP заключают между собой последовательность инициализаций этого массива, представляющие собой отдельные сообщения, на которые должен отвечать класс.
     Посмотрите на входы таблицы сообщений в HW.cpp. Эти входы по умолчанию связывают несколько стандартных команд из меню File с их реализацией по умолчанию, являющейся частью класса CWinApp. Макрос ON_COMMAND - один из нескольких, упрощающих создание входа таблицы сообщений. Обычно эти входы создаются мастером классов ClassWizard автоматически; однако иногда необходимо добавить их вручную (например, при обработке специальных сообщений приложения).

назад вперед

Hosted by uCoz