注意事项:
- 必须用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);
}