VC增加自定义消息
2009-10-07 20:29:19 来源:WEB开发网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:我用于在多线程全部完成时发送自定义消息到主窗口,主窗口接收。
赞助商链接