MFC筆記(一):一個對話框類調用(訪問)另一個對話框類的成員變量
MFC中一個對話框類CDailog1要訪問另外一個對話框類CDailog2對象的成員變量,這就需要獲得對話框類CDailog2的對象的指針,有好幾種方法可以實現,如維護一個單例模式、設置靜態變量等。
本文設置以靜態變量的方法爲例,實現對兩個對話框之間數據訪問。
一、創建MFC對話框程序
1.首先創建一個MFC對話框應用程序,命名爲Test工程.
2.對話框本身有一個主界面(CTestDlg對話框),那我們再添加一個新界面CXXXDlg.
3.在主對話框(CTestDlg)上添加一個picture控件 ,對應變量名爲ImageShowRect。
二、在CTestDlg.h文件中,添加對話框指針變量的聲明
static CTestDlg *pTestdlg;
三、在CTestDlg .cpp文件中,寫上一行初始化代碼,直接初始化爲空
CTestDlg *CTestDlg::pTestdlg = NULL; //注意要寫在類外,不要寫在類實現函數裏面。
注意:
由於這個指針是靜態的,我們需要在類外初始化。
四、然後要在CTestDlg.cpp文件的OnInitDialog()函數裏面寫上如下一句代碼
pTestdlg = this; //爲這個之前定義的指針變量賦值爲主對話框指針
*說明:
現在我們只要在其他的類裏面獲得這個靜態指針,就可以訪問這個類裏面的所有數據了~~~~*
五、獲得靜態指針
假設,我們想在CXXXDlg類中訪問CTestDlg類的m_ImageShowRect變量,只需要在CXXXDlg.cpp文件的具體某個功能的實現函數中添加如下代碼
void CXXXDlg::showimage()
{
CTestDlg *pdlg = CTestDlg::pTestdlg ;
pdlg->m_ImageShowRect.GetClientRect(&clRect);
...
...
}
說明:
m_ImageShowRect爲主對話框TestDlg中picture控件的捆綁變量。
End!