1. 程式人生 > >MFC六大關鍵技術之——訊息對映與命令傳遞

MFC六大關鍵技術之——訊息對映與命令傳遞

1 BOOL CWnd::OnWndMsg(UINT message,WPARAM wParam,LPARAM lParam,LRESULT* pResult)
2 {
3 if(message==WM_COMMAND)
4 {
5 OnCommand(wParam,lParam);
6 ……
7 }
8
9 if(message==WM_NOTIFY)
10 {
11 OnCommand(wParam,lParam,&lResult);
12 ……
13 }
14 const AFX_MSGMAP* pMessageMap; pMessageMap=GetMessageMap();
15 const AFX_MSGMAP_ENTRY* lpEntry;
16

17 /*以下程式碼作用為:用AfxFindMessageEntry函式從訊息入口pMessageMap處查詢指定訊息,如果找到,返回指定訊息對映表成員的指標給lpEntry。然後執行該結構成員的pfn所指向的函式*/
if((lpEntry=AfxFindMessageEntry(pMessageMap->lpEntries,message,0,0)!=NULL)
18 {
19 lpEntry->pfn();/*注意:真正MFC程式碼中沒有用這一條語句。上面提到,不同的訊息引數代表不同的意義和不同的訊息響應函式有不同型別的返回值。而pfn是一個不帶引數的函式指標,所以真正的MFC程式碼中,要根據物件lpEntry的訊息的動作標識nSig給訊息處理函式傳遞引數型別。這個過程包含很複雜的巨集代換,大家在此知道:找到匹配訊息,執行相應函式就行!
*/
21 }
22
23 }
24
25