Шаг 38.
Среда программирования Visual C++.
Создание и применение класса диалогового окна

    На этом шаге мы рассмотрим создание и применение классов диалогового окна.

    После создания шаблона диалогового окна необходимо создать соответствующий ему класс диалога, производный от MFC-класса CDialog. В класс могут быть включены переменные для доступа к элементам управления и данным диалогового окна, а также методы обработки событий, возникающих при работе пользователя с элементами управления. Применение ClassWizard значительно облегчает создание класса диалога и связывание элементов управления с переменными класса.

    Создадим в своем приложении класс для диалогового окна Connect to Data Source с помощью ClassWizard и выведем это окно на экран.

    Создав класс диалога, Вы можете отобразить модальное диалоговое окно на экране. Для этого в коде приложения достаточно создать экземпляр этого класса и вызвать метод базового класса CDialog::DoModal(). Функции базового класса CDialog::OnOK() и CDialog::OnCancel() обеспечивают стандартную обработку сообщений IDOK и IDCANCEL, генерируемых по умолчанию кнопками ОК и Cancel. Обе функции для закрытия диалогового окна вызывают метод CDialog::EndDialog(). Функция CDialog::DoModal() возвращает идентификатор кнопки, закрывшей окно.

    AppWizard снабжает MFC-приложение шаблоном и классом диалога для окна About. Код отображения окна на экране находится в функции-члене OnAppAbout() объекта приложения, являющейся обработчиком команды ID_APP_ABOUT. Ниже приведен образец кода функции OnAppAbout(), отображающей на экране диалоговое окно About для приложения МуАрр.

void СМуАррАрр::OnAppAbout() 
{
    CAboutDlg aboutDlg;
    aboutDlg.DoModal(); 
}

    Немодальное диалоговое окно обрабатывается иначе. Для его ак-ивизации вызовите вместо DoModal() функцию CDialog::Create(), указав в параметре идентификатор ресурса диалога. Если в шаблоне установлено свойство WS_VISIBLE, диалоговое окно выводится немедленно. В противном случае для отображения окна на экране необходимо вызвать метод базового класса CWnd::ShowWindow(), указав качестве параметра значение, определяющее режим отображена экране. Для отображения на экране немодального окна используйте константу SW_SHOW, а для сокрытия - SW_HIDE.

    Поскольку модальное диалоговое окно захватывает фокус вво создавайте его только в том месте кода, где это требуется. В этом случае объект, представляющий модальное диалоговое окно, объявляется непосредственно перед его использованием и выходит из области видимости сразу после обработки пользовательских запросов и закрытия окна.

    Немодальные диалоговые окна могут существовать в течение всего времени работы приложения, а их отображением и сокрытием командует пользователь. Немодальные диалоговые окна часто создаются в начале работы приложения как члены одного из классов приложения. В этом отношении они похожи на панели инструментов. Объекты панели инструментов создаются обычно при запуске приложения как члены класса CMainFrame, и в любой момент их можно показать или скрыть, выбрав пункт меню Toolbar.

    Изменим приложение так, чтобы командой Connect в приложении МуАрр отображать на экране диалоговое окно Connect to Data Source.

    Пока диалоговое окно Connect to Data Source не выполняет никаких действий. В дальнейшем мы создадим код для ввода данных это окно, а также код для получения и обработки данных и сообщений от элементов управления диалогового окна.

    Текст измененного приложения можно взять здесь (47,2 Кб).

    На следующем шаге мы рассмотрим классы стандартных диалогов.




Предыдущий шаг Содержание Следующий шаг