在WM_USER以下的是系统消息,WM_USER以上的可以由用户自己定义),是消息发出者直接
发给对应CWnd的窗体句柄,由CWnd负责消息的响应。所以这类消息必须同一个CWnd类对应,
更精确的说必须与一个HWND类型的窗体句柄相对应。
关于发送消息的函数:
SendMessage可以理解为,SendMessage函数发送消息,等待消息处理完成后,SendMessage才返回。稍微深入一点,是等待窗口处理函数返回后,SendMessage就返回了。
PostMessage可以理解为,PostMessage函数发送消息,不等待消息处理完成,立刻返回。
稍微深入一点,PostMessage只管发送消息,消息有没有被送到则并不关心,只要发送了消
息,便立刻返回。
自定义消息步骤:
1.声明消息:#define WM_MYMSG (WM_USER+8)
2.在类声明中声明消息处理函数:
afx_msg LRESULT OnMyMsgHandler(WPARAM wParam,LPARAM lParam);
DECLARE_MESSAGE_MAP()
3.实现消息映射:
BEGIN_MESSAGE_MAP(CXXXDlg, CDialog)
ON_MESSAGE(WM_MYMSG,OnMyMsgHandler)
END_MESSAGE_MAP()
4.实现消息处理函数:
LRESULT CXXXDlg::OnMyMsgHandler(WPARAM wParam,LPARAM lParam)
{
//AfxMessageBox("Hello,World!");
return 0;
}
5.发送消息:
::SendMessage(::AfxGetMainWnd()->m_hWnd,WM_MYMSG,0,0);