SendMessage函数的原型为
LRESULT SendMessage(
HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);
hWnd:其窗口过程将接收消息的窗口的句柄。如果此参数为HWND\u BROADCAST((HWND)0xffff),则消息将发送到系统中的所有顶级窗口,包括禁用或不可见的无主窗口、重叠窗口和弹出窗口;但消息不会发送到子窗口
Msg:要发送的消息,可以是自定义消息,有关系统提供的消息的列表,请参阅系统定义的消息https://docs.microsoft.com/en-us/windows/win32/winmsg/about-messages-and-message-queues
wParam:特定于消息的信息
lParam:特定于消息的信息
用于消息传递,其中有WPARAM 和 LPARAM 两个附加参数,可以传递一些附加信息,由于它们是unsigned int 型的,所以只能传递数字,如果想要传递字符串之类的则需要使用指针,即字符串的地址。
两种发送方式,第一种查看其定义其实是调用的第二种
AfxGetMainWnd()->SendMessage(UINT message, WPARAM wParam, LPARAM lParam) 通过句柄调用发送消息
SendMessage(m_hWnd, message, wParam, lParam); }// 发送消息,参数输入句柄
使用lParam发送字符串消息示例
AA发送:
CString msg = "我是字符串"
AfxGetMainWnd()->SendMessage(WM_MYMESSAGE, 1002, (LPARAM)(LPCTSTR)msg);
WM_MYMESSAGE是我自定义的消息:#define WM_MYMESSAGE WM_USER+200
BB接收处理:
LRESULT CIRStudy_ToolDlg::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
if (wParam == 1002){// AA发来的消息
CString rmsg = (LPCTSTR)lParam;
printf("接收到的字符串消息:%s\r\n", rmsg);
}
}