程序已经开发完成,却发现了这样一个bug:在没有任何按钮被选中的话,按enter或者esc程序就会退出.
跟踪enter发现退出程序是从对话框的执行文件中的DoDataExchange函数开始的,而按esc程序的运行踪迹便没有了,不知道怎么查啊.你遇到过同样的问题吗?

解决方案 »

  1.   

    这是向导对话框默认的功能,想要屏蔽可以:
    //屏蔽ESC、ENTER等键盘消息
    BOOL CxxDlg::PreTranslateMessage(MSG* pMsg) 
    {
    if(pMsg->message==WM_KEYDOWN && (pMsg->wParam==VK_RETURN || pMsg->wParam==VK_ESCAPE) ){
    return TRUE;
    } return CDialog::PreTranslateMessage(pMsg);
    }
      

  2.   

    我以为是啥呢。这是正常现象,把OnOK和OnCancel中的内容屏蔽就好了
      

  3.   

    void CProject4Dlg::OnOK() 
    {
    //  CDialog::OnOK();
    }
    void CProject4Dlg::OnCancel() 
    {
    //  CDialog::OnCancel();
    }
    这样最简单
      

  4.   

    seu07201213
    是专门负责回答问题的吗?怎么我提的问题好像他都回答过?感谢!
    ddlddy的方法我觉得行不通,至少以我的目前的水平,我认为是这样的.其他兄弟们的思路其实也是跟我的一样,但是我其实苦于的不是别的正是不知如何屏遮enter和esc.
    既然seu07201213给出了方法,我就试着分析一下吧,希望想刨根问底的同学一起研究.顾名猜意,PreTranslateMessage是在处理消息之前进行一些准备的函数,那么我们在这里就可以捕获一些我们自己不愿意发给程序的消息,我就只能解释这么多,进一步往深了说就是windows处理消息的机制了,所以也不怎么好说了,如果你能一语道破天机,你不防发表一下你的看法.