实用的步骤,记下:
1. 在头文件stdafx.h中增加一个自定义消息宏
#define WM_MY_TEST WM_USER + 12. 在于增加新消息的窗口或对话框类的头文件中增加一个回调函数声明,注意要声明为public
afx_msg LRESULT OnDrawItem(WPARAM wParam, LPARAM lParam);
3. 在窗口或对话框的cpp文件的BEGIN_MESSAGE_MAP,END_MESSAGE_MAP 中增加一行
ON_MESSAGE(WM_MY_TEST, OnDrawItem)
4. 在窗口或对话框的cpp文件中增加回调函数的实现,如:
LRESULT CMyDialog::OnDrawItem(WPARAM wParam, LPARAM lParam)
{
TRACE("WM_MY_TEST message /n");
return 0;
}
5. 自定义消息的触发
::PostMessage(GetSafeHwnd(), WM_MY_TEST, 0, 0);
其中GetSafeHwnd()得到了一个当前窗口的句柄,此消息将发给当前窗口,如果想发送消息给其它窗口只需改变这个句柄,前提是目的窗口也实现了此消息的处理函数。如果确定发送信息给当前窗口还有另一种写法:
pWnd = CWnd::FronHandle(m_hWnd);
pWnd->PostMessage("WM_MY_TEST,0,0);