ClassWizard不允許增加用戶自定義消息,所以你必須手工輸入。輸入后,ClassWizard就可以象處理其它消息一樣處理你自定義的消息了。
下面是增加自定義消息的步驟:
第一步:定義消息。開發(fā)Windows95應(yīng)用程序時(shí),Microsoft推薦用戶自定義消息至少是WM_USER+100,因?yàn)楹芏嘈驴丶惨褂肳M_USER消息。
第二步:實(shí)現(xiàn)消息處理函數(shù)。該函數(shù)使用WPRAM和LPARAM參數(shù)并返回LRESULT。
LRESULTCMainFrame::OnMyMessage(WPARAMwParam,LPARAMlParam) //Lonefox轉(zhuǎn)注:若是通過MFC添加的函數(shù),必須把類定義中的函數(shù)頭刪除,否則和下面的消息映射定義重疊,編譯時(shí)報(bào)重定義錯(cuò)誤
{
//TODO:處理用戶自定義消息
...
return0;
}
第三步:在類頭文件的AFX_MSG塊中說明消息處理函數(shù):
classCMainFrame:publicCMDIFrameWnd
{
...
//一般消息映射函數(shù)
protected:
//{{AFX_MSG(CMainFrame)
afx_msgintOnCreate(LPCREATESTRUCTlpCreateStruct);
afx_msgvoidOnTimer(UINTnIDEvent);
afx_msgLRESULTOnMyMessage(WPARAMwParam,LPARAMlParam);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
}
第四步:在用戶類的消息塊中,使用ON_MESSAGE宏指令將消息映射到消息處理函數(shù)中。
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:我用于在多線程全部完成時(shí)發(fā)送自定義消息到主窗口,主窗口接收。
下面是增加自定義消息的步驟:
第一步:定義消息。開發(fā)Windows95應(yīng)用程序時(shí),Microsoft推薦用戶自定義消息至少是WM_USER+100,因?yàn)楹芏嘈驴丶惨褂肳M_USER消息。
第二步:實(shí)現(xiàn)消息處理函數(shù)。該函數(shù)使用WPRAM和LPARAM參數(shù)并返回LRESULT。
LRESULTCMainFrame::OnMyMessage(WPARAMwParam,LPARAMlParam) //Lonefox轉(zhuǎn)注:若是通過MFC添加的函數(shù),必須把類定義中的函數(shù)頭刪除,否則和下面的消息映射定義重疊,編譯時(shí)報(bào)重定義錯(cuò)誤
{
//TODO:處理用戶自定義消息
...
return0;
}
第三步:在類頭文件的AFX_MSG塊中說明消息處理函數(shù):
classCMainFrame:publicCMDIFrameWnd
{
...
//一般消息映射函數(shù)
protected:
//{{AFX_MSG(CMainFrame)
afx_msgintOnCreate(LPCREATESTRUCTlpCreateStruct);
afx_msgvoidOnTimer(UINTnIDEvent);
afx_msgLRESULTOnMyMessage(WPARAMwParam,LPARAMlParam);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
}
第四步:在用戶類的消息塊中,使用ON_MESSAGE宏指令將消息映射到消息處理函數(shù)中。
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:我用于在多線程全部完成時(shí)發(fā)送自定義消息到主窗口,主窗口接收。

