扩展https://www.cnblogs.com/findumars/p/3948427.html
定义消息或资源中添加
#define WM_MYMESSAGE_XYG (WM_USER + 7943)
头文件中添加消息处理函数
class CVMDSModelView
{
protected:
...
afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);
...
DECLARE_MESSAGE_MAP()
cpp中添加消息映射处理
BEGIN_MESSAGE_MAP(CVMDSModelView, CScrollView)
ON_MESSAGE(WM_MYMESSAGE_XYG, OnMyMessage)
END_MESSAGE_MAP()
实现消息处理函数
其中WPARAM wParam,LPARAM lParam二者为指针,所以发送自定义消息时如果想传相关参数,可以将参数的地址赋给这2个参数之一即可
LRESULT CVMDSModelView::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
AfxMessageBox(_T("自定义消息!"));
return 0;
}
自定义消息触发
PostMessage()与SendMessage()函数的区别是:SendMessage()的消息直接发给窗口并调用相应的消息响应函数,消息不进消息队列,但直到消息响应函数处理完后SendMessage()才返回。而PostMessage()将消息放入消息队列后立即返回。
// !!!在传递参数时一定要注意如果是传递局部变量一定是用SendMessage()函数,使用PostMessage当消息响应函数捕获到消息时局部变量可能已经被释放
SendMessage(WM_MYMESSAGE_XYG, 0, 0) 或
PostMessage(WM_MYMESSAGE_XYG, 0, 0);