mfc 自身會維護乙個靜態訊息路由表,這個路由表在所有視窗生成之前產生(程式初始化過程中產生),生成過程如下:
(1)檢索mfc程式中的使用者建立的類;
(2)檢索這些類的標頭檔案(.h)是否宣告 declare_message_map(),如果有這個宣告,則對該類生成並維護乙個靜態路由表
(3)對有declare_message_map()宣告的類原始檔(.cpp)進行檢索,將begin_message_map(a, b)宣告下的訊息路由加入該使用者類的靜態路由表,(a為該子類名,b為父類名)
(4)進一步檢索b類,即(3)中類的父類,的原始檔(.cpp),並將begin_message_map(b, c)宣告下的訊息路由加入該使用者類的靜態路由表,如出現同名的message,則忽略該條message。
(5)重複(4)知道檢索到最後一層父類
(6)最後得到的靜態路由表對每個declare_message_map()的使用者類都有乙個訊息對映表。
例如 在這些類中
當系統從訊息佇列中讀取一條訊息,系統將訊息傳送都相應的視窗上,視窗對應乙個使用者類,系統將在這個使用者類所維護的靜態路由表中查詢相應的響應函式對該訊息進行響應。
MFC訊息對映機制
一 mfc中採用的這種訊息處理機制成為 mfc訊息對映機制 乙個mfc訊息響應函式在程式中有三處相關資訊 函式原型,函式實現,關聯訊息和訊息響應函式的巨集。函式原型 標頭檔案cdrawview 兩個afx msg注釋巨集之間 訊息響應函式原型的宣告 afx msg void onlbuttondow...
MFC訊息對映機制
win32的訊息迴圈機制是 產生的訊息交由作業系統,將其放到應用程式的訊息佇列中。應用程式通過getmessage函式從這個佇列中取出 一條訊息 由dispatchmessage函式把訊息又交給作業系統,作業系統呼叫視窗過程函式wndproc進行處理。該函式利用switch case結構來判斷並響應...
MFC訊息對映機制
mfc的設計者們在設計mfc時,緊緊把握乙個目標,那就是盡可能使得mfc的 要小,速度盡可能快。為了這個目標,他們使用了許多技巧,其中很多技巧體現在巨集的運用上,實現mfc的訊息對映的機制就是其中之一。同mfc訊息對映機制有關的巨集有下面幾個 declare message map 巨集 begin...