自定义消息分为五步:
- 第一步:在.h文件中定义消息
#define (自定义消息名) WM_USER+1001
//例如:#define WM_MYMESSAGE WM_USER+1001
- 第二步:在要响应的类的.h文件的AFX_MSG块中声明消息处理函数:
eg: afx_msg LRESULT ONMYMessage(WPARAM wParam, LPARAM lParam);
- 第三步:再要响应的类的.cpp文件中增加消息映射部分:
eg: ON_MESSAGE(WM_MYMESSAGE, ONMYMessage)
*注意,第三步和第四步可以在类向导中完成*
- 第四步:在要响应的类的.cpp中定义消息处理函数的实现:
LRESULT 类名::ONMYMessage(WPARAM wParam, LPARAM lParam)
{
//对应的处理;注意这个方法名和第二步声明的方法名
}
- 第五步:发送消息
//方法1:
HWND hwnd = ::GetParent(m_hWnd);//要接受消息的窗口的类的指针
SendMessage(hwnd,WM_MYMESSAGE,a,b);
//方法2:
PostMessage(GetSafeHwnd(), WM_USER_THREADEND, 0, 0);
//其中GetSafeHwnd()得到了一个当前窗口的句柄.如果想发送消息给其它窗口只需改变这个句柄