2011-05-08 64 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