MFC两个对话框之间的消息传输

在MFC项目中有时会涉及到两个对话框之间进行消息传输的事情。这里需要用到SendMessage()函数和PostMessage()函数。

这俩函数的区别可自行百度。这里我是使用的是SendMessage()函数。

》两个对话框之间进行消息传输分为两种情况:1.子对话框对主对话框发送消息  2.两个子对话框之间发送消息。

先介绍 :1》子对话框对主对话框发送消息

子对话框“Dialog”向主对话框“消息发送”发送消息。


首先在子对话框和主对话框的 公共头文件.h 中加 #define WM_MyMessage WM_USER+100    给消息设置一个ID。

其次在子对话框中要发送消息的地方写入代码::SendMessage(this->GetParent()->m_hWnd,WM_MyMessage,0,0);如果有内容传输,可以通过第三、四的参数传输。


之后在主对话框的头文件中加入消息接收函数:afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);//自己添加的消息函数


之后在主对话框的.cpp文件中写入代码,写入的位置如下图: ON_MESSAGE(WM_MyMessage, &C消息发送Dlg::OnMyMessage)。  其中参数:“WM_MyMessage ”是我们之前在公共头文件中定义的宏;“C消息发送Dlg” 是我的主对话框的类;“ OnMyMessage”是我们上图中定义的消息函数。这样我们就将函数和消息ID绑定到一块了。


下一步是在主对话框的.cpp文件中给出OnMyMessage()函数的实现。


这样子对话框通过SendMessage()函数就能向主对话框发送消息,主对话框会在afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);函数中接收到消息。


///--------------------------------------------------------------

2》两个子对话框之间发送消息

两个子对话框之间发送消息的处理和上边的大致一样,区别是在SendMessage()函数方面。因此只写出这方面的代码:

“子对话框1”向“子对话框2”发送消息:在需要传送消息的地方写下面的SendMessage()函数。


图中的"C消息发送Dlg" 是主对话框的类;m_pDlg2是在主对话框类中定义的一个“子对话框2”的对象。

注:两个子对话框进行消息传输时,这两个对话框需同时存在,否则会报错。(可将两个对话框都设置成非模态)。


可参考:http://blog.sina.cn/dpool/blog/s/blog_8f479b390102xa4n.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值