自定义消息(也可以直接添加消息)
流程如下:
一. .h文件中:
#define WM_MYMSG WM_USER+8
在类中声明消息映射:
DECLARE_MESSAGE_MAP()
定义消息映射处理函数:
afx_msg LRESULT MyMsgHandler(WPARAM,LPARAM);
二. 在.cpp中
要实现消息映射:
BEGIN_MESSAGE_MAP(CMAINFRAME,CMDIFrameWnd) //CMAINFrame基于CMainFrame类
ON_MESSAGE(WM_MYMSG,OnMyMsgHandler)
END_MESSAGE_MAP()
然后就是实现函数了
LRESULT CMainFrame::OnMyMsHandler(WPARAMW,LPARAML)
在引发消息的地方写上:
::SendMessage(::AfxGetMainWnd->m_hWnd,WM_MYMSG,0,0);//WM_MYMSG是定义的消息名
注意:引发消息的地方在另一个界面或者另一个类:
第一种:在另一个类引发消息
在类外部发出消息:(在另一个类下定义)
CMyTest *test= new CMyTest();
::SendMessage(test->m_hWnd,WM_MYMSG,0,0);
别忘了在这个类下面要销毁窗体
CMyTest::~CMyTest()
{
CWnd::DestroyWindow();
}
然后在 .cpp文件中作相应修改
BEGIN_MESSAGE_MAP(CMyTest,CWnd)//CMyTest替换原来的类
ON_MESSAGE(WM_MYMSG,OnMyHandler)//OnMyHandler自定义函数
END_MESSAGE_MAP()
LRESULT CMyTest::OnMyHandler(WPARAMW,LPARAML)
{
...
return 0;
}
第二种最简单的方法:
项目(右键)----------类向导-------------消息------------添加自定义消息
消息名以WM_开头
剩下的只需要在头文件开头处添加:
#define WM_消息 WM_USER+8
即可