我们在使用MFC的时候,往往需要将一个页面的消息传递给另一个页面,下面我们就来详述一下如何实现。
1、在主dialog的test7Dlg.h文件中添加
#define HXZ_PAGE_MESSAGE (WM_USER + 100)
(WM_USER + 100)这里最好是100及以上,防止与已有控件重名
2、在子dialog的CPage1.cpp中添加发送消息的函数
#include "test7Dlg.h"
void CPage1::OnBnClickedButton1()
{
message = "123456";
HWND hWnd = ::FindWindow(NULL, _T("maindialog"));
::PostMessage(hWnd, HXZ_PAGE_MESSAGE, 0, (LPARAM)(LPCTSTR)message);
}
这里的_T(“maindialog”)为主dialog界面蓝色标题栏显示的字符
3、在主dialog的test7Dlg.h中public添加函数声明:
afx_msg LRESULT OnDlgPageMessage(WPARAM wParam, LPARAM lParam);
4、在主dialog的test7Dlg.cpp中添加函数OnDlgPageMessage,这就是用来处理接收到的消息的函数
LRESULT Ctest7Dlg::OnDlgPageMessage(WPARAM wParam, LPARAM lParam)
{
CString str = (LPCTSTR)lParam;
m_listbox.AddString(str);
return 0;
}
其中m_listbox是主dialog中的listBox控件
5、在主dialog的test7Dlg.cpp中添加message关联ON_MESSAGE
BEGIN_MESSAGE_MAP(Ctest7Dlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1, &Ctest7Dlg::OnBnClickedButton1)
ON_BN_CLICKED(IDC_BUTTON2, &Ctest7Dlg::OnBnClickedButton2)
ON_MESSAGE(HXZ_PAGE_MESSAGE, OnDlgPageMessage)
END_MESSAGE_MAP()
6、运行