MFC copydata实现两个进程间信息传递。

1.新建Send基于对话框工程。添加按钮,标题改为“发送”。

2.找到对话框头文件,定义结构体。

typedef struct{
	char Name[20];
	UINT Age;
}Student;

3.新建Receive基于对话框工程。

找到对话框头文件。定义同样的结构体

typedef struct{
	char Name[20];
	UINT Age;
}Student;
4.双击发送按钮,添加代码

HWND REC=::FindWindow(NULL,"Receive");
	if(REC==NULL)
	{
		::AfxMessageBox("没有找到该窗口");
		return;
	}	
	
	static Student a;
	strcpy(a.Name,"dfsag");
	a.Age=12;
	static COPYDATASTRUCT cpd;
	cpd.lpData = &a;
	cpd.cbData = sizeof(a);
	//pWnd->SendMessage(WM_COPYDATA,NULL,(LPARAM)&cpd);
	::SendMessage(REC,WM_COPYDATA,NULL,(LPARAM)&cpd);
5.在接收对话框类向导中,添加 消息映射WM_COPYDATA

编辑代码

	Student a;
	CString b;
	memcpy(&a,pCopyDataStruct->lpData,sizeof(a));
	b.Format("%s",a.Name);
	::AfxMessageBox(b);
	char c[10];
	::itoa(a.Age,c,10);//整形转成字符串。
	::AfxMessageBox(c);
6.同时运行两个程序。 点击发送,Receive可以收到Send发来的结构体信息。

心得:COPYDATASTRUCT是保存Student结构体的地址在lpData里,cbData保存了数据大小。sendmessage给Receive窗口发送消息,使它响应WM_COPYDATA映射,接收COPYDATASTRUCT中的内容,再通过地址取出。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值