Функция-член OnInitDialog()
вызывается платформой MFC при обработке сообщения WM_INITDIALOG
.
Цель этой функции-члена - предоставить место для выполнения любой специальной инициализации диалогового окна.элементы управления и интерфейс.
Одним из событий, которые можно выполнить в методе OnInitDialog()
, является установка фокуса на один из элементов управления в диалоговом окне.Это действие позволяет программисту решить, какой элемент управления (кнопка, окно редактирования, поле со списком и т. Д.), Отображаемый в диалоговом окне, должен иметь фокус в первую очередь.
Или программист может просто позволить структуре MFC принять это решениедля них.
Если программист устанавливает фокус на определенный элемент управления, метод OnInitDialog()
должен вернуть FALSE
, чтобы MFC Runtime знал, что фокус уже установлен.
Если программист не устанавливает фокус на конкретный элемент управления, метод OnInitDialog()
должен вернуть TRUE
, чтобы MFC Runtime знал, что ему нужно установить фокус.
Это то, что комментарии вOnInitDialog()
Скелет метода, созданный шаблоном MFC, указывает, как в примере кода из https://technet.microsoft.com/en-us/windows/fwz35s59(v=vs.60)
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
}
В статье MSDN CPropertySheet :: OnInitDialog есть более полное объяснение возвращаемого значения:
Указывает, установило ли приложение фокус ввода для одного из элементов управления в окне свойств.Если OnInitDialog возвращает ненулевое значение, Windows устанавливает фокус ввода на первый элемент управления в окне свойств.Приложение может вернуть 0, только если оно явно установило фокус ввода на один из элементов управления в окне свойств.