发送消息端:
const char* msg = "ReqLoginStatus";
COPYDATASTRUCT cpd;
cpd.dwData = 0;
cpd.cbData = strlen(msg)+1;//多加一个长度,防止乱码
cpd.lpData = (void*)msg;
HWND hWnd = ::FindWindow(NULL,CA2W("客户端"));
if (hWnd)
{
LRESULT lr =::SendMessage(hWnd,WM_COPYDATA,(WPARAM)m_hWnd,(LPARAM)&cpd);
if (lr!=S_OK){
logs->WriteFormat("发送ReqLoginStatus失败");
}
}接收端:
switch (uMsg)
{
case WM_COPYDATA:
{
MessageBoxA(NULL,"recved","",MB_OK);
COPYDATASTRUCT *pCopyData = (COPYDATASTRUCT*)lParam;
char szBuffer[300];
memset(szBuffer, 0, sizeof(szBuffer));
sprintf(szBuffer, "dwData:%d cbData:%d\r\nlpData:0x%08x = %s\r\n\r\n",
pCopyData->dwData, pCopyData->cbData,
(PVOID)pCopyData->lpData, (char*)pCopyData->lpData);
break;
}
}

本文详细阐述了客户端通信中发送消息至特定窗口并接收反馈的过程,包括使用COPYDATASTRUCT结构进行数据传递,以及如何在接收端解析接收到的数据。重点介绍了消息的发送与接收逻辑,包括窗口查找、消息类型匹配和数据解析等关键步骤。

4416

被折叠的 条评论
为什么被折叠?



