MFC 子对话框之间互相发送消息的方案
2015-06-24 10:15
141 查看
最近做项目,遇到了在多对话框情况之下,子对话框之间能够互相发送消息的情况。
由于SendMessage()函数第一个参数是目的地的句柄,所以只要能在子对话框1中得到子对话框2的句柄即可。
网上有资料说可以用FindWindow函数,进行子对话框的句柄查找,但弄了半天,发现一直无法得到想要的外部其他子对话框的句柄
最后得到的解决方法是子对话框将操作需求发回给父对话框,然后由于父对话框中保存有子对话框的对象或对象指针,即可以方便的在父对话框中向子对话框发送消息。
具体操作如下:
子对话框向父对话框发送消息
HWND hwnd = ::GetParent(m_hWnd);
::SendMessage(hwnd,Msg,wParam,lParam);
这样就将消息发送到了父对话框中,在父对话框建立消息的相应函数,然后通过不同的消息类型,向不同的子对话框发送消息。
当然这里也可以有两种方法,其一可以使用GetSafeHwnd()函数获得子对话框的句柄,这样就可以使用::SendMessage()函数来根据不同窗口的句柄发送消息了
更简单的是,直接用父对话框中保存的子对话框的对象或对象指针来直接调用SendMessage()函数进行发送消息,这样消息直接发送到对应的子对话框中了
当然如果不向子对话框发送消息也可以,在父对话框中留函数接口,在子对话框中直接通过父对话框的指针,然后调用父对话框的接口函数,进行向其他子对话框发送消息的操作
如果有人懂得如何在子对话框之间直接发送消息,那希望能告知,让我学习一下。
由于SendMessage()函数第一个参数是目的地的句柄,所以只要能在子对话框1中得到子对话框2的句柄即可。
网上有资料说可以用FindWindow函数,进行子对话框的句柄查找,但弄了半天,发现一直无法得到想要的外部其他子对话框的句柄
最后得到的解决方法是子对话框将操作需求发回给父对话框,然后由于父对话框中保存有子对话框的对象或对象指针,即可以方便的在父对话框中向子对话框发送消息。
具体操作如下:
子对话框向父对话框发送消息
HWND hwnd = ::GetParent(m_hWnd);
::SendMessage(hwnd,Msg,wParam,lParam);
这样就将消息发送到了父对话框中,在父对话框建立消息的相应函数,然后通过不同的消息类型,向不同的子对话框发送消息。
当然这里也可以有两种方法,其一可以使用GetSafeHwnd()函数获得子对话框的句柄,这样就可以使用::SendMessage()函数来根据不同窗口的句柄发送消息了
更简单的是,直接用父对话框中保存的子对话框的对象或对象指针来直接调用SendMessage()函数进行发送消息,这样消息直接发送到对应的子对话框中了
当然如果不向子对话框发送消息也可以,在父对话框中留函数接口,在子对话框中直接通过父对话框的指针,然后调用父对话框的接口函数,进行向其他子对话框发送消息的操作
如果有人懂得如何在子对话框之间直接发送消息,那希望能告知,让我学习一下。
相关文章推荐
- 关于不同设备下载同一张图片适配问题
- iOS 模拟终端控件
- SQL with(unlock)与with(readpast) (转)
- 如何写一个简单的手写识别算法?
- 学校网站制作该从哪几方面去思考去制作
- ajax是否能跨域请求,解决的办法
- 用注解方式实现springMVC
- 【性能诊断】九、并发场景的性能分析(windbg案例,Fist Chance Exception/Crash dump)
- Ubuntu 14.10 下grep命令详解
- 浅谈参加SEO培训是否是必要的
- sdk callback mechnism
- opencv中的vs框架中的Blob Tracking Tests的中文注释。
- 用 CallerMemberName Attribute 和 EqualityComparer 统一处理类的属性值变化
- 修改Active Directory域控制器计算机名称
- 6月21日全球域名注册商(国际域名)保有量及市场份额
- listview加载性能优化及有多种listitem布局处理方式
- SAP在物流工作中的应用之学习笔记
- NSURLConnection文件上传
- 分享一个自己写的基于TP的关系模型(2)
- 一个丝滑的全屏滑动返回手势