鼠标点击对话框右上角的×的时候,有时候,在有些状态下不想让对话框关闭。
不知道这个应该怎么做
我试着重载了OnDestroy消息函数,但发现不行

解决方案 »

  1.   

    拦截OnSysCommand消息,在里面测试你想要的ID,然后做你要做的事
      

  2.   

    WM_CLOSE对这个消息进行处理就可以了~~
      

  3.   

    楼主这种情况可以重载WM_CLOSE消息的,它比WM_DESTROY处理的要早

    但最好是在不允许用户关闭对话框的状态下把关闭按钮disable掉,不然用户会疑惑:
    CMenu*   pSysMenu   =   GetSystemMenu(FALSE);   
      if   (pSysMenu   !=   NULL)   
      {
         pSysMenu->EnableMenuItem(SC_CLOSE,   MF_BYCOMMAND   |   MF_DISABLED   |   MF_GRAYED);   
      }   
      

  4.   

    caixingxin,今天坛子好像有问题,我登录成功会还是不能发贴,而且我也看到你刚才回复这个贴的两个帖子了。
      

  5.   

    忘记说了,你这里的ID是SC_CLOSE
      

  6.   

    可以拦截OnSysCommand消息, 判断nID 是否是SC_CLOSE
    但重载WM_CLOSE消息更简单
      

  7.   

    在类名上点右建->Add Windows Message Handle->添加WM_CLOSE消息(注意:对话框右下角的Filter for Mesage available to处选择Windows)
    ->Edit Existing
    这样就可以处理WM_CLOSE消息了,如下所示://点击右上角的X,在关闭前询问;
    void CFiveCannon5Dlg::OnClose() 
    {
    if(MessageBox("真的要退出吗?","友情提示:",MB_OKCANCEL|MB_ICONQUESTION)==IDOK)  
    CDialog::OnClose();
    }