MFC 自定義訊息
訊息對映、迴圈機制是Windows程式執行的基本方式。VC++ MFC 中有許多現成的訊息控制代碼,可當我們需要完成其它的任務,需要自定義訊息,
就遇到了一些困難。在MFC ClassWizard中不允許新增使用者自定義訊息,所以我們必須手動在程式中新增相應程式碼,以便可以象處理其它訊息一樣處理自定義訊息。
自定義訊息的步驟如下:
(1)建立Single Document的MFC Application,工程名為:MyMessage
(2)自定義訊息:
第一步:定義訊息
在Resource.h中新增如下程式碼:
#define UM_MY_MESSAGE (UM_USER+1)
第二步:宣告訊息處理函式
選擇CMainFrame類中新增訊息處理函式
在MainFrm.h檔案中,類CMainFrame內,宣告訊息處理函式,程式碼如下:
afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);
第三步:實現訊息處理函式
在MainFrm.cpp檔案中新增如下程式碼:
{
//TODO: Add your message handle code
return 0;
}
第四步:在CMainFrame類的訊息塊中,使用ON_MESSAGE巨集指令將訊息對映到訊息處理函式中
ON_WM_CREATE()
ON_MESSAGE(UM_MY_MESSAGE,OnMyMessage)
// ON_REGISTERED_MESSAGE (WM_MY_MESSAGE,OnMyMessage)
END_MESSAGE_MAP()
如果使用者需要一個定義整個系統唯一的訊息,可以呼叫SDK函式RegisterWindowMessage定義訊息:
在Resource.h中將程式碼
替換為:
static UINT UM_MY_MESSAGE=RegisterWindowMessage(_T("User")); 並使用ON_REGISTERED_MESSAGE巨集指令取代ON_MESSAGE巨集指令,其餘步驟同上。
注:如果仍然使用ON_MESSAGE巨集指令,compile可以通過,但是無法響應訊息。
當需要使用自定義訊息時,可以在相應類中的函式中呼叫函式PostMessage或SendMessage傳送訊息PoseMessage(WM_MY_MESSAGE,O,O)。
原來來自:http://www.cnblogs.com/xulei/archive/2007/11/22/968170.html,略有改動