初識MFC 訊息對映

2021-09-24 11:50:43 字數 898 閱讀 5048

訊息對映

以前的程式設計師編寫windows程式時,需要使用winmain()例程來向wndproc函式傳送訊息,對訊息的處理是通過switch-case結構實現的,當要處理的訊息很多時,switch-case結構的分支很多,影響程式的可讀性。在編寫mfc應用程式時,不再採用這種古老的方法,而是採用一種相當巧妙的方法,通過一些巨集將特定的訊息對映到派生類中相應的成員函式上,這種方法被稱作訊息對映機制。所謂訊息對映,就是將訊息與其處理函式相對應,即當系統產生一條訊息時,它能夠找到處理該訊息的函式。

在mfc中,凡是從ccmdtarget(命令傳送類)派生的類都可以有訊息對映,如果要建立訊息對映,需要進行以下操作:

1.在類的相應標頭檔案(.h)中申明訊息對映表,它通常情況下被寫在乙個類定義的最後。

775.1.png

2.在類的實現**檔案(.cpp)中加入訊息對映表,如下所示:

775.2.png

vc++中提供了三種訊息對映巨集:declare_message_map、begin_message_map和end_message_map。declare_message_map用於類

申明的末尾,即在.**件中;在實現檔案(.cpp)中,使用begin_message_map和end_message_map來完成訊息對映的任務。這

兩個巨集總是配合使用。在begin_message_map和end_message_map巨集之間列出了訊息對映的各個入口。

declare_message_map:

用於申明在原始檔中存在訊息對映。

begin_message_map:用於標誌訊息對映的開始。

end_message_map:標誌訊息對映的結束。

on_command:用於將乙個特定的命令訊息對映到類的成員函式,即使用該成員函式來處理該命令訊息。即指定命令訊息和它的處理函式名稱。

MFC訊息對映

run這個函式來建立和處理訊息迴圈 bool afxapi afxinternalpumpmessage return true 顯而易見,mfc中處理訊息也是利用了win32下的訊息處理 那麼還是這樣的結構 typedef struct tagmsg msg 有了這個概念之後我們知道,mfc通過訊...

MFC訊息對映機制

一 mfc中採用的這種訊息處理機制成為 mfc訊息對映機制 乙個mfc訊息響應函式在程式中有三處相關資訊 函式原型,函式實現,關聯訊息和訊息響應函式的巨集。函式原型 標頭檔案cdrawview 兩個afx msg注釋巨集之間 訊息響應函式原型的宣告 afx msg void onlbuttondow...

MFC訊息對映機制

win32的訊息迴圈機制是 產生的訊息交由作業系統,將其放到應用程式的訊息佇列中。應用程式通過getmessage函式從這個佇列中取出 一條訊息 由dispatchmessage函式把訊息又交給作業系統,作業系統呼叫視窗過程函式wndproc進行處理。該函式利用switch case結構來判斷並響應...