Программирование графики с использованием Direct3D

         

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


Вспомните, что библиотека MFC разработана для изоляции программиста от некоторых запутанных деталей архитектуры приложений Windows. MFC изолирует вас от обработчика событий, предоставляя свой собственный, который вызывает создаваемые вами индивидуальные функции обработки отдельных событий. Это выполняется с помощью карт сообщений. Карта сообщений — это макрос, который сообщает MFC, что вы заинтересованны в обработке определенного события. Все что вам необходимо — это включить карту сообщений и обработчики для каждого события в вашу программу, а MFC позаботится об остальном. Карта сообщений выглядит следующим образом:

BEGIN_MESSAGE_MAP(OurClass, BaseClass) ON_WM_PAINT() ON_WM_SIZE() ON_WM_LBUTTONDOWN() END_MESSAGE_MAP()

Эта карта сообщений указывает MFC, что у нас есть класс, с именем OurClass являющийся производным от класса BaseClass и обрабатывающий три сообщения: WM_PAINT, WM_SIZE и WM_LBUTTONDOWN (это стандартные сообщения Windows).

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

void OurClass::OnPaint() { // Здесь располагается функция обработки // сообщения WM_PAINT. }

Все функции обработки событий должны быть объявлены внутри класса. Для рассматриваемых в примере трех функций описание выглядит следующим образом:

class OurClass : public BaseClass { protected: afx_msg void OnPaint(); afx_msg void OnSize(UINT type, int cx, int cy); afx_msg void OnLButtonDown(UINT state, CPoint point); DECLARE_MESSAGE_MAP() };

Макроопределение afx_msg определяет описываемую функцию как обработчик события, а макроопределение DECLARE_MESSAGE_MAP указывает MFC, что данный класс использует карту сообщений.




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