Создание и применение класса диалогового окна

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

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

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

  • Создание класса CConnectDialog.
  • Откройте диалоговое окно IDD_CONNECTDIALOG в редакторе диалогов и нажмите CTRL+W,
    чтобы запустить ClassWizard. Мастер выведет на экран окно Adding a Class, показанное на рисунке 1.


    Рис.1. Добавление нового класса

  • Установив переключатель Create a new class, щелкните ОК. Появится окно New Class.
    В поле Name введите CConnectDialog. Обратите внимание, что имя файла создается автоматически.
  • Щелкните ОК. Мастер ClassWizard создаст класс CConnectDialog и
    поместит его имя в поле Class Name.


    Рис.2. Окно New Class

  • Щелкните ОК, чтобы закрыть 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.
  • В проекте МуАрр на вкладке ClassView раскройте узел класса СМуАррАрр.
  • Чтобы перейти к редактированию обработчика команды обновления пользовательского интерфейса, дважды
    щелкните значок функции OnUpdateDataConnect().


    Рис.3. Функция OnUpdateDataConnect()

  • Удалите следующую строку кода функции:
      pCmdUI->SetCheck(m_isDatabaseConnected);
    
  • Найдите функцию-обработчик OnDataConnect(). Замените имеющуюся строку кода
        m_isDatabaseConnected = m_isDatabaseConnected ? FALSE  : TRUE; 
    

    на такие строки:

        CConnectDialog aCD; 
        aCD.DoModal();
    
  • В ту часть файла МуАрр.срр, где располагаются инструкции #include, добавьте следующую строку:
        #include "ConnectDialog.h"
    
  • Соберите и запустите приложение МуАрр. В меню Data выберите пункт Connect и убедитесь,
    что диалоговое окно Connect to Data Source отображается на экране. Обратите внимание, что, несмотря на
    другое название, кнопка ОК (которая называется теперь Connect) имеет тот же идентификатор IDOK,
    и поэтому, щелкнув ее, Вы вызовете стандартный обработчик ОnОК(), закрывающий диалоговое окно.

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

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

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



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий