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

    На этом шаге мы рассмотрим создание карт сообщений для обработки различных сообщений.

    Карты сообщений поддерживают все классы, производные от CCmdTarget. Классы, генерируемые мастером AppWizard, создаются вместе с простейшей картой сообщений. С помощью мастера ClassWizard можно добавлять новые классы, содержащие карту сообщений, и манипулировать записями таких карт уже существующих классов.

Создание обработчиков сообщений средствами мастера ClassWizard

    Здесь мы рассмотрим вопросы, связанные с добавлением обработчиков сообщений Windows и командных сообщений с помощью мастера ClassWizard. Изучив сгенерированный код, Вы поймете, как в MFC-приложениях создаются карты сообщений.

    Добавим обработчик, который будет отображать информационное окно при щелчке в клиентской области окна приложения МуАрр. Клиентской областью называют часть экрана, ограниченную рамкой окна. Все данные приложения обычно отображаются в ней.

Код карты сообщений

    При добавлении функции-обработчика мастер ClassWizard выполняет следующие действия:

    Посмотрим, что представляют собой тексты объявления функции CMyAppApp::OnEditPaste() и ее карты сообщений.

    Как видите, ClassWizard добавил в карту сообщений макрос ON_COMMAND. Его структура очень проста. Первый параметр -это идентификатор сообщения. Второй параметр - название функции-обработчика.

    Объявление функции OnLButtonDown(), обрабатывающей сообщение WM_ LBUTTONDOWN, выглядит следующим образом (оно находится в файле MyAppView.h):

	afx_msg void OnLButtonDown(UINT nFlags, CPoint point);

    Соответствующая ей запись в карте сообщений в файле AppView.cpp такова:

	ON_WM_LBUTTONDOWN()
Текст измененного на этом шаге приложения можно взять здесь (41,3 Кб).

    Так как сообщения Windows обрабатываются перегруженными виртуальными функциями базового класса CWnd, нет необходимости передавать название обработчика в качестве параметра. Каркас MFC-приложения автоматически связывает такие сообщения с соответствующей виртуальной функцией. Как правило, сообщения Windows имеют дополнительную информацию, передаваемую в виде параметров. Все эти данные передаются в обработчик каркасом приложения. Внимательно посмотрите на объявление функции CMyApp::OnLButtonDown. Наверняка Вы заметили, что она принимает два параметра (производные от параметров сообщения WM_LBUTTONDOWN), один из которых содержит координаты текущего положения указателя мыши, а другой - флаг, который "отвечает" за нажатие "виртуальных" клавиш (например CTRL или SHIFT).

    На следующем шаге мы рассмотрим макросы, которые можно использовать в картах сообщений.




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