您的位置:首页 > 其它

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

2017-04-19 10:28 351 查看
一、构件工程:

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息