共用方式為


衍生訊息對應

在訊息處理期間,檢查類別本身的訊息對應不是訊息對應劇本結尾。 會產生類別,則為 CMyView (衍生自 CView) 沒有訊息的符合項目?

請記住, CView,CMyView基底類別, 而後者又衍生自CWnd。 以 CMyView CViewCWnd。 這些類別都有自己的訊息對應。 這個圖形檢視階層架構,顯示類別的階層關聯性,但請記住, CMyView 物件會有三個類別特性的單一物件。

檢視階層架構

檢視的階層架構

因此,如果訊息在類別 CMyView 訊息對應無法符合,架構也搜尋其直接基底類別的訊息對應。 在訊息對應的開始 BEGIN_MESSAGE_MAP 巨集指定兩個類別名稱做為其引數:

BEGIN_MESSAGE_MAP(CMyView, CFormView)

第一個引數命名訊息對應所屬的類別。 第二個引數提供連接直接基底類別 (例如 CView ),因此架構也可以搜尋其訊息對應。

在基底類別所提供的訊息處理常式由衍生類別繼承。 這非常類似於一般虛擬成員函式,而不需要讓所有處理常式虛擬成員函式。

如果處理常式在找不到任何基底類別訊息對應,預設處理訊息執行。 如果訊息是命令,架構會路由到下一個命令目標。 如果是標準 Windows 訊息,訊息傳遞至適當的預設視窗程序。

若要加速訊息對應符合,架構會快取在可能最符合的,它再次收到相同的訊息。 這個的結果是相當有效率地處理未處理訊息的架構。 訊息對應比使用虛擬函式的實作更為空間有效。

請參閱

概念

架構如何搜尋訊息對應