用PostMessage与ON_MESSAGE将一个页面的信息传递给另一个页面MFC dialog

我们在使用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、运行

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值