天天看點

MFC非模态對話框中屏蔽ESC鍵

    個人的程式設計經驗認為:對于非模态對話框,按下ESC鍵和點選紅叉都會響應OnCancel()函數,而不會去響應OnClose()函數。

    我們都知道,如果想屏蔽Enter鍵,隻須重寫OnOK()函數即可(重寫成空函數即可)。但是屏蔽ESC鍵卻不能這樣做,原因很

    明确:這樣也會屏蔽紅叉的。下面提供一種屏蔽ESC鍵的方法,個人認為比較有用:

    即重寫PreTranslateMessage()函數:

    

    BOOL CToolDlg::PreTranslateMessage(MSG* pMsg)

    {  

      // TODO: 在此添加專用代碼和/或調用基類  

      if(pMsg->message == WM_KEYDOWN)  

        {    

            switch(pMsg->wParam)

              {    case VK_ESCAPE: //ESC     return TRUE;    }  

        }

         return CDialogEx::PreTranslateMessage(pMsg);

     }