MFC: Как заставить кнопку дочернего диалога по умолчанию работать?

#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.

Спасибо.