По умолчанию клавиша Return закрывает диалоговое окно MFC. Это потому, что клавиша Return вызывает функцию CDialog
OnOK()
. Вы можете переопределить эту функцию, чтобы перехватить клавишу Return . Я получил основную идею из этой статьи (см. Метод 3 в конце).
Сначала убедитесь, что вы добавили члена для элемента управления редактирования в диалоговое окно, используя Class Wizard , например:
CEdit m_editFind;
Далее вы можете добавить следующий прототип функции в файл заголовка вашего диалога:
protected:
virtual void OnOK();
Затем вы можете добавить следующую реализацию в файл cpp вашего диалога:
void CMyDialog::OnOK()
{
if(GetFocus() == &m_editFind)
{
// TODO: Add your handling of the Return key here.
TRACE0("Return key in edit control pressed\n");
// Call `return` to leave the dialog open.
return;
}
// Default behavior: Close the dialog.
CDialog::OnOK();
}
Обратите внимание: если в вашем диалоге есть кнопка OK с идентификатором IDOK
, она также будет вызывать OnOK()
.
Если это вызывает у вас какие-либо проблемы, вам нужно перенаправить кнопку на другую функцию-обработчик.
Как это сделать, также описано в Методе 3 из в статье , о которой я упоминал выше.