用户自定义的的消息

时间:2020-12-26 22:20:33
用户自定义的的Windows消息(也就是以WM_开头,除了WM_COMMAND以外的消息,这类消息
在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);