Как остановить закрытие приложения mfc при нажатии клавиши ESC

Ответов: 3


4

Вы можете переопределить событие OnCancel и только двигаться вперед с помощью вызова OnCancel, если IDCANCEL - это сфокусированный элемент.

void CMyDialog::OnCancel(void)
{
   if(GetDlgItem(IDCANCEL) ==  GetFocus())
    {  
        CDialog::OnCancel();
        return;
    }
}

2

Существуют разные способы сделать это. Ты можешь:

  1. Создайте обработчик OnCancel и сделайте все, что хотите, с уведомлением «Отмена»
  2. Вы можете обрабатывать событие OnClose и делать все, что хотите.
  3. Вы можете переопределить PreTranslateMessage и проверить там клавишу Esc и делать все, что хотите.

Проверьте это для примеров кода.

Для примера PreTranslateMessage см. Это


1

Переопределите OnCancel и не вызывайте реализацию базового класса.

Не приближайтесь к OnClose, если вы не знаете, что делаете, вы рискуете нарушить поведение для Alt-F4 и кнопки X.

Я всегда считал PreTranslateMessage такими вещами, как использование термоядерного оружия для взлома ореха, но если он плавает на вашей лодке ...

зрительно-C ++, тк, модальной диалог,
Похожие вопросы
Яндекс.Метрика