利用PostMessage触发其他窗口类自定义消息响应函数实现主窗口和子窗口数据交互

本文介绍了如何在MFC中使用PostMessage来实现主对话框和子对话框之间的数据交互。通过定义自定义消息WM_TEST,并在子对话框中添加消息响应函数OnTest,当主对话框调用PostMessage发送WM_TEST消息时,会触发子对话框的响应函数,从而实现数据通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        最近在MFC主对话框添加了tab控件,每个tab页用了一个子对话框,然后就涉及到了一个问题,当主对话框有数据需要显示在子对话框列表控件时,怎么实现?后来听技术大牛点拨,主对话框中PostMessage的参数和子对话框自定义消息响应函数绑定,然后PostMessage把消息抛出,当执行到主对话框的PostMessage时,就会触发子对话框的消息响应函数。废话少说,开始讲代码:以下代码都已经过测试,可直接使用~

    1、首先在StdAfx.h中添加:#define WM_TEST WM_USER+101 //用户消息 用来绑定PostMessage和自定义的消息响应函数

    2、在子对话框中添加消息响应函数,这个网上资料很多,这里简单说一下:

          在头文件中添加:afx_msg LRESULT OnTest(WPARAM wParam,LPARAM lParam);

          在cpp文件中添加:ON_MESSAGE(WM_TEST,OnTest)

         添加具体函数:

        LRESULT  CPara2::OnTest(WPARAM wParam,LPARAM lParam)
{

     MessageBox("Hello World");

}

   3、在主对话框你需要响应的地方添加:

        ::PostMessage(para2.GetSafeHwnd(),WM_TEST,0,0);//para2是子对话框的类名,由于是不同窗口之间,所以获得句柄用GetSafeHwnd()函数

  4、我的数据传递用的全局变量,如果想通过PostMessage传递,可以使用第3、4项。


至此,不同窗口之间数据传递、触发就完成了,如有更好的见解,欢迎分享补充~


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值