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

来源:互联网 发布:吉林大学南岭校区 网络 编辑:程序博客网 时间:2024/05/22 14:54

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

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

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

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

具体操作如下:

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

HWND hwnd = ::GetParent(m_hWnd);

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

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

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

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

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


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



0 0
原创粉丝点击