1. 程式人生 > >C++ MFC 其他函式獲得主對話方塊指標並使用成員的方法

C++ MFC 其他函式獲得主對話方塊指標並使用成員的方法

AfxGetApp()->m_pMainWnd->GetDlgItem(IDC_EDIT1)->SetWindowText(_T(“雞啄米部落格”)); AfxGetMainWnd()->GetDlgItem(IDC_EDIT1)->SetWindowText(_T(“雞啄米部落格”));

以下為轉載:

A.子對話方塊得到父對話方塊的方法(此方法也可以幫助其他函式獲得主對話方塊)

1. extern CMainApp theApp; CMainDlg* dlg = (CMainDlg*)theApp.m_pMainWnd;獲得主對話方塊指標就可以呼叫它的成員的 2.

主對話方塊建立子對話方塊時把this傳入,那麼在子對話方塊中就可以得到主對話的指標  3.用GetParent()獲取父視窗指標。 設你主對話方塊類為CMyDialog. CMyDialog *pDlg = (CMyDialog *)GetParent()->GetParent(); pDlg->函式或變數; 第一個GetParent()獲取的是tab control指標,再通過tab control獲取主對話方塊指標。

B.獲取對話方塊的指標--全域性變數的使用

假設CMyDialog為對話方塊類

1.先在CMyDialog.cpp中宣告一個全域性變數CMyDialog* pDlg;

2在OnInitDialog()的時候,pDlg = this;

3.在別的類使用他的時候,在別的類的Cpp中新增extern CMyDialog* pDlg;

4.pDlg->yourfunction();

C.在使用mfc的時候經常遇到自定義類訪問主對話方塊控制元件的問題,例如自定義類中的方法要輸出一段字串到主對話方塊的EDIT控制元件、控制對話方塊的進度條等   要在自定義的類中訪問主對話方塊空間,須獲得主對話的指標。主對話方塊的物件在app類的InitInstance()方法中宣告。檢視app類的cpp檔案,在InitInstance()方法中有如下語句:    CAppDlg dlg;    m_pMainWnd = &dlg;  主對話方塊指標被傳給m_pMainWnd

成員,按f12檢視其定義,發現m_pMainWnd 是在afxwin.h中宣告的成員: CWnd*m_pMainWnd;      // main window (usually same AfxGetApp()->m_pMainWnd)由於MFC中的自定義類會自動包含stdafx.h標頭檔案,且stdafx.h包含afxwin.h,因此根據註釋,在自定義類中可以直接使用    AfxGetApp()->m_pMainWnd來獲取主對話方塊的指標。之後可通過    AfxGetApp()->m_pMainWnd->GetDlgItem( )來獲得要訪問的主對話方塊控制元件的指標,以對其進行訪問。