MFC: Как заставить работать кнопку по умолчанию дочернего диалога? - PullRequest
0 голосов
/ 01 октября 2011

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

CRect rect;
m_optionPanelPlaceholder.GetWindowRect(&rect); // In screen coordinates
ScreenToClient(&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
    );

Это все отлично работает. В моем дочернем диалоге есть кнопка, которая установлена ​​как кнопка по умолчанию. Нажатие на кнопку с мышью принимает желаемое действие. Однако я хочу просто нажать клавишу Enter, находясь в любом из текстовых полей редактирования в дочернем диалоге, и выполнить действие кнопки по умолчанию. Однако это не работает; как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 16 ноября 2011

Убедитесь, что для вашей кнопки установлен ID IDOK , а не IDC_ *. МФЦ позаботится обо всем остальном!

0 голосов
/ 05 октября 2011

При нажатии кнопки ввода в диалоговом окне вызывается метод Parent :: OnOK.Поэтому вы, вероятно, можете вызвать метод Child :: OnOK внутри метода Parent :: OnOK.

Спасибо.

...