昨天有人提过了这个问题,当时没在意,今天我也遇到了同样的问题,特向各位大侠请教!问题:如何避免按下ESC,对话框就关闭!也即我要屏蔽掉ESC键的关闭对话框的默认设置!

解决方案 »

  1.   

    重载对话框的PreTranslateMesage消息,return FALSE;
    就行了
      

  2.   

    重载CDialog::OnCancel()函数!!!
      

  3.   

    BOOL CTestDlg::PreTranslateMessage(MSG* pMsg) 
    {
    if (pMsg->message==WM_KEYDOWN)
    {
    if (pMsg->wParam==VK_ESCAPE)
    return FALSE;
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
      

  4.   

    重载虚函数:OnCancel()
    class CAboutDlg : public CDialog
    {
    ...
    protected:
    virtual void OnCancel();
    ...
    }
    void CAboutDlg::OnCancel() 
    {
    // TODO: Add extra cleanup here
    //Do nothing!
    }
      

  5.   

    重载OnCancle()会使所有ID为IDCANCEL的按钮不起作用,因此可能不是个根本的解决办法.重载PreTranlateMessage()是根本的解决方法,便楼上所提的方法太粗暴了,所有的快捷键都消失了.BOOL CXXXDialog::PreTranslateMessage(MSG* pMsg)
    {
        if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_ESCAPE)
           return TRUE;
        return CDialog::PreTranslateMessage(pMsg);
    }我想应该是可以了,没有测试,我是用SDK的,MFC不能太擅长.
      

  6.   

    同意重载PreTranlateMessage(),昨天晚上这个时候我就用了这个!
      

  7.   

    重载OnClose()函数,让它什么也不做.
      

  8.   

    重载OnCancel()函数!!!
    删除里面的所有内容,
    重载OnClose()函数会使你的窗口关闭不了
      

  9.   

    1〉
    BOOL CTestDlg::PreTranslateMessage(MSG* pMsg) 
    {
    if (pMsg->message==WM_KEYDOWN)
    {
    if (pMsg->wParam==VK_ESCAPE)
    return FALSE;
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
    2〉重载onCancel()函数
    具体的实现过程可以参考<vc++技术内幕第4版>106页不过推荐用地一种方法,因为正如Zark(金陵五月) (  ) 说的那样
      

  10.   

    1)
    BOOL CTestDlg::PreTranslateMessage(MSG* pMsg) 
    {
    if (pMsg->message==WM_KEYDOWN)
    {
    if (pMsg->wParam==VK_ESCAPE)
    return FALSE;
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
    2)重载OnCancel()函数
    具体参见<vc++技术内幕第4版〉106页
    推荐用第一种方法
      

  11.   

    1)
    BOOL CTestDlg::PreTranslateMessage(MSG* pMsg) 
    {
    if (pMsg->message==WM_KEYDOWN)
    {
    if (pMsg->wParam==VK_ESCAPE)
    return FALSE;
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
    2)重载OnCancel()函数
    具体参见<vc++技术内幕第4版〉106页
    推荐用第一种方法
      

  12.   

    我以前用重载OnCancel()函数,方便
    但是重载PreTranslateMeesage()对大的程序维护有利