程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> MFC消息映射機制

MFC消息映射機制

編輯:C++入門知識

C++中的多態大大簡化了編程,使得程序的抽象性更高,但是在MFC這樣一個龐大的類庫中,如果消息的傳遞采用多態機制,將在每個類中引入大量的虛表,不適用,因此MFC中的消息傳遞采用消息映射機制,記住,這就叫消息映射,不是別的。   使用class wizard自動生成的代碼中,和消息映射直接相關的語句是   [cpp]   DECLARE_MESSAGE_MAP()   和 [cpp] view plaincopy BEGIN_MESSAGE_MAP(CDeawView,CView)   ON_WM_LBUTTONDOWN()   .......   ON_COMMAND(ID_FILE_PRINT,CView::OnfilePrint)   END_MESSAGE_MAP()   這兩句構建了一個偉大的數據結構--MFC消息映射路由。這些宏的具體的代碼,有興趣的讀者可以刨根問底一下,我下面說說他們的作用吧,畢竟總結是一種重要的學習方法。它們的作用:DECLARE_MESSAGE_MAP為該類申明了記錄消息的框架,框架中每個元素由BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之間的內容填充,結果是產生了一個消息映射表。 內存中的映射表可視化表示可以參考侯捷《深入淺出MFC》Page417,這個龐然大物再次向我們昭示了其實,內存映射表是個巨大的數據結構而已,用來為諸如WM_PAINT這樣的消息決定流動路線。   在我們C++程序員的眼裡,虛函數是實現多態的完美方式,但是,永遠不要認為虛函數就是唯一,MFC的消息映射機制裡,各個類間消息映射表的穿針引線,同樣為我們帶來了多態的效果。這可能就叫做編程之美吧。    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved