共用方式為


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

當 CMyExtWindowWM_PAINT 物件收到訊息時,訊息會指向實際處理 CMyExtWindow::OnPaint 。 如果 OnPaint 表示訊息需要進一步處理,訊息會被導向至 CMyBaseWindow預設的訊息對應。

除了預設的訊息對應之外,您還可以定義與 ALT_MSG_MAP的替代的訊息對應。 從 BEGIN_MSG_MAP永遠啟動訊息對應。 您可以宣告後續替代的訊息對應。 下列範例會顯示預設的訊息對應 (Message 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 巨集