如果想自己改写关闭顺序如何改写?

解决方案 »

  1.   

    WM_CLOSE 消息.你可以重载MainFrame的WM_CLOSE消息
      

  2.   

    Ctrl+W, 打开类向导,选择到CMainFrame类,
    找到WM_CLOSE,双击产生函数OnClose(),
    编辑此函数,即能控制关闭时的操作.
      

  3.   

    这问题太简单了吧,WM_CLOSE消息
      

  4.   

    WM_CLOSE 呀, 在ClassWizard中添加dialog的OnClose函数   然后编辑它
      

  5.   

    WM_CLOSE如果是SDK的程序,就自己处理WM_CLOSE的消息吧
    如果是MFC,CLASSWIZARD里面可以添加的,^_^
      

  6.   

    会发送WM_SYSCOMMAND消息
    void CMainFrame::OnSysCommand(UINT nID, LPARAM lParam) 
    {
    // TODO: Add your message handler code here and/or call default

    if(nID == SC_CLOSE) 
    {
    //do somthing;
    }
    CFrameWnd::OnSysCommand(nID, lParam);
    }
      

  7.   

    如果是基于对话框的,会调用默认生成的 cancel按钮的响应,实际上是调用wm_close的消息处理函数!  不过也如楼上所说的,会调用WM_SYSCOMMAND——内部实现,应该还是归于wm_close消息处理,不过可以在WM_SYSCOMMAND消息发送时就拦截!
      

  8.   

    WM_SYSCOMMAND先收到,之后是WM_CLOSE收到
    你可以在这俩个消息中改写。
      

  9.   

    To destroy a window, an application must use the DestroyWindow function. 
    for example
    void CModeless::OnOK() 

       if (!UpdateData(TRUE)) 
       {
          TRACE0("UpdateData failed during dialog termination\n");
          // The UpdateData routine will set focus to correct item
          return;
       }
       DestroyWindow();
    }send WM_CLOSE is also OK。
      

  10.   

    我觉得最好的方法是调用API,代码可以如下:
    void Disable()
    {
    int MyMenu ;
    MyMenu = GetSystemMenu(Me.hwnd, 0);
    RemoveMenu (MyMenu, SC_CLOSE, MF_BYCOMMAND);//SC_CLOSE代表X关闭的命令
    }
      

  11.   

    Sorry,刚才那个是如何使X 失效,他调用的是OnClose(),你只需重载WM_CLOSE即可