BEGIN_MSG_MAP

标记默认的消息映射的开头。

BEGIN_MSG_MAP( theClass )

参数

  • theClass
    [in]包含消息映射的选件类的名称。

备注

CWindowImpl::WindowProc 使用默认的消息映射处理发送到窗口。消息映射处理消息的适当处理程序函数或另一消息映射。

下面的宏映射到消息给处理程序函数。在 theClass必须定义此功能。

说明

MESSAGE_HANDLER

映射到Windows消息处理程序功能。

MESSAGE_RANGE_HANDLER

映射Windows消息的一个连续范围给处理程序函数。

COMMAND_HANDLER

映射到 WM_COMMAND 消息给处理程序函数,根据通知代码和菜单项、控件或快捷键的标识符。

COMMAND_ID_HANDLER

映射到 WM_COMMAND 消息给处理程序函数,具体取决于菜单项、控件或快捷键的标识符。

COMMAND_CODE_HANDLER

映射到 WM_COMMAND 消息给处理程序函数,根据通知代码。

COMMAND_RANGE_HANDLER

映射 WM_COMMAND 消息的一个连续范围给处理程序函数,具体取决于菜单项、控件或快捷键的标识符。

NOTIFY_HANDLER

映射到 WM_NOTIFY 消息给处理程序函数,根据通知代码和控件标识符。

NOTIFY_ID_HANDLER

映射到 WM_NOTIFY 消息给处理程序函数,根据控件标识符。

NOTIFY_CODE_HANDLER

映射到 WM_NOTIFY 消息给处理程序函数,根据通知代码。

NOTIFY_RANGE_HANDLER

映射 WM_NOTIFY 消息的一个连续范围给处理程序函数,根据控件标识符。

下面的宏处理消息至其他消息映射。此过程称为“绑定”。

说明

CHAIN_MSG_MAP

对默认消息的链接到基类映射。

CHAIN_MSG_MAP_MEMBER

对默认消息的链接到选件类的数据成员映射。

CHAIN_MSG_MAP_ALT

对备用消息的链接到基类映射。

CHAIN_MSG_MAP_ALT_MEMBER

对备用消息的链接到选件类的数据成员映射。

CHAIN_MSG_MAP_DYNAMIC

对默认消息的链接到另一选件类映射在运行时。

下面的宏处理“从父窗口的反射”。例如,控件通常发送通知消息到其处理的父窗口,但是,父窗口可能反映出消息返回给控件。

说明

REFLECTED_COMMAND_HANDLER

映射反射的 WM_COMMAND 消息给处理程序函数,根据通知代码和菜单项、控件或快捷键的标识符。

REFLECTED_COMMAND_ID_HANDLER

映射反射的 WM_COMMAND 消息给处理程序函数,具体取决于菜单项、控件或快捷键的标识符。

REFLECTED_COMMAND_CODE_HANDLER

映射反射的 WM_COMMAND 消息给处理程序函数,根据通知代码。

REFLECTED_COMMAND_RANGE_HANDLER

映射反射的 WM_COMMAND 消息给处理程序函数,根据控件标识符的一个连续范围。

REFLECTED_COMMAND_RANGE_CODE_HANDLER

映射反射的 WM_COMMAND 消息给处理程序函数,根据通知代码和控件标识符的一个连续范围。

REFLECTED_NOTIFY_HANDLER

映射反射的 WM_NOTIFY 消息给处理程序函数,根据通知代码和控件标识符。

REFLECTED_NOTIFY_ID_HANDLER

映射反射的 WM_NOTIFY 消息给处理程序函数,根据控件标识符。

REFLECTED_NOTIFY_CODE_HANDLER

映射反射的 WM_NOTIFY 消息给处理程序函数,根据通知代码。

REFLECTED_NOTIFY_RANGE_HANDLER

映射反射的 WM_NOTIFY 消息给处理程序函数,根据控件标识符的一个连续范围。

REFLECTED_NOTIFY_RANGE_CODE_HANDLER

映射反射的 WM_NOTIFY 消息给处理程序函数,根据通知代码和控件标识符的一个连续范围。

示例

class CMyExtWindow : public CMyBaseWindow
{
public:
   BEGIN_MSG_MAP(CMyExtWindow)
      MESSAGE_HANDLER(WM_PAINT, OnPaint)
      MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
      CHAIN_MSG_MAP(CMyBaseWindow)
   END_MSG_MAP()

   LRESULT OnPaint(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, 
      BOOL& /*bHandled*/)
   {
      return 0;   
   }

   LRESULT OnSetFocus(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, 
      BOOL& /*bHandled*/) 
   {
      return 0;   
   }
};

当 CMyExtWindow 对象接收 WM_PAINT 消息时,消息处理对实际处理的 CMyExtWindow::OnPaint。如果 OnPaint 指示消息需要进一步处理消息,然后将处理到 CMyBaseWindow的默认消息映射。

除了默认消息映射,可以定义与 ALT_MSG_MAP的替换消息映射。从 BEGIN_MSG_MAP始终启动消息映射。您可以声明后面的替换消息映射。下面的示例演示默认消息映射和一个替换消息映射,每个包含的一个处理程序功能:

BEGIN_MSG_MAP(CMyOneAltClass)
   MESSAGE_HANDLER(WM_PAINT, OnPaint)
ALT_MSG_MAP(1)
   MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
END_MSG_MAP()

下一个示例演示两个替换消息映射。默认的消息映射为空。

BEGIN_MSG_MAP(CMyClass)
ALT_MSG_MAP(1)
   MESSAGE_HANDLER(WM_PAINT, OnPaint)
   MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
ALT_MSG_MAP(2)
   MESSAGE_HANDLER(WM_CREATE, OnCreate)
END_MSG_MAP()

END_MSG_MAP 宏指示消息映射的结尾。请注意始终正好有 BEGIN_MSG_MAPEND_MSG_MAP一个实例。

有关使用的更多信息消息在ATL映射,请参见 消息映射

要求

Header: atlwin.h

请参见

参考

CMessageMap选件类

CDynamicChain选件类

其他资源

消息映射宏(ATL)

ATL 宏