我有一个模型对话框。我重写了OnCancel函数,以通过按ESC按钮停止意外退出。但这引起了新的问题。我无法使用关闭(x)按钮关闭该应用程序。我的功能实现是:

void MyDlg::OnCancel()
{
}

最佳答案

关闭对话框可以将其取消。由于您已在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);
}

10-08 08:57