我正在使用MFC为GUI编写基于Dialog的C ++应用程序。创建项目后,Visual Studio还创建了两个类ProjectNameApp
和ProjectNameDlg
。将菜单添加到我的应用程序时,菜单项处理程序(用于菜单按钮)将作为方法添加到ProjectNameApp
类。在其中一个处理程序中,我想访问ProjectNameDlg
类的变量,更具体的是CComboBox
。但是,这当然是不可能的。所以我有两个问题:
有没有办法从Dlg类中访问CComboBox
变量?
如果没有,我如何将菜单处理程序移动到Dlg类以直接使用CComboBox
变量?
此外,我的应用程序必须基于对话框,并且必须有一个菜单。
答案 0 :(得分: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
的任何其他用途,并相应地更改它们。