WM_COPYDATA通信
MFC创建服务端和客户端,客户端想要发送消息给服务端的时候,客户端要拿到服务端的窗口句柄,并且服务端要开启WM_COPYDATA的消息。
客户端发送消息的代码:
void CProcessClientDlg::OnBnClickedButtonSend()
{
//发送数据 COPYDATA
CString strWindowsTitle = "服务端";
CString strMsg = "i am client";
//利用标题拿到句柄
HWND hWnd = ::FindWindow(NULL, strWindowsTitle.GetBuffer(0));
if (hWnd != NULL && IsWindow(hWnd))
{
//数据封装
COPYDATASTRUCT cpd;
cpd.dwData = 0;
cpd.cbData = strMsg.GetLength() * sizeof(TCHAR);
cpd.lpData = (PVOID)strMsg.GetBuffer(0);
::SendMessage(hWnd, WM_COPYDATA, (WPARAM)(AfxGetApp()->m_pMainWnd), (LPARAM)&cpd);
}
strWindowsTitle.ReleaseBuffer();
strMsg.ReleaseBuffer();
}
服务端开启WM_COPYDATA消息。
右键点击服务端的窗口,选择类向导:
服务端接收消息函数代码:
BOOL CProcessCommunitDlg::OnCopyDa