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

时间:2024-05-22 15:09:04

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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