COMMAND_HANDLER

定义消息映射中的项。

COMMAND_HANDLER( id, code, func )

参数

  • id
    [in]菜单项、控件或快捷键的标识符。

  • code
    [in]通知代码。

  • func
    [in]消息处理函数的名称。

备注

COMMAND_HANDLER 映射到 WM_COMMAND 消息到指定的处理程序函数,根据通知代码和控件标识符。 例如:

class ATL_NO_VTABLE CPolyProp :
   public CComObjectRootEx<CComSingleThreadModel>,
   public CComCoClass<CPolyProp, &CLSID_PolyProp>,
   public IPropertyPageImpl<CPolyProp>,
   public CDialogImpl<CPolyProp>
{
public:
BEGIN_COM_MAP(CPolyProp)
   COM_INTERFACE_ENTRY(IPropertyPage)
END_COM_MAP()

BEGIN_MSG_MAP(CPolyProp)
   COMMAND_HANDLER(IDC_SIDES, EN_CHANGE, OnEnChangeSides)
   CHAIN_MSG_MAP(IPropertyPageImpl<CPolyProp>)
END_MSG_MAP()

   // When a CPolyProp object receives a WM_COMMAND message identified 
   // by IDC_SIDES and EN_CHANGE, the message is directed to 
   // CPolyProp::OnEnChangeSides for the actual processing.
   LRESULT OnEnChangeSides(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, 
      BOOL& /*bHandled*/);

必须定义在 COMMAND_HANDLER 宏指定的所有函数:

LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);

在 CommandHandler 调用之前,消息映射设置 bHandled 到 TRUE。 如果 CommandHandler 不完全处理消息,则应设置 bHandled 到 FALSE 指示消息需要进一步处理。

备注

BEGIN_MSG_MAP始终启动消息映射。您可以声明与 ALT_MSG_MAP的后续替换消息映射。END_MSG_MAP 宏指示消息映射的结尾。每个消息映射必须正好包含 BEGIN_MSG_MAPEND_MSG_MAP一个实例。

除了 COMMAND_HANDLER外,还可以使用 MESSAGE_HANDLER 映射 WM_COMMAND 消息不考虑标识符或代码。 在这种情况下,MESSAGE_HANDLER(WM_COMMAND, OnHandlerFunction) 将处理所有 WM_COMMAND 消息。OnHandlerFunction。

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

要求

Header: atlwin.h

请参见

参考

COMMAND_ID_HANDLER

COMMAND_CODE_HANDLER

COMMAND_RANGE_HANDLER

NOTIFY_HANDLER

其他资源

消息映射宏(ATL)

ATL 宏