1. 程式人生 > >MFC中實現父對話方塊與子對話方塊之間的引數傳遞,例項可測

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