你是不是重载了OnClose()函数?如果没有,重载一下试一试。

解决方案 »

  1.   

    是这样的,不如重载PreTranslateMessage函数,在这个函数里边处理Esc和Enter键
      

  2.   

    真是天长地久呀!
    给你两种方法:
    1.这种仅仅能屏蔽Enter
      afx_msg LRESULT OnGetDefID(WPARAM wp, LPARAM lp);
    ON_MESSAGE(DM_GETDEFID,OnGetDefID)
             LRESULT CTestDlg::OnGetDefID(WPARAM wp, LPARAM lp) 
             {
                 return MAKELONG(0,DC_HASDEFID); 
              } 
       这是MSDN提供的
    2.重载OnCmdMsg
      OnCmdMsg的pExtra在按下X和按下ENTER和按下ESC的时候不一样
      由于我不知道pExtra里面放的是什么东东,所以这种方法还不完整
      

  3.   

    不能重载PreTranslateMessage
    这个消息不重这里过,包括ProcMessage也不行
      

  4.   

    PreTranslateMessage处理键盘消息是可以的if(Msg->message == WM_KEYDOWN && Msg->wParam == VK_RETURN)
        
        return;这样就避免按回车退出对话框了
      

  5.   

    好象,ENTER在对话框中经过处理的,系统会用DM_GETDEFID获取DEFAULTBUTTON
    取到了,执行DEFAULTBUTTON的OnClick,取不到,但是又存在Button,不做任何操作
    但是,如果没有Button,系统会Close掉对话框!不过PreTranslateMessage
      

  6.   

    请处理OnClose程序。在classWinzard中选择