win消息 在不同form 或应用程序进行通信 c++(c++builder)

这是如何发送消息,SendMessage是阻塞的需要等待处理完成以后返回,如果不等待可以使用postmessage

HWND MainHWND=FindWindowA("TMainForm","首页");
if(MainHWND != 0)
{
	char ShutdownMessage[100]="Shutdown";
	COPYDATASTRUCT cds;
	cds.dwData = 0;//可以是任意值
	cds.cbData = sizeof(ShutdownMessage) + 1;//指定lpData内存区域的字节数
	cds.lpData = ShutdownMessage;//发送给目标窗口所在进程的数据
	SendMessage(MainHWND, WM_COPYDATA, 0, (LPARAM)&cds);
}

这是如何接收消息,需要重载WndProc方法(也可以选择重载WindowProc、或者使用MESSAGE_MAP和ApplicationEvents控件,可参考https://www.cnblogs.com/findumars/p/5597286.html

void __fastcall TMainForm::WndProc(Messages::TMessage& Message)//Tmainform是继承tform的一个类
{
	 switch (Message.Msg)
	 {
		case WM_COPYDATA:
		{
			COPYDATASTRUCT* cds = new COPYDATASTRUCT();
			cds=(COPYDATASTRUCT*)Message.LParam;
			char strResult[100];
			sprintf(strResult,"%s",(char*)cds->lpData);
			MessageBox(NULL,strResult,"",0);
		}
		break;
		default:
		  TForm::WndProc(Message);
	 }
}
private:
	void __fastcall WndProc(Messages::TMessage& Message);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值