Мониторинг обменных курсов валют
18c0693f

Класс CDialog


Класс CDialog является базовым классом, используемым для отображения на экране диалоговых окон, называемых также диалогами.

Есть два типа диалоговых окон - модальные и немодальные.

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

ClassWizard автоматически будет добавлять список обрабатываемых сообщений в таблицу сообщений производного класса, а в заголовочном файле будет указан макрос DECLARE_MESSAGE_MAP (), который указывает, что класс содержит таблицу сообщений.


Для создания диалоговых окон на основе существующего ресурса диалога можно использовать:

Если шаблон диалога отсутствует, то можно создать шаблон диалога, используя структуру DLGTEMPLATE, а затем, после создания объекта диалога, вызвать методы CreateIndirect или InitModalIndirect и DoModal.

Модальное диалоговое окно автоматически закрывается при щелчке пользователя на кнопках типа OK или Cancel или при вызове метода EndDialog. Отметим, что метод EndDialog только скрывает окно диалога, а для его удаления следует использовать функцию DestroyWindow.

Для обмена значениями с элементом управления используется метод CWnd::UpdateData. Этот метод автоматически вызывается и при щелчке пользователя на кнопке типа OK, и при инициализации элементов управления методом OnInitDialog.

Метод OnInitDialog вызывается после создания всех элементов управления диалогового окна, но перед их отображением.

Для определения фона диалоговых окон используется метод CWinApp::SetDialogBkColor.

Последовательность создания диалогового окна включает следующие шаги:

  1. проектирование в редакторе диалога шаблона диалогового окна с включением в него всех требуемых элементов управления и настройки их свойств;
  2. создание класса, производного от CDialog, с описанием в нем переменных и обработчиков событий, а также указанием используемого шаблона диалога;
  3. определение для каждого элемента управления переменной или объекта, используемых для доступа к значению данного элемента управления;
  4. определение необходимых методов обработчиков событий для каждого элемента управления;
  5. создание объекта разработанного производного класса диалога (фактически вызов конструктора) и создание диалогового окна: Для модального диалога Для немодального диалога
    вызов конструктора с параметром, указывающим ID шаблона диалогавызов конструктора без параметра шаблона диалога
    вызов метода DoModalвызов метода Create с параметром, указывающим ID шаблона диалога
  6. переопределение метода OnInitDialog и включение в него вызова метода базового класса и необходимых действий по инициализации диалогового окна.




Класс CDialog предоставляет следующие конструкторы объекта:

CDialog (LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL); CDialog (UINT nIDTemplate, CWnd* pParentWnd = NULL); CDialog ();

Параметр lpszTemplateName - это строка, содержащая имя ресурса шаблона диалога, nIDTemplate - значение ID ресурса шаблона диалога. По умолчанию редактор ресурсов присваивает шаблонам диалога идентификаторы, начинающиеся с префикса IDD_. Параметр pParentWnd задает указатель на родительское окно или окно собственник (типа CWnd), которому принадлежит этот диалог. Значение NULL показывает, что родительским окном является главное окно приложения.

Конструктор без параметров используется для создания модального окна диалога на основе шаблона, расположенного в памяти. При этом применяется метод InitModalIndirect. Для создания модального диалога после вызова конструктора следует вызвать метод DoModal.

Класс CDialog предоставляет следующие методы Create для создания немодального диалога:

BOOL Create (LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL); BOOL Create (UINT nIDTemplate, CWnd* pParentWnd = NULL);

При успешном завершении создания диалогового окна и инициализации эти методы возвращают ненулевое значение.

Если в шаблоне диалога не установлен стиль WS_VISIBLE, то для отображения диалога необходимо вызвать метод ShowWindow.

Класс CDialog предоставляет большой набор методов, предназначенных для работы с диалоговым окном, включая следующие:






Все публикации раздела



Самый выгодный курс обмена валюты