首页 > 系统相关 >C++ WM\_COPYDATA 实现进程通信

C++ WM\_COPYDATA 实现进程通信

时间:2024-10-18 23:22:08浏览次数:8  
标签:pCopyDataStruct WM cds smsg MSG C++ str COPYDATA cs

基于MFC

用于存储数据的自定义结构体:

struct MSG_STRUCT {	wchar_t msg[256];};

发送端,发送按钮响应事件的代码

void CSendWM_COPYDATADlg::OnBnClickedSendmessage(){	MSG_STRUCT smsg;	GetDlgItemText(IDC_MESSAGE,smsg.msg,256);	HWND hTargetWnd=NULL;	hTargetWnd=::FindWindow(NULL,_T("ReceiveWM_COPYDATA		COPYDATASTRUCT cds;		cds.cbData=sizeof(MSG_STRUCT);		cds.lpData=&smsg;		if(hTargetWnd==NULL)			return;		::SendMessage(hTargetWnd,WM_COPYDATA,reinterpret_cast<WPARAM>(m_hWnd), 			reinterpret_cast<LPARAM>(&cds));}

接收端,响应WM_COPYDATA的代码

BOOL CReceiveWM_COPYDATADlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct){	// TODO: Add your message handler code here and/or call default	CString cs_str;	CString cs_PrivStr;	GetDlgItemText(IDC_RECEIVEMSG,cs_PrivStr);	++m_ReceiveNum;	MSG_STRUCT smsg;	if(pCopyDataStruct->cbData==sizeof(smsg))	{		memcpy_s(&smsg,sizeof(smsg),pCopyDataStruct->lpData,pCopyDataStruct->cbData);	}	//MessageBox(smsg.msg);	cs_str.Format(_T("消息%d:%s\r\n"),m_ReceiveNum,smsg.msg);	cs_str=cs_PrivStr+cs_str;	SetDlgItemText(IDC_RECEIVEMSG,cs_str);	return CDialog::OnCopyData(pWnd, pCopyDataStruct);}

最终效果图:

发送端

接收端:

标签:pCopyDataStruct,WM,cds,smsg,MSG,C++,str,COPYDATA,cs
From: https://blog.csdn.net/2401_87429224/article/details/143064117

相关文章

  • C++使用共享内存实现进程间通信
    C++使用共享内存实现进程间通信文件映射是一种实现进程间单向或双向通信的机制。它允许两个或多个本地进程间相互通信。为了共享文件或内存,所有的进程必须使用相同的文件映射的名字或是句柄。为了实现共享文件,第一个进程先调用CreateFile方法。接下来调用CreateFileMappin......
  • 算法笔记 C/C++快速入门 | 全章节整理
    目录零.【C语言中的输入和输出函数】sscanf应用场景1:解析用户输入应用场景2:解析文件内容应用场景3:处理网络协议数据应用场景4:字符串解析和数据转换应用场景5:解析复杂的日志数据其他应用场景:scanf 一【编程语言相关】c和cpp二.【数据结构相关】结构体循环定......
  • C++之类和对象2
    文章目录1.类的默认成员函数有哪些2.构造函数3.析构函数4.拷贝构造函数5.赋值运算符重载函数5.1运算符重载5.2赋值运算符重载函数6.取地址运算符重载函数6.1const成员函数6.2普通取地址重载函数与const取地址运算符重载函数1.类的默认成员函数有哪些默认构造函数是......
  • 【C++】string类(1)
    ......
  • 【GESP】C++一级练习BCQM3048,顺序执行、逆推运算
    一道根据结果,一步一步逆推之前结果的题,完全顺序语句执行题目题解详见:https://www.coderli.com/gesp-1-bcqm3048/【GESP】C++一级练习BCQM3048,顺序执行、逆推运算|OneCoder一道根据结果,一步一步逆推之前结果的题,完全顺序语句执行。https://www.coderli.com/gesp-1-bcqm3048/......
  • 【GESP】C++一级练习BCQM3049,细胞分裂
    GESP一级知识点整形int和for循环练习。题目题解详见:【GESP】C++一级练习BCQM3049,细胞分裂|OneCoder【GESP】C++一级练习BCQM3049,细胞分裂|OneCoderGESP一级知识点整形int和for循环练习。https://www.coderli.com/gesp-1-bcqm3049/C++GESP专项交流频道:GESP学习交流频道......
  • 【信奥赛·C++基础语法】CSP-J C++ 指针与引用
    序言指针和引用是非常重要的概念,它们提供了对内存的直接访问和操作方式,使得程序员能够更加灵活地处理数据哈,理解指针和引用的工作原理以及正确使用它们,对于编写高效、安全的C++程序至关重要。一、指针的基本概念指针的定义和作用指针是一个变量,它存储了另一个变量的内......
  • 基于51单片机的智能台灯光照坐姿检测PWM红外无线手机蓝牙/WiFi/WiFi视频监控APP设计C0
    51单片机+人走灯灭+光敏AD采集+自动+手动+10档调节+坐姿监测+蜂鸣器+OLED屏/C01N51+蓝牙APP控制+人走灯灭+光敏AD采集+自动+手动+10档调节+坐姿监测+蜂鸣器+OLED屏/C01B51+WIFI-APP控制+人走灯灭+光敏AD采集+自动+手动+10档调节+坐姿监测+蜂鸣器+OLED屏/C01W51+视频监控+WIF......
  • QT/c++相关记录
     QT的大部分容器类(如QString、QVector等)都是使用隐式共享(implicitsharing)技术,这是通过写时复制(copy-on-write,COW)实现的优化模式。理解这一点的关键在于,Qt的容器类需要在对象拷贝时高效处理数据,而隐式共享则允许在栈上操作容器的同时,在需要时共享内部数据的堆上存储。......
  • 必学的简单排序算法——选择排序(c++)
    标题前言一、什么是选择排序二、算法图解三、经典例题1、颜色分类题解思路代码题解2、至少是其他数字两倍的最大数解题思路代码题解3、寻找两个正序数组的中位数解题思路代码题解前言排序算法虽然简单,但是我也要掌握熟练应用,因为学习算法这个复杂的过程,我们应该......