如何使ESC键对于对话框无效?

完成要求的功能可以有两种方法:

  • 重载虚函数 PreTranslateMessage(MSG *pMsg)并做如下处理:

BOOL CEscDlg::PreTranslateMessage(MSG* pMsg)
{
  // TODO: Add your specialized code here and/or call the base class
  int nVirtKey;
  if(pMsg->message==WM_KEYDOWN)
  {
     nVirtKey=int(pMsg->wParam);
     if(nVirtKey==VK_ESCAPE) return TRUE;
   }
  return CDialog::PreTranslateMessage(pMsg);
}

  • 也可以重载OnCancel()函数。这个我在这里就不哆嗦了。