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

return CDialog::PreTranslateMessage(pMsg);
}

解决方案 »

  1.   

    重载
    CDialog::OnCancel()
    {
    return;
    }
      

  2.   

    请关注:
    http://www.csdn.net/Expert/topic/447/447713.shtm
      

  3.   

    建议生成系统托盘图表,将oncancel重载,在里面设置为将对话框隐藏。
    这样感觉会很爽,呵呵……
      

  4.   

    由于Esc键可以触发对OnCancel函数的调用,它将导致控制从对话框中退出,
    并且DoModal的返回值为IDCANCEL。解决方法:
    CMyDialog::OnCancel()
    {
    return;
    }
    同时更改Cancel按钮的ID值,如IDC_MYCANCEL。然后在ClassWizard中建立
    消息映射,如OnClickedMyCancel();
    CMyDialog::OnClickedMyCancel()
    {
      return CDialog::OnCancel;
    }
      

  5.   

    老大,这是CDialog的一个虚函数,建议重载它
    void CPipe4Dlg::OnCancel() 
    {
    // TODO: Add extra cleanup here

    // CDialog::OnCancel();
    }
    关闭时用 CDialog::OnCancel();
    有关详细内容,请见vc++技术内幕2.0 王国印译