Переопределить кнопку OnCancel в MFC / Visual C ++ - PullRequest
2 голосов
/ 23 марта 2012

У меня есть диалоговое окно модели.Я переопределил функцию OnCancel, чтобы остановить неожиданный выход, нажав кнопку ESC.Но это вызвало новую проблему.Я не могу закрыть приложение с помощью кнопки закрытия (x).Моя реализация функции:

void MyDlg::OnCancel()
{
}

1 Ответ

6 голосов
/ 23 марта 2012

Закрытие диалога фактически отменяет его.Поскольку вы отключили функцию close в обработчике OnCancel, ничего не произойдет.

Чтобы отключить только ESC, вам необходимо предварительно обработать сообщения клавиатуры:

BOOL CYourDlg::PreTranslateMessage(MSG* pMsg)
{
   switch ( pMsg->message )
   {
       case WM_KEYDOWN:

           switch( pMsg->wParam )
           {
               case VK_ESCAPE:
               case VK_CANCEL: return true;
           }
           break;
   }

   return CDialog::PreTranslateMessage(pMsg);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...