2009-06-16 6 views
3

Как остановить закрытие приложения mfc диалогового окна нажатием ESC (Escape key). После выполнения моего приложения, если я нажимаю клавишу ESC, окно закрывается. Как это можно остановить? Я использую VC++ 6.0.Как остановить приложение приложения mfc от закрытия нажатием ESC

ответ

2

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

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

Проверьте код this.

Для примера PreTranslateMessage см this

+0

OnClose (назначенный обработчик WM_CLOSE) не вызывается нажатием клавиши Esc. –

4

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

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

Override OnCancel и не вызываете реализацию базового класса.

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

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

Смежные вопросы