共用方式為


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);

的訊息對應集合 bHandled 在 CommandHandler 之前呼叫。 如果 CommandHandler 不完全處理訊息,應該將 bHandled 至 表示訊息需要進一步處理。

注意事項注意事項

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 巨集