注意事项:
- 必须用SendMessage,不能用PostMessage。
- 可以发送自定义的数据结构,但是数据结构中不能有指针,引用等。
发送端:
sTmp.Format(L"Test data string.";
COPYDATASTRUCT cpd;
cpd.dwData = 0;
cpd.cbData = sTmp.GetLength() * 2 + 2; // Because Unicode.
cpd.lpData = (void*)sTmp.GetBuffer(cpd.cbData);
::SendMessage(ep.m_hMainWnd, WM_COPYDATA, (WPARAM)AfxGetApp()->m_pMainWnd->GetSafeHwnd(), (LPARAM)&cpd);
接收端:
BOOL CDSUMDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{
CString sSetting = (LPTSTR)(pCopyDataStruct->lpData);
MessageBox(sSetting, _T("DSUMDlg"));
return CDialog::OnCopyData(pWnd, pCopyDataStruct);
}
本文介绍了使用WM_COPYDATA消息进行进程间通信的方法,强调了必须使用SendMessage而非PostMessage,并详细展示了如何构造和解析COPYDATASTRUCT来发送和接收自定义数据。
357

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



