Класс CDialog

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

Синтаксис

class CDialog : public CWnd

Участники

Открытые конструкторы

Имя Описание
CDialog::CDialog Формирует объект CDialog.

Открытые методы

Имя Описание
CDialog::Create Инициализирует объект CDialog. Создает диалоговое окно без режима и присоединяет его к объекту CDialog .
CDialog::CreateIndirect Создает диалоговое окно без режима из шаблона диалогового окна в памяти (не на основе ресурсов).
CDialog::D oModal Вызывает модальное диалоговое окно и возвращает время выполнения.
CDialog::EndDialog Закрывает модальное диалоговое окно.
CDialog::GetDefID Возвращает идентификатор элемента управления pushbutton по умолчанию для диалогового окна.
CDialog::GotoDlgCtrl Перемещает фокус на указанный элемент управления диалогового окна в диалоговом окне.
CDialog::InitModalIndirect Создает модальное диалоговое окно из шаблона диалогового окна в памяти (не на основе ресурсов). Параметры хранятся до вызова функции DoModal .
CDialog::MapDialogRect Преобразует блоки диалогового окна прямоугольника в единицы экрана.
CDialog::NextDlgCtrl Переместите фокус на следующий элемент управления диалогового окна в диалоговом окне.
CDialog::OnInitDialog Переопределите инициализацию диалогового окна расширения.
CDialog::OnSetFont Переопределите, чтобы указать шрифт, используемый элементом управления диалогового окна при рисовании текста.
CDialog::P revDlgCtrl Переместите фокус на предыдущий элемент управления диалогового окна в диалоговом окне.
CDialog::SetDefID Изменяет элемент управления pushbutton по умолчанию для диалогового окна на указанный pushbutton.
CDialog::SetHelpID Задает идентификатор справки с учетом контекста для диалогового окна.

Защищенные методы

Имя Описание
CDialog::OnCancel Переопределите, чтобы выполнить кнопку "Отмена" или действие клавиши ESC. По умолчанию закрывается диалоговое окно и DoModal возвращается IDCANCEL.
CDialog::OnOK Переопределите действие кнопки "ОК" в модальном диалоговом окне. Значение по умолчанию закрывает диалоговое окно и DoModal возвращает идентификатор IDOK.

Замечания

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

CDialog Объект — это сочетание шаблона диалога и производного CDialogкласса. Используйте редактор диалогов, чтобы создать шаблон диалогового окна и сохранить его в ресурсе, а затем используйте мастер добавления классов, чтобы создать класс, производный от CDialog.

Диалоговое окно, как и любое другое окно, получает сообщения из Windows. В диалоговом окне особенно заинтересованы в обработке уведомлений из элементов управления диалогового окна, так как пользователь взаимодействует с диалоговым окном. Используйте мастер классов, чтобы выбрать сообщения, которые вы хотите обрабатывать, и он добавит соответствующие записи карты сообщений и функции-обработчика сообщений в класс. Необходимо написать только код, зависящий от приложения, в функциях-членах обработчика.

Если вы предпочитаете, вы всегда можете записывать записи карты сообщений и функции-члены вручную.

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

Карта данных создается для автоматического обработки обмена данными между переменными-членами и элементами управления диалогового окна. Карта данных предоставляет функции, которые инициализируют элементы управления в диалоговом окне с соответствующими значениями, извлекают данные и проверяют данные.

Чтобы создать модальное диалоговое окно, создайте объект в стеке с помощью конструктора для производного класса диалогов, а затем вызовите DoModal создание диалогового окна и его элементов управления. Если вы хотите создать бессерверное диалоговое окно, вызовите Create конструктор класса диалогов.

Вы также можете создать шаблон в памяти с помощью структуры данных DLGTEMPLATE , как описано в пакете SDK для Windows. После создания CDialog объекта вызовите CreateIndirect для создания диалогового окна без режима или вызовите InitModalIndirect и DoModal, чтобы создать модальное диалоговое окно.

Карта данных обмена и проверки записывается в переопределение CWnd::DoDataExchange , которое добавляется в новый класс диалогов. Дополнительные сведения о функциях обмена и проверки см. в CWnd функции члена DoDataExchange.

Программист и платформа вызываются DoDataExchange косвенно через вызов CWnd::UpdateData.

Платформа вызывается UpdateData , когда пользователь нажимает кнопку "ОК", чтобы закрыть модальное диалоговое окно. (Данные не извлекаются, если нажмите кнопку "Отмена".) Реализация OnInitDialog по умолчанию также вызывает UpdateData настройку начальных значений элементов управления. Обычно переопределяется OnInitDialog для дальнейшего инициализации элементов управления. OnInitDialog вызывается после создания всех элементов управления диалоговым окном и непосредственно перед отображением диалогового окна.

Вы можете вызывать CWnd::UpdateData в любое время во время выполнения модального или безрежимного диалогового окна.

Если вы разрабатываете диалоговое окно вручную, вы добавляете необходимые переменные-члены в производный класс диалогового окна самостоятельно, а также добавляете функции-члены для задания или получения этих значений.

Модальное диалоговое окно закрывается автоматически, когда пользователь нажимает кнопки "ОК" или "Отмена" или когда код вызывает EndDialog функцию-член.

При реализации бессерверного диалогового окна всегда переопределите OnCancel функцию-член и вызов DestroyWindow из нее. Не вызывайте базовый класс CDialog::OnCancel, так как он вызывает EndDialog, что делает диалоговое окно невидимым, но не уничтожает его. Для удаления thisтакже следует переопределить PostNcDestroy диалоговые окна без режима, так как безрежимные диалоговые окна обычно выделяются.new Модальные диалоговые окна обычно создаются на кадре и не требуют PostNcDestroy очистки.

Дополнительные сведения см. в CDialogдиалоговом окне.

Иерархия наследования

CObject

CCmdTarget

CWnd

CDialog

Требования

Заголовок: afxwin.h

CDialog::CDialog

Чтобы создать модальное диалоговое окно на основе ресурсов, вызовите любую общедоступную форму конструктора.

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

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

CDialog();

Параметры

lpszTemplateName
Содержит строку, завершающую значение NULL, которая является именем ресурса шаблона диалогового окна.

nIDTemplate
Содержит идентификатор ресурса шаблона диалогового окна.

pParentWnd
Указывает на объект окна родительского или владельца (типа CWnd), к которому принадлежит объект диалогового окна. Если значение NULL, родительское окно диалогового объекта устанавливается в главное окно приложения.

Замечания

Одна форма конструктора предоставляет доступ к ресурсу диалогового окна по имени шаблона. Другой конструктор предоставляет доступ по номеру идентификатора шаблона, как правило, с префиксом IDD_ (например, IDD_DIALOG1).

Чтобы создать модальное диалоговое окно из шаблона в памяти, сначала вызовите бессерверный, защищенный конструктор, а затем вызовите InitModalIndirect.

После создания модального диалогового окна с одним из приведенных выше методов вызовите DoModal.

Чтобы создать диалоговое окно без режима, используйте защищенную форму конструктора CDialog . Конструктор защищен, так как для реализации безрежимного диалогового окна необходимо наследовать собственный класс диалогового окна. Создание бессерверного диалогового окна — это двухэтапный процесс. Сначала вызовите конструктор; Затем вызовите функцию-член, Create чтобы создать диалоговое окно на основе ресурсов или вызвать CreateIndirect диалоговое окно из шаблона в памяти.

CDialog::Create

Вызов для Create создания диалогового окна без режима с помощью шаблона диалогового окна из ресурса.

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

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

Параметры

lpszTemplateName
Содержит строку, завершающую значение NULL, которая является именем ресурса шаблона диалогового окна.

pParentWnd
Указывает на родительский объект окна (типа CWnd), к которому принадлежит объект диалогового окна. Если значение NULL, родительское окно диалогового объекта устанавливается в главное окно приложения.

nIDTemplate
Содержит идентификатор ресурса шаблона диалогового окна.

Возвращаемое значение

Обе формы возвращают ненулевое значение, если создание диалогового окна и инициализация были успешными; в противном случае — 0.

Замечания

Можно поместить вызов Create в конструктор или вызвать его после вызова конструктора.

Две формы Create функции-члена предоставляются для доступа к ресурсу шаблона диалогового окна по имени шаблона или номеру идентификатора шаблона (например, IDD_DIALOG1).

Для любой формы передайте указатель на родительский объект окна. Если pParentWnd имеет значение NULL, диалоговое окно будет создано с родительским окном или окном владельца, заданным в главном окне приложения.

Функция-член Create возвращается сразу после создания диалогового окна.

Используйте стиль WS_VISIBLE в шаблоне диалогового окна, если диалоговое окно должно отображаться при создании родительского окна. В противном случае необходимо вызвать ShowWindow. Дополнительные стили диалоговых окон и их приложения см. в структуре DLGTEMPLATE в windows SDK и стилях окон в справочнике по MFC.

CWnd::DestroyWindow Используйте функцию для уничтожения диалогового окна, созданного функциейCreate.

Пример

void CMyDialog::OnMenuShowSimpleDialog()
{
   //m_pSimpleDialog initialized to NULL in the constructor of CMyDialog class
   m_pSimpleDlg = new CSimpleDlg();
   //Check if new succeeded and we got a valid pointer to a dialog object
   if (m_pSimpleDlg != NULL)
   {
      BOOL ret = m_pSimpleDlg->Create(IDD_SIMPLEDIALOG, this);

      if (!ret) //Create failed.
      {
         AfxMessageBox(_T("Error creating Dialog"));
      }

      m_pSimpleDlg->ShowWindow(SW_SHOW);
   }
   else
   {
      AfxMessageBox(_T("Error Creating Dialog Object"));
   }
}

CDialog::CreateIndirect

Вызовите эту функцию-член, чтобы создать бессерверное диалоговое окно из шаблона диалогового окна в памяти.

virtual BOOL CreateIndirect(
    LPCDLGTEMPLATE lpDialogTemplate,
    CWnd* pParentWnd = NULL,
    void* lpDialogInit = NULL);

virtual BOOL CreateIndirect(
    HGLOBAL hDialogTemplate,
    CWnd* pParentWnd = NULL);

Параметры

lpDialogTemplate
Указывает на память, содержащую шаблон диалогового окна, используемый для создания диалогового окна. Этот шаблон находится в виде структуры и управления DLGTEMPLATE , как описано в пакете SDK для Windows.

pParentWnd
Указывает на родительский объект окна диалогового окна (типа CWnd). Если значение NULL, родительское окно диалогового объекта устанавливается в главное окно приложения.

lpDialogInit
Указывает на ресурс DLGINIT.

hDialogTemplate
Содержит дескриптор глобальной памяти, содержащей шаблон диалогового окна. Этот шаблон находится в виде DLGTEMPLATE структуры и данных для каждого элемента управления в диалоговом окне.

Возвращаемое значение

Ненулевое значение, если диалоговое окно было создано и инициализировано успешно; в противном случае — 0.

Замечания

Функция-член CreateIndirect возвращается сразу после создания диалогового окна.

Используйте стиль WS_VISIBLE в шаблоне диалогового окна, если диалоговое окно должно отображаться при создании родительского окна. В противном случае необходимо вызвать ShowWindow , чтобы вызвать его появление. Дополнительные сведения о том, как можно указать другие стили диалоговых окон в шаблоне, см . в структуре DLGTEMPLATE в пакете SDK для Windows.

CWnd::DestroyWindow Используйте функцию для уничтожения диалогового окна, созданного функциейCreateIndirect.

Диалоговые окна, содержащие элементы ActiveX, требуют дополнительных сведений, предоставленных в ресурсе DLGINIT.

CDialog::D oModal

Вызовите эту функцию-член, чтобы вызвать модальное диалоговое окно и вернуть результат диалогового окна после завершения.

virtual INT_PTR DoModal();

Возвращаемое значение

Значение int , указывающее значение параметра nResult , переданного функции члена CDialog::EndDialog , которая используется для закрытия диалогового окна. Возвращаемое значение равно -1, если функция не могла создать диалоговое окно или IDABORT, если произошла другая ошибка, в этом случае окно вывода будет содержать сведения об ошибке из GetLastError.

Замечания

Эта функция-член обрабатывает все взаимодействие с пользователем, пока диалоговое окно активно. Это то, что делает диалоговое окно модальным; То есть пользователь не может взаимодействовать с другими окнами, пока диалоговое окно не будет закрыто.

Если пользователь щелкает один из pushbuttons в диалоговом окне, например ОК или Отмена, вызывается функция-член обработчика сообщений, например OnOK или OnCancel, чтобы попытаться закрыть диалоговое окно. Функция-член по умолчанию проверяет и обновляет данные диалогового окна и закрывает диалоговое окно с идентификатором результата, а функция-член по умолчанию OnOKOnCancel закрывает диалоговое окно с результатом IDCANCEL без проверки или обновления данных диалогового окна. Эти функции обработчика сообщений можно переопределить для изменения их поведения.

Примечание.

PreTranslateMessage теперь вызывается для модальной обработки сообщений диалогового окна.

Пример

void CMyDialog::OnMenuShowAboutDialog()
{
   // Construct the dialog box passing the
   // ID of the dialog template resource
   CDialog aboutDlg(IDD_ABOUTBOX);

   // Create and show the dialog box
   INT_PTR nRet = -1;
   nRet = aboutDlg.DoModal();

   // Handle the return value from DoModal
   switch (nRet)
   {
   case -1:
      AfxMessageBox(_T("Dialog box could not be created!"));
      break;
   case IDABORT:
      // Do something
      break;
   case IDOK:
      // Do something
      break;
   case IDCANCEL:
      // Do something
      break;
   default:
      // Do something
      break;
   };
}

CDialog::EndDialog

Вызовите эту функцию-член, чтобы завершить модальное диалоговое окно.

void EndDialog(int nResult);

Параметры

nResult
Содержит значение, возвращаемое из диалогового окна вызывающего объекта DoModal.

Замечания

Эта функция-член возвращает nResult в качестве возвращаемого DoModalзначения. При создании модального диалогового окна необходимо использовать EndDialog функцию для завершения обработки.

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

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

Пример

void CMyDialog::OnMenuShowSimpleModal()
{
   CSimpleDlg myDlg;
   INT_PTR nRet = myDlg.DoModal();

   if (nRet == IDOK || nRet == 5)
   {
      AfxMessageBox(_T("Dialog closed successfully"));
   }
}

 

void CSimpleDlg::OnRButtonUp(UINT nFlags, CPoint point)
{
   UNREFERENCED_PARAMETER(nFlags);
   // Do something

   int nRet = point.x; // Just any value would do!
   EndDialog(nRet);    // This value is returned by DoModal!

   // Do something

   return; // Dialog closed and DoModal returns only here!
}

CDialog::GetDefID

Вызовите функцию-член, GetDefID чтобы получить идентификатор элемента управления pushbutton по умолчанию для диалогового окна.

DWORD GetDefID() const;

Возвращаемое значение

32-разрядное значение ( DWORD). Если по умолчанию pushbutton имеет значение идентификатора, слово с высоким порядком содержит DC_HASDEFID, а слово с низким порядком содержит значение идентификатора. Если в pushbutton по умолчанию нет значения идентификатора, возвращаемое значение равно 0.

Замечания

Обычно это кнопка "ОК".

CDialog::GotoDlgCtrl

Перемещает фокус на указанный элемент управления в диалоговом окне.

void GotoDlgCtrl(CWnd* pWndCtrl);

Параметры

pWndCtrl
Определяет окно (элемент управления), которое требуется получить фокус.

Замечания

Чтобы получить указатель на элемент управления (дочернее окно), чтобы передать как pWndCtrl, вызовите CWnd::GetDlgItem функцию-член, которая возвращает указатель на объект CWnd .

Пример

См. пример CWnd ::GetDlgItem.

CDialog::InitModalIndirect

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

BOOL InitModalIndirect(
    LPCDLGTEMPLATE lpDialogTemplate,
    CWnd* pParentWnd = NULL,
    void* lpDialogInit = NULL);

    BOOL InitModalIndirect(
    HGLOBAL hDialogTemplate,
    CWnd* pParentWnd = NULL);

Параметры

lpDialogTemplate
Указывает на память, содержащую шаблон диалогового окна, используемый для создания диалогового окна. Этот шаблон находится в виде структуры и управления DLGTEMPLATE , как описано в пакете SDK для Windows.

hDialogTemplate
Содержит дескриптор глобальной памяти, содержащей шаблон диалогового окна. Этот шаблон находится в виде DLGTEMPLATE структуры и данных для каждого элемента управления в диалоговом окне.

pParentWnd
Указывает на объект окна родительского или владельца (типа CWnd), к которому принадлежит объект диалогового окна. Если значение NULL, родительское окно диалогового объекта устанавливается в главное окно приложения.

lpDialogInit
Указывает на ресурс DLGINIT.

Возвращаемое значение

Ненулевое значение, если объект диалогового окна был создан и инициализирован успешно; в противном случае — 0.

Замечания

Чтобы создать модальное диалоговое окно косвенно, сначала выделите глобальный блок памяти и заполните его шаблоном диалогового окна. Затем вызовите пустой CDialog конструктор, чтобы создать объект диалогового окна. Затем вызовите InitModalIndirect дескриптор в шаблон диалогового окна в памяти. Диалоговое окно Windows создается и отображается позже, когда вызывается функция-член DoModal .

Диалоговые окна, содержащие элементы ActiveX, требуют дополнительных сведений, предоставленных в ресурсе DLGINIT.

CDialog::MapDialogRect

Вызов для преобразования блоков диалогового окна прямоугольника в единицы экрана.

void MapDialogRect(LPRECT lpRect) const;

Параметры

lpRect
Указывает на структуру RECT или объект CRect , содержащий координаты диалогового окна для преобразования.

Замечания

Единицы диалогового окна определяются в соответствии с текущим базовым блоком диалогового окна, производным от средней ширины и высоты символов в шрифте, используемом для текста диалогового окна. Одна горизонтальная единица — одна четвертая единица блока базовой ширины диалогового окна, а одна вертикальная единица — одно восьмое из базовой высоты диалогового окна.

Функция GetDialogBaseUnits Windows возвращает сведения о размере для системного шрифта, но при использовании стиля DS_SETFONT в файле определения ресурсов можно указать другой шрифт для каждого диалогового окна. Функция MapDialogRect Windows использует соответствующий шрифт для этого диалогового окна.

Функция-член MapDialogRect заменяет блоки диалогового окна в lpRect на единицы экрана (пиксели), чтобы прямоугольник можно было использовать для создания диалогового окна или размещения элемента управления в поле.

CDialog::NextDlgCtrl

Переместите фокус на следующий элемент управления в диалоговом окне.

void NextDlgCtrl() const;

Замечания

Если фокус находится в последнем элементе управления в диалоговом окне, он переходит к первому элементу управления.

CDialog::OnCancel

Платформа вызывает этот метод, когда пользователь нажимает кнопку "Отмена " или нажимает клавишу ESC в модальном или режимном диалоговом окне.

virtual void OnCancel();

Замечания

Переопределите этот метод для выполнения действий (например, восстановления старых данных), когда пользователь закрывает диалоговое окно, нажав кнопку "Отмена " или нажав клавишу ESC. По умолчанию закрывается модальное диалоговое окно, вызывая EndDialog и вызывая DoModal возвращать IDCANCEL.

Если вы реализуете кнопку "Отмена" в диалоговом окне без режима, необходимо переопределить OnCancel метод и вызвать DestroyWindow внутри него. Не вызывайте метод базового класса, так как он вызывает EndDialog, что делает диалоговое окно невидимым, но не уничтожать его.

Примечание.

Этот метод нельзя переопределить при использовании CFileDialog объекта в программе, скомпилированной в Windows XP. Дополнительные сведения см. в CFileDialogразделе "Класс CFileDialog".

Пример

void CSimpleDlg::OnCancel()
{
   // TODO: Add extra cleanup here

   // Ensure that you reset all the values back to the
   // ones before modification. This handler is called
   // when the user doesn't want to save the changes.

   if (AfxMessageBox(_T("Are you sure you want to abort the changes?"),
                     MB_YESNO) == IDNO)
   {
      // Give the user a chance if he has unknowingly hit the
      // Cancel button. If he says No, return. Don't reset. If
      // Yes, go ahead and reset the values and close the dialog.
      return;
   }

   m_nMyValue = m_nPrevValue;
   m_pMyString = NULL;

   CDialog::OnCancel();
}

CDialog::OnInitDialog

Этот метод вызывается в ответ на WM_INITDIALOG сообщение.

virtual BOOL OnInitDialog();

Возвращаемое значение

Указывает, задано ли приложением входной фокус одним из элементов управления в диалоговом окне. Если OnInitDialog возвращается ненулевое значение, Windows задает фокус ввода в расположение по умолчанию, первый элемент управления в диалоговом окне. Приложение может возвращать значение 0 только в том случае, если он явно задал фокус ввода одному из элементов управления в диалоговом окне.

Замечания

Windows отправляет WM_INITDIALOG сообщение в диалоговое окно во время вызовов Create, CreateIndirect или DoModal , которые происходят непосредственно перед отображением диалогового окна.

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

Windows вызывает OnInitDialog функцию, используя стандартную глобальную процедуру диалогового окна, общую для всех диалоговых окон библиотеки классов Microsoft Foundation. Эта функция не вызывается с помощью карты сообщений, поэтому для этого метода не требуется запись карты сообщений.

Примечание.

Этот метод нельзя переопределить при использовании CFileDialog объекта в программе, скомпилированной в операционных системах Windows Vista или более поздних версий. Дополнительные сведения об изменениях CFileDialog в Windows Vista и более поздних версиях см . в классе CFileDialog.

Пример

BOOL CSimpleDlg::OnInitDialog()
{
   CDialog::OnInitDialog();

   // TODO: Add extra initialization here
   m_cMyEdit.SetWindowText(_T("My Name")); // Initialize control values
   m_cMyList.ShowWindow(SW_HIDE);          // Show or hide a control, etc.

   return TRUE; // return TRUE unless you set the focus to a control
   // EXCEPTION: OCX Property Pages should return FALSE
}

CDialog::OnOK

Вызывается, когда пользователь нажимает кнопку "ОК " (кнопка с идентификатором IDOK).

virtual void OnOK();

Замечания

Переопределите этот метод для выполнения действий при активации кнопки OK . Если диалоговое окно включает автоматическую проверку данных и обмен, реализация этого метода по умолчанию проверяет данные диалогового окна и обновляет соответствующие переменные в приложении.

Если вы реализуете кнопку "ОК" в бессерверном диалоговом окне, необходимо переопределить OnOK метод и вызвать DestroyWindow внутри него. Не вызывайте метод базового класса, так как он вызывает EndDialog , который делает диалоговое окно невидимым, но не уничтожает его.

Примечание.

Этот метод нельзя переопределить при использовании CFileDialog объекта в программе, скомпилированной в Windows XP. Дополнительные сведения см. в CFileDialogразделе "Класс CFileDialog".

Пример

void CSimpleDlg::OnOK()
{
   // TODO: Add extra validation here

   // Ensure that your UI got the necessary input
   // from the user before closing the dialog. The
   // default OnOK will close this.
   if (m_nMyValue == 0) // Is a particular field still empty?
   {
      // Inform the user that he can't close the dialog without
      // entering the necessary values and don't close the
      // dialog.
      AfxMessageBox(_T("Please enter a value for MyValue"));
      return;
   }

   CDialog::OnOK(); // This will close the dialog and DoModal will return.
}

CDialog::OnSetFont

Указывает шрифт элемента управления диалогового окна, который будет использоваться при рисовании текста.

Virtual void OnSetFont(CFont* pFont);

Параметры

pFont
[in] Указывает указатель на шрифт, который будет использоваться в качестве шрифта по умолчанию для всех элементов управления в этом диалоговом окне.

Замечания

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

Редактор диалогов обычно задает шрифт диалогового окна как часть ресурса шаблона диалогового окна.

Примечание.

Этот метод нельзя переопределить при использовании CFileDialog объекта в программе, скомпилированной в операционных системах Windows Vista или более поздних версий. Дополнительные сведения об изменениях CFileDialog в Windows Vista и более поздних версиях см . в классе CFileDialog.

CDialog::P revDlgCtrl

Задает фокус на предыдущий элемент управления в диалоговом окне.

void PrevDlgCtrl() const;

Замечания

Если фокус находится в первом элементе управления в диалоговом окне, он перемещается к последнему элементу управления в поле.

CDialog::SetDefID

Изменяет элемент управления pushbutton по умолчанию для диалогового окна.

void SetDefID(UINT nID);

Параметры

Nid
Указывает идентификатор элемента управления pushbutton, который станет значением по умолчанию.

CDialog::SetHelpID

Задает идентификатор справки с учетом контекста для диалогового окна.

void SetHelpID(UINT nIDR);

Параметры

nIDR
Указывает идентификатор справки с учетом контекста.

См. также

Пример DLGCBR32 MFC
Пример DLGTEMPL MFC
Класс CWnd
Диаграмма иерархии