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
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 非模态对话框的消息处理
- 下一篇: VC++ 对话框工程MFC中父窗口和子窗口传值方法