共用方式為


訊息對應 (ATL)

訊息對應會將處理常式函式與特定訊息、命令或通知產生關聯。 藉由使用 ATL 的 訊息對應宏 ,您可以指定視窗的訊息對應。 、 CDialogImpl 中的 CWindowImpl 視窗程式,並將 CContainedWindowT 視窗的訊息導向至其訊息對應。

訊息處理常式函式 接受 類型的 BOOL& 其他引數。 這個引數會指出訊息是否已處理,而且預設會設定為 TRUE。 處理常式函式接著可以將 引數設定為 FALSE,表示它尚未處理訊息。 在此情況下,ATL 會繼續在訊息對應中進一步尋找處理常式函式。 藉由將此引數設定為 FALSE,您可以先執行某些動作來回應訊息,然後允許預設處理或其他處理常式函式完成處理訊息。

鏈結的訊息地圖

ATL 也可讓您鏈結訊息對應,將訊息處理導向至另一個類別中定義的訊息對應。 例如,您可以在個別類別中實作常見的訊息處理,為所有鏈結至該類別的視窗提供統一行為。 您可以鏈結至基類或類別的資料成員。

ATL 也支援動態鏈結,可讓您在執行時間鏈結至另一個物件的訊息對應。 若要實作動態鏈結,您必須從 CDynamicChain 衍生類別。 然後在訊息對應中宣告 CHAIN_MSG_MAP_DYNAMIC 宏。 CHAIN_MSG_MAP_DYNAMIC需要唯一的數位,以識別您要鏈結的物件和訊息對應。 您必須透過呼叫 CDynamicChain::SetChainEntry 來定義這個唯一值。

您可以鏈結至宣告訊息對應的任何類別,前提是類別衍生自 CMessageMap CMessageMap 可讓物件公開其訊息對應至其他物件。 請注意, CWindowImpl 已經衍生自 CMessageMap

替代訊息地圖

最後,ATL 支援使用 ALT_MSG_MAP 宏宣告的 替代訊息對應。 每個替代訊息對應都會以您傳遞給ALT_MSG_MAP的唯一數位來識別。 使用替代訊息對應,您可以在一個對應中處理多個視窗的訊息。 請注意,根據預設, CWindowImpl 不會使用替代訊息對應。 若要新增此支援,請覆寫 WindowProc 衍生類別中的 CWindowImpl 方法,並使用訊息對應識別碼呼叫 ProcessWindowMessage

另請參閱

實作視窗