自定义消息

定义消息

WM_USER through 0x7FFF

#define WM_MSG_UI_SHOW (WM_USER+5)

添加消息处理函数

类视图->添加函数
返回类型:LRESULT
参数:WPARAM wParam,LPARAM lParam
函数名:OnMyMessage
然后在OnMyMessage 成员函数声明前加上 afx_msg

添加消息映射

*.h
afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);

*.cpp
LRESULT CComBoxDemoDlg::OnShowMessage(WPARAM wParam, LPARAM lParam)
{
// Put in shared_ptr so it is automatically destroyed.
std::unique_ptr<wstring> ptr(reinterpret_cast<wstring*>(wParam));

showText(IDC_RICHEDIT21, ptr->c_str(), COLOR_GREEN);

return 0;
}

BEGIN_MESSAGE_MAP(Cmfc01aDlg, CDialog)
ON_MESSAGE(WM_MSG_UI_SHOW,OnMyMessage) //这里添加消息映射
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

批量响应消息

#define WM_DEMO_LOG_CLEAR		(WM_USER + 1)	//清空日志输出
#define WM_DEMO_ADD_DEVICE (WM_USER + 2) //添加设备
#define WM_DEMO_DEL_DEVICE (WM_USER + 3) //删除设备

BEGIN_MESSAGE_MAP(CZLNetSDKDemoDlg, CDialogEx)
...
ON_COMMAND_RANGE(WM_DEMO_LOG_CLEAR, WM_DEMO_DEL_DEVICE, &DemoDlg::OnTreeMessage)
...
END_MESSAGE_MAP()

void CZLNetSDKDemoDlg::OnTreeMessage(UINT nID)
{
//设备树右键菜单消息处理
switch (nID)
{
case WM_DEMO_LOG_CLEAR:
break;
case WM_DEMO_ADD_DEVICE:
break;
case WM_DEMO_DEL_DEVICE:
break;
}
}

字符串消息

// Put in shared_ptr so it is automatically destroyed.
shared_ptr<string> msg = reinterpret_cast<string*>(lParam);

发送消息

wstring* pwstr = new wstring(utils::s2w(strData));

pwnd->PostMessageW(WM_MSG_UI_SHOW, (WPARAM)pwstr, (LPARAM)i);