例如,我有一个Edit控件,如果在Edit中输入“不关闭窗口”,则按下OK时该窗口还显示,且窗口上所有控件的状态都和按下OK键前一样,可以吗?

解决方案 »

  1.   

    可以,双击OK按钮生成对按钮的响应-在OnOK里面判断CEdit控件的内容,只要你不调用CDialog::OnOK(),它就不会关闭。
      

  2.   

    重载OnOK()
    在函数中进行如下判断:
    if(满足不关闭的条件)
        return;
    else
       CDialog::OnOK(),
      

  3.   

    上面介绍的一种常用的方法。另外一种方法则是,拦截该窗口的消息。可以通过重载DefWinProc函数,在得到IDOK的时候判断一下EditBox中的内容,如果满足不关闭条件,则更改返回消息。