Пример. Отображение диалогового окна через команду меню
В этом разделе содержатся процедуры:
Отображение модального диалогового окна с помощью команды меню.
Отображение диалогового окна без режима с помощью команды меню.
Оба примера процедуры предназначены для приложений MFC и будут работать в приложении, создаваемом с помощью мастера приложений MFC.
В процедурах используются следующие имена и значения:
Товар | Имя или значение |
---|---|
Приложение | DisplayDialog |
Команда меню | Тестовая команда в меню "Вид"; Идентификатор команды = ID_VIEW_TEST |
Диалоговое окно | Диалоговое окно тестирования; Class = CTestDialog; Файл заголовка = TestDialog.h; Variable = testdlg, ptestdlg |
Обработчик команд | OnViewTest |
Отображение модального диалогового окна
Создайте команду меню; см. статью "Создание меню" или "Элементы меню".
Создание диалогового окна; см. раздел "Запуск редактора диалогов".
Добавьте класс для диалогового окна. Дополнительные сведения см. в разделе "Добавление класса ".
В представлении классов выберите класс документа (CDisplayDialogDoc). В окне Свойства нажмите кнопку События. Дважды щелкните идентификатор команды меню (ID_VIEW_TEST). Затем щелкните стрелку вниз и выберите <"Добавить> OnViewTest".
Если вы добавили команду меню в мейнфрейм приложения MDI, выберите вместо него класс приложения (CDisplayDialogApp).
Добавьте следующую инструкцию include в CDisplayDialogDoc.cpp (или CDisplayDialogApp.cpp) после существующих инструкций include:
#include "TestDialog.h"
Добавьте следующий код для
OnViewTest
реализации функции:CTestDialog testdlg; testdlg.DoModal();
Отображение диалогового окна без режима
Выполните первые четыре действия, чтобы отобразить модальное диалоговое окно, за исключением выбора класса представления (CDisplayDialogView) на шаге 4.
Изменить DisplayDialogView.h:
- Объявите класс диалогового окна перед объявлением первого класса:
class CTestDialog;
- Объявите указатель на диалоговое окно после общедоступного раздела "Атрибуты":
CTestDialog* m_pTestDlg;
Изменить DisplayDialogView.cpp:
- Добавьте следующую инструкцию include после существующих инструкций include:
#include "TestDialog.h"
- Добавьте следующий код в конструктор:
m_pTestDlg = NULL;
- Добавьте следующий код в деструктор:
delete m_pTestDlg;
- Добавьте следующий код для
OnViewTest
реализации функции:
if (NULL == m_pTestDlg) { m_pTestDlg = new CTestDialog(this); m_pTestDlg->Create(CTestDialog::IDD, this); } m_pTestDlg->ShowWindow(SW_SHOW);