再添加一个BUTTON IDXXX 不要设置成IDOK,原来的“OK”BUTTON 的属性设置成‘不可见’,不可用即可了,
在 IDXXX 的事件中添加原ONOK的内容
这是最笨,最简单的方法了

解决方案 »

  1.   

    重载PreTranslateMessage()函数
    加上自己对WM_KEYDOWN的处理
      

  2.   

    到rc文件中查找VK_ESCAPE之类的信息,干掉!
      

  3.   

    好好看书吧!Easy.
    你知道类中的虚函数干什么用的?
    在MFC中,MFC将许多消息和事件用相应的
    虚函数处理.如果你想改变特定的消息或
    事件的特性, 你需要重载对应的虚函数就可.
    所以,你需要重载OnOK(),OnCancel()两个虚函数
    就可以改变特性.CDialog::OnOK()和CDialog::OnCancel()
    就是退出程序,不调用基类的函数就不会退出了.
      

  4.   

    我正好在做一软件,刚好用到:
    BOOL CWqClientDlg::PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class
    if (pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN)
    {
    //OnSaybutton();
    return TRUE;
    }
    if (pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_ESCAPE)
    {
    return TRUE;
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
      

  5.   

    longx的方法最规范, 实现也简单.
      

  6.   

    你只要重载对话框类的OnOk()和OnCancel()方法就可以了。当你按OK或ESC键时,MFC会分别调用这两个方法。CDialog中这两个方法的的缺省行为将调用EndDialog结束对话框。所以你只要重载这两个方法,其中什么代码都不用写就可以了。
      

  7.   

    你按Enter和ESC时,MFC也会自动调这两个方法
      

  8.   

    longx说得很对,就是这样:你在对话框类的头文件中加入这两行:
    //overrides
    protected:
    virtual void OnOK(){};
    virtual void OnCancel(){};