MFC中实现父对话框与子对话框之间的参数传递,实例可测

一、构件工程:

1.新建一个工程CPassParametersDlg,在界面上添加一个Edit(添加变量:m_result),

   添加两个Button其他设置默认,修改Caption分别为:启动子对话框||发送数据给子窗口

2.在CPassParametersDlg.h中加入:

public:
	CEdit m_result;
	CString FarherData;
	afx_msg void OnBnClickedButton1();
	afx_msg void OnBnClickedButton2();

在CPassParametersDlg.cpp中加入:

BOOL CPassParametersDlg::OnInitDialog()
{

	...
	int a = 20;
	FarherData.Format(_T("%d"), a);
	m_result.SetWindowText(FarherData);
	...
	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}
void CPassParametersDlg::OnBnClickedButton1()
{

	CChild dlg;
	dlg.SetBackgroundColor(RGB(255, 155, 0));
	dlg.DoModal();      //设置子对话框背景颜色黄色 CDiologEx中	
}


void CPassParametersDlg::OnBnClickedButton2()
{

	CChild dlg;
	//CString FarherData;
	m_result.GetWindowText(FarherData);//获取当前对话框中的文本框内容
	dlg.SetBackgroundColor(RGB(255, 155, 0));
	dlg.ChildData = FarherData;
	dlg.DoModal();      //设置子对话框背景颜色黄色 CDiologEx中	
}
3.双击左侧资源文件PassParameters.rc,在Dialog处右键添加资源,选择类,类名为CChild。并在对话框上同样添加一个Edit(添加变量:m_result2),

   添加两个Button其他设置默认,修改Caption分别为:获得父窗口参数||发送数据给父窗口

在CChild.h中添加

public:
	CString ChildData;
	CEdit  m_result2;
	afx_msg void OnBnClickedButton1();
	afx_msg void OnBnClickedButton2();
	virtual BOOL OnInitDialog();
在CChild.cpp中添加

void CChild::OnBnClickedButton1()
{
	// TODO:  在此添加控件通知处理程序代码
	CPassParametersDlg *pFatherDlg = (CPassParametersDlg*)GetParent();
	ChildData = pFatherDlg->FarherData;
	m_result2.SetWindowText(ChildData);
}

BOOL CChild::OnInitDialog()
{
	CDialogEx::OnInitDialog();
	CPassParametersDlg *pFatherDlg;
	pFatherDlg = (CPassParametersDlg*)GetParent();
	m_result2.SetWindowText(ChildData);
	return TRUE;  
}

void CChild::OnBnClickedButton2()
{
	CPassParametersDlg * parent = (CPassParametersDlg*)GetParent();
	//CString FarherData;
	this->m_result2.GetWindowText(ChildData);//获取当前子窗口编辑框中的值
	parent->m_result.SetWindowText(ChildData);//把当前编辑框中的值回传给父窗口
}
4 . 在CChild.h中加入#include "PassParametersDlg.h"

   在CPassParametersDlg.h中加入#include "Child.h"

5,运行效果如下图:

1.点击启动子对话框,并点击获得父窗口参数,结果:


2,在子窗口Edit中写入hello world,点击发送数据给父窗口,父窗口显示结果:


3.点击子窗口确定按钮,在父窗口中输入 new year,点击发送数据给子窗口,子窗口显示:


ps:此处需要关闭子窗口才能操作,如何不关闭直接操作父窗口待做。

二、思考

1.Edit如何显示字符?

 m_result.SetWindowText(_T("火星人"));  

2.如何将一个int整数显示在Edit上?

  int a =20;

  CString str;

  str.Format(_T("%d"),a);

  m_result.SetWindowText(str);

3.完整代码见:http://download.csdn.net/detail/huoxingrenhdh/9819228

  • 21
    点赞
  • 103
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值