Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT | страница 53



СообщениеМакрокомандаМетод обработчик
WM_CHARON_WM_CHAR()afx_msg void OnChar(UINT, UINT, UINT);
WM_CREATEON_WM_CREATE()afx_msg int OnCreate(LPCREATESTRUCT);
WM_HSCROLLON_WM_HSCROLL()afx_msg void OnHScroll(UINT, UINT, CWnd*);
WM_KEYDOWNON_WM_KEYDOWN()afx_msg void OnKeyDown(UINT, UINT, UINT);
WM_KEYUPON_WM_KEYUP()afx_msg void OnKeyUp(UINT, UINT, UINT);
WM_LBUTTONDOWNON_WM_LBUTTONDOWN()afx_msg void OnLButtonDown(UINT, CPoint);
WM_LBUTTONUPON_WM_LBUTTONUP()afx_msg void OnLButtonUp(UINT, CPoint);
WM_PAINTON_WM_PAINT()afx_msg void OnPaint();
WM_SIZEON_WM_SIZE()afx_msg void OnSize(UINT, int, int);
WM_TIMERON_WM_TIMER()afx_msg void OnTimer(UINT);
WM_VSCROLLON_WM_VSCROLL()afx_msg void OnVScroll(UINT, UINT, CWnd*);

Все методы-обработчики определены с ключевым словом afx_msg. Оно позволяет отличить эти методы от остальных методов класса. На этапе препроцессорной обработки ключевое слово afx_msg удаляется. Определение afx_msg вы можете найти в файле afxwin.h:

>#define afx_msg

Макрокоманды ON_WM_ не имеют параметров. Однако методы, которые вызываются для обработки соответствующих сообщений, имеют параметры, количество и назначение которых зависит от обрабатываемого сообщения.

Когда вы определяете обработчик стандартного сообщения Windows в своем классе, он будет использоваться вместо обработчика определенного в классе CWnd (или другом базовом классе). В любом случае вы можете вызвать метод обработчик базового класса из своего метода обработчика.

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

Макрокоманда ON_REGISTERED_MESSAGE обслуживает сообщения операционной системы Windows, зарегистрированные с помощью функции RegisterWindowMessage. Параметр nMessageVariable указывает идентификатор сообщения, для которого будет вызываться метод memberFxn.

>ON_REGISTERED_MESSAGE(nMessageVariable, memberFxn)

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

Макрокоманда ON_MESSAGE обрабатывает сообщения, определенные пользователем. Идентификатор сообщения (его имя) указывается параметром message. Метод, который вызывается для обработки сообщения, указывается параметром memberFxn.

>ON_MESSAGE(message, memberFxn)

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

Макрокоманды ON_COMMAND предназначены для обработки командных сообщений. Командные сообщения поступают от меню, кнопок панели управления и клавиш акселераторов. Характерной особенностью командных сообщений является то, что с ними связан идентификатор сообщения.

Макрокоманда ON_COMMAND имеет два параметра. Первый параметр соответствует идентификатору командного сообщения, а второй имени метода, предназначенного для обработки этого сообщения. Таблица сообщений должна содержать не больше одной макрокоманды для командного сообщения.