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中顯示
