MFC 进程之间通讯之WM_COPYDATA消息
还是之前的两个基于对话框的MFC测试工程,名字分别为ShareMemoryTest和ShareMemoryTest2
在ShareMemoryTest工程中的按钮响应函数添加如下代码:
void CShareMemoryTestDlg::OnBnClickedOk() { // TODO: Add your control notification handler code here //CDialogEx::OnOK(); HWND receiveWindow = ::FindWindow(NULL, "ShareMemoryTest2"); if (receiveWindow == NULL) return; CString sendData = "message copy data"; COPYDATASTRUCT copyData = { 0 }; copyData.lpData = sendData.GetBuffer(); copyData.cbData = sendData.GetLength(); ::SendMessage(receiveWindow, WM_COPYDATA, (WPARAM)GetSafeHwnd(), (LPARAM)©Data); sendData.ReleaseBuffer(); }
在ShareMemoryTest2工程中ShareMemoryTest2Dlg.h中添加
afx_msg BOOL OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct);
ShareMemoryTest2Dlg.cpp的BEGIN_MESSAGE_MAP(CShareMemoryTest2Dlg, CDialogEx)中添加
ON_WM_COPYDATA()
最后插入如下代码:
BOOL CShareMemoryTest2Dlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) { // TODO: Add your message handler code here and/or call default if (pCopyDataStruct->cbData > 0) { char recvData[256] = {0} ; strncpy(recvData, (char *)pCopyDataStruct->lpData, pCopyDataStruct->cbData); AfxMessageBox(recvData); } return CDialogEx::OnCopyData(pWnd, pCopyDataStruct); }
点击第一个进程的ok按钮,运行结果为:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义