发送端
LRESULT copyData; //copyDataResult has value returned by other app
CWnd *pOtherWnd = CWnd::FindWindow(NULL, _T("窗体名"));
CString strData;
strData.Format(L"%.1lf", tickdata);
if (pOtherWnd)
{
COPYDATASTRUCT cpd; //上面提到的结构体
cpd.dwData = 0;
cpd.cbData = strData.GetLength() + sizeof(wchar_t); //sizeof(wchar_t)指 \0 的长度。
cpd.lpData = (void*)strData.GetBuffer(cpd.cbData);
copyData = pOtherWnd->SendMessage(WM_COPYDATA, (WPARAM)AfxGetApp()->m_pMainWnd->GetSafeHwnd(), (LPARAM)&cpd);
strData.ReleaseBuffer();
}
接收端
接收端打开发送端程序并隐藏界面
ShellExecute(this->m_hWnd, _T("open"), _T("send.exe"), NULL, NULL, SW_HIDE);
接收端接收并显示数据—右键项目->类向导->消息->添加WM_COPYDATA处理程序
BOOL CTestDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CString strRec = (LPCTSTR)(pCopyDataStruct->lpData);
strRec += _T(" mm");
SetDlgItemText(IDC_STATIC_SHOWTICK, strRec);
//局部刷新数据
CRect rc;
m_staticshowtick.GetWindowRect(rc);
ScreenToClient(rc);
InvalidateRect(rc);
return CDialogEx::OnCopyData(pWnd, pCopyDataStruct);
}
标签:接收端,WM,COPYDATA,cpd,间通信,rc,strData
From: https://blog.csdn.net/qq_42945868/article/details/142178313