MFC 子对话框之间互相发送消息的方案

最近做项目,遇到了在多对话框情况之下,子对话框之间能够互相发送消息的情况。

由于SendMessage()函数第一个参数是目的地的句柄,所以只要能在子对话框1中得到子对话框2的句柄即可。

网上有资料说可以用FindWindow函数,进行子对话框的句柄查找,但弄了半天,发现一直无法得到想要的外部其他子对话框的句柄

最后得到的解决方法是子对话框将操作需求发回给父对话框,然后由于父对话框中保存有子对话框的对象或对象指针,即可以方便的在父对话框中向子对话框发送消息。

具体操作如下:

子对话框向父对话框发送消息

HWND hwnd = ::GetParent(m_hWnd);

::SendMessage(hwnd,Msg,wParam,lParam);

这样就将消息发送到了父对话框中,在父对话框建立消息的相应函数,然后通过不同的消息类型,向不同的子对话框发送消息。

当然这里也可以有两种方法,其一可以使用GetSafeHwnd()函数获得子对话框的句柄,这样就可以使用::SendMessage()函数来根据不同窗口的句柄发送消息了

更简单的是,直接用父对话框中保存的子对话框的对象或对象指针来直接调用SendMessage()函数进行发送消息,这样消息直接发送到对应的子对话框中了

当然如果不向子对话框发送消息也可以,在父对话框中留函数接口,在子对话框中直接通过父对话框的指针,然后调用父对话框的接口函数,进行向其他子对话框发送消息的操作


如果有人懂得如何在子对话框之间直接发送消息,那希望能告知,让我学习一下。



  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值