MFC——向指定对话框传递消息

工程中如果对话框个数大于两个的话,那么我们经常需要向指定对话框发送消息,并且传递数据(事实上微软也是那么建议的)。那么我们必须确定要跟哪一个对话框发送消息,简单,获取接收消息的对话框的窗口句柄即可。

可以通过GetParent()->m_hWnd,Findow()->m_hWnd,等方式获得。但是前者必须要求发送\接收对话框具有父子窗口关系,后者又必须要求传入窗口的名字,显然这对于程序的封装以及复用是相矛盾的。

这里介绍的方法可以突破上面的限制。

假设:对话框B给对话框A发送消息,双方唯一的关系是B在A中被Create&Show。

实现:

A.h
#include"DlgB.h"
...
DlgB dlgB;
...
B.h

...
HWND hWndCreator;
...
A.cpp

...
dlgB.Create(IDD_xxx);
dlgB.ShowWindow(SW_SHOW);
dlgB.hWndCreator=this->m_hWnd;
...
B.cpp

...
::PostMessage(hWndCreator,MSG_XXX,0U,0L);
...

这样一来,对话框B发送的消息一定能被A收到。而只要在A中添加好对消息“MSG_XXX”的消息响应函数,A就可以对对话框B发送的消息进行响应。

总结:

思路就是在A、B之间维护一个表示A窗口的窗口句柄变量。

 

 

 

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值