MFC中實現父對話方塊與子對話方塊之間的引數傳遞,例項可測
阿新 • • 發佈:2018-12-30
一、構件工程:
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 }
3.雙擊左側資原始檔PassParameters.rc,在Dialog處右鍵新增資源,選擇類,類名為CChild。並在對話方塊上同樣新增一個Edit(新增變數:m_result2),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中 }
新增兩個Button其他設定預設,修改Caption分別為:獲得父視窗引數||傳送資料給父視窗
在CChild.h中新增
在CChild.cpp中新增public: CString ChildData; CEdit m_result2; afx_msg void OnBnClickedButton1(); afx_msg void OnBnClickedButton2(); virtual BOOL OnInitDialog();
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