Переменная доступа в классе Dlg из класса App - PullRequest
0 голосов
/ 09 мая 2011

Я пишу приложение C ++ на основе диалога с MFC для GUI.После создания проекта Visual Studio также создала два класса ProjectNameApp и ProjectNameDlg.При добавлении меню в мое приложение обработчики пунктов меню (для кнопок меню) добавляются в качестве методов к классу ProjectNameApp.В одном из этих обработчиков я хочу получить доступ к переменной класса ProjectNameDlg, точнее, CComboBox.Но это, конечно, невозможно.Итак, у меня есть два вопроса:

  1. есть ли способ получить доступ к этой переменной CComboBox из класса Dlg?

  2. , если нет, то какя могу переместить обработчики меню в класс Dlg для непосредственного использования переменной CComboBox?

Кроме того, мое приложение должно быть основано на диалоге, и оно должно иметь меню.

1 Ответ

0 голосов
/ 09 мая 2011

Последнее, с чем я имел дело, было в 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 и соответственно изменить их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...