2011-05-08 63 views
0

我正在爲MFC編寫基於Dialog Based C++的MFC應用程序。創建該項目後,Visual Studio還創建了兩個類ProjectNameApp和。向我的應用程序添加菜單時,菜單項處理程序(用於菜單按鈕)將作爲方法添加到ProjectNameApp類中。在其中一個處理程序中,我想訪問類的變量,更具體地說,是CComboBox。但是,那當然是不可能的。所以,我有兩個問題:來自App類的Dlg類中的訪問變量

  1. 是有辦法存取權限從DLG類CComboBox變量?

  2. 如果不是,我如何將菜單處理程序移動到Dlg類以直接使用CComboBox變量?

此外,我的應用程序必須基於對話框,它必須有一個菜單。

回答

0

最後我處理的任何這是在VS-2008,但如果內存服務CDialog對象可能分配在CProjectNameApp :: InitInstance()堆棧中。有可能是一些代碼那裏,看起來有點像:

CProjectNameDlg dlg; 
int nResponse = dlg.DoModal(); 

有一件事你可以做的是一個指針到對話框作爲ProgramNameApp類的成員。因此,在ProgramNameApp.h添加數據元素,如:

std::tr1::unique_ptr<CProjectNameDlg> m_pDlg; 

然後更改CProjectNameApp :: InitInstance中()的代碼是:

m_pDlg = std::tr1::unique_ptr<CProjectNameDlg>(new CProjectNameDlg()); 
int nResponse = m_pDlg->DoModal(); 

當然你必須是在尋找dlg的任何其他用途,並相應地更改它們。

+0

隨着一些額外的調整它終於工作。謝謝! – 2011-05-12 08:21:51