您的位置:首页 > 其它

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

2014-08-21 10:34 330 查看
最近在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项。

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


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐