Класс 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
диалоговом окне.
Иерархия наследования
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, чтобы попытаться закрыть диалоговое окно. Функция-член по умолчанию проверяет и обновляет данные диалогового окна и закрывает диалоговое окно с идентификатором результата, а функция-член по умолчанию OnOK
OnCancel
закрывает диалоговое окно с результатом 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
Диаграмма иерархии