#c #mfc #dialog #childwindow #defaultbutton
#c #mfc #диалог #дочернее окно #defaultbutton
Вопрос:
У меня есть дочерний диалог, который я создал как новый диалог в редакторе ресурсов. Затем я использовал статический элемент управления в родительском диалоговом окне в качестве заполнителя. Дочерний элемент управления отображается там, где владелец места использует следующий код:
CRect rect;
m_optionPanelPlaceholder.GetWindowRect(amp;rect); // In screen coordinates
ScreenToClient(amp;rect);
m_optionPanelPlaceholder.ShowWindow(SW_HIDE);
optionsDialogPanel_ = new OptionsDialogPanel(settings_);
// Call Create() explicitly to ensure the HWND is created.
optionsDialogPanel_->Create(OptionsDialogPanel::IDD, this);
// Set the window position to be where the placeholder was.
optionsDialogPanel_->SetWindowPos
(
NULL,
rect.left,
rect.top,
rect.Width(),
rect.Height(),
SWP_SHOWWINDOW
);
Все это работает нормально. В моем дочернем диалоговом окне есть кнопка, которая установлена в качестве кнопки по умолчанию. Нажатие кнопки с помощью мыши выполняет желаемое действие. Однако я хочу просто нажать клавишу Ввода в любом из текстовых полей редактирования в дочернем диалоговом окне и выполнить действие кнопки по умолчанию. Однако это не работает; как я могу это сделать?
Ответ №1:
Убедитесь, что для вашей кнопки установлен идентификатор IDOK, а не какой-то IDC_ *. MFC позаботится обо всем остальном!
Ответ №2:
При нажатии кнопки ввода в диалоговом окне вызывается метод Parent::OnOK . Таким образом, вы, вероятно, можете вызвать Child::OnOK внутри метода Parent::OnOK.
Спасибо.