ClassWizard不允許增加用戶自定義消息,所以你必須手工輸入。輸入後,ClassWizard就可以象處理其它消息一樣處理你自定義的消息了。
下面是增加自定義消息的步驟:
第一步:定義消息。開發Windows95應用程序時,Microsoft推薦用戶自定義消息至少是WM_USER+100,因為很多新控件也要使用WM_USER消息。
第二步:實現消息處理函數。該函數使用WPRAM和LPARAM參數並返回LRESULT。
LRESULTCMainFrame::OnMyMessage(WPARAMwParam,LPARAMlParam) //Lonefox轉注:若是通過MFC添加的函數,必須把類定義中的函數頭刪除,否則和下面的消息映射定義重疊,編譯時報重定義錯誤
{
//TODO:處理用戶自定義消息
...
return0;
}
第三步:在類頭文件的AFX_MSG塊中說明消息處理函數:
classCMainFrame:publicCMDIFrameWnd
{
...
//一般消息映射函數
protected:
//{{AFX_MSG(CMainFrame)
afx_msgintOnCreate(LPCREATESTRUCTlpCreateStruct);
afx_msgvoidOnTimer(UINTnIDEvent);
afx_msgLRESULTOnMyMessage(WPARAMwParam,LPARAMlParam);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
}
第四步:在用戶類的消息塊中,使用ON_MESSAGE宏指令將消息映射到消息處理函數中。
BEGIN_MESSAGE_MAP(CMainFrame,CMDIFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_WM_TIMER()
ON_MESSAGE(WM_MY_MESSAGE,OnMyMessage)
//}}AFX_MSG_MAP
END_MESSAGE_MAP
=======================
Lonefox:我用於在多線程全部完成時發送自定義消息到主窗口,主窗口接收。