1、发送方MFC
void XXX::SendCopyDataMessage(CString strWinTitle, CString strMsg) { HWND hdlg; hdlg = ::FindWindow(NULL, strWinTitle); if (NULL != hdlg) { COPYDATASTRUCT cds = { 0 }; cds.dwData = 0; cds.cbData = (strMsg.GetLength()+1)*sizeof(TCHAR); cds.lpData = strMsg.GetBuffer(strMsg.GetLength()); ::SendMessage(hdlg, WM_COPYDATA, (WPARAM)this->m_hWnd, (LPARAM)&cds); strMsg.ReleaseBuffer(); } }
2、接收方MFC
BOOL XXX::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) { CString strMsg; if (pCopyDataStruct && pCopyDataStruct->cbData) { strMsg = (LPCTSTR)(pCopyDataStruct->lpData); MessageBox(strMsg, L"WM_COPYDATA", MB_OK); } return CDialogEx::OnCopyData(pWnd, pCopyDataStruct); }