MFC中兩個對話框之間數據傳遞


http://blog.csdn.net/foreverhuylee/article/details/21707197

這里有兩種情況,

第一種情況是:

(在一個基於單文檔的應用程序中,新建了兩個對話框A和B,並且用兩個獨立的類和他們關聯)

 

對話框A中有一個編輯框, 按下A中的一個按鈕a后彈出對話框B,
B中也有一個編輯框b,
 在B中輸入數據 點擊確定(ID0K)后 ,b中的數據能傳到a,並且能顯示出來
具體實現方法:
在A對話框的Button1按鈕響應函數中,添加以下代碼:
void DlgA::OnButton1() 
{
	// TODO: Add your control notification handler code here
	DlgB dlgB;    // 新建B對話框的對象
	if (IDOK==dlgB.DoModal())
	{
		m_strA=dlgB.m_strB;   // m_strA是a編輯框關聯的變量,m_strB是b對話框關聯的變量
	}
	UpdateData(FALSE); 
}
在B對話框的“確定”ID號為(IDOK),函數中添加以下代碼:
void DlgB::OnOK() 
{
	// TODO: Add extra validation here
	GetDlgItem(IDC_EDIT1)->GetWindowText(m_strB); // 獲取b對話框的值,保存在m_strB中

);
	CDialog::OnOK();
}
第二種情況是:
(在一個基於單文檔的應用程序中,新建了兩個對話框A和B,並且用兩個獨立的類和他們關聯)
在A對話框的a編輯框中輸入數據,點擊確定(IDOK)按鈕,A對話框消失
打開B對話框,其中的b編輯框中能顯示原來a中的數據
實現方法如下:
1.在程序的App類中,添加一個成員變量,它相當於整個程序的全局變量,所有的類都能用
float myFlow;
2.在A對話框的“確定”按鈕中,輸入一下代碼:
void CInitial::OnOK() 
{
	// TODO: Add extra validation here
		UpdateData(true);
		CEnvirMonibeta1App *pApp=(CEnvirMonibeta1App *)AfxGetApp( );
		pApp->myFlow=m_Iflow;   // m_Iflow  是a編輯框關聯的變量

	CDialog::OnOK();
}
3.在B對話框的OnPaint函數(這個函數需要自己添加WM_PAINT)中,添加如下代碼:
	CEnvirMonibeta1App *pApp=(CEnvirMonibeta1App *)AfxGetApp( );
	m_flow=pApp->myFlow;
	UpdateData(FALSE);
 
        
這個就能實現目標了~~
 
        
如果是父對話框和子對話框的傳遞,用下面的方法:
 
        
CParentDlg *parent=(CParentDlg*)GetParent();
parent->GetDlgItem()->SetWindowText()

CParetDlg對應你的A對話框類。
通過一個parent指針指向父對話框,然后就是獲得B的內容,在A中顯示


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM