當有訊息產生時,作業系統會把這條訊息放到應用程式的訊息佇列中,應用程式通過getmessage函式從這個佇列取出一條具體的訊息,並通過dispatchmessage函式把訊息交給作業系統,後者呼叫應用程式的視窗過程;
即視窗過程函式wndproc進行處理。該函式利用switch-case結構來對訊息進行判別並分類處理。
在每個能接收和處理訊息的類中,定義乙個訊息和訊息函式靜態對照表,即訊息對映表。在訊息對映表中,訊息與對應的訊息處理函式指標是成對出現的。某個類能處理的所有訊息及其對應的訊息處理函式的位址都列在這個類所對應的靜態表中。當有訊息需要處理時,程式只要搜尋該訊息靜態表,檢視表中是否含有該訊息,就可以知道該類能否處理此訊息。如果能處理該訊息,則同樣依照靜態錶能很容易找到並呼叫對應的訊息處理函式。
除wm_command命令訊息外,其他以wm_開頭的訊息叫視窗訊息,視窗訊息與某一視窗緊密相關,應該與接收訊息的視窗處理,而命令訊息往往與具體的視窗無關。
訊息對映機制
大家看的出下面程式的錯誤嗎?include include message.h class myframe public cframewnd myframe afx msg void onexit afx msg void onlbuttondown uint nflags,cpoint point...
MFC訊息對映機制
一 mfc中採用的這種訊息處理機制成為 mfc訊息對映機制 乙個mfc訊息響應函式在程式中有三處相關資訊 函式原型,函式實現,關聯訊息和訊息響應函式的巨集。函式原型 標頭檔案cdrawview 兩個afx msg注釋巨集之間 訊息響應函式原型的宣告 afx msg void onlbuttondow...
MFC訊息對映機制
win32的訊息迴圈機制是 產生的訊息交由作業系統,將其放到應用程式的訊息佇列中。應用程式通過getmessage函式從這個佇列中取出 一條訊息 由dispatchmessage函式把訊息又交給作業系統,作業系統呼叫視窗過程函式wndproc進行處理。該函式利用switch case結構來判斷並響應...