我是一个VC的初学者,遇到一个你们高手看来很简单的问题,如何捕捉关闭程序的关闭按钮的信息,比如说在用户按下关闭按钮的时候,我想出现一个提示框来问用户是否确认关闭程序。希望高手能给我一个详细的回答!万分感谢!

解决方案 »

  1.   


    void CMainFrame::OnSysCommand(UINT nID, LPARAM lParam) 
    {
    // TODO: Add your message handler code here and/or call default
    if(nID==SC_CLOSE){
    MessageBox("aa");
    //做爱做的事
    }
    CMDIFrameWnd::OnSysCommand(nID, lParam);
    }
      

  2.   

    在视图类中使用类向导建立消息WM_DESTROY的响应函数OnDestroy()添加代码MessageBox(....)......
      

  3.   

    非常抱歉,我没有说清楚我的问题,我在CFormView里用了一些编辑框,用户按下关闭按钮的时候,我想问用户是否保存改变的数据,然后再退出程序。我应该在哪个类里添加代码呢?怎么添?
      

  4.   

    非常抱歉,我没有说清楚我的问题,我在CFormView里用了一些编辑框,用户按下关闭按钮的时候,我想问用户是否保存改变的数据,然后再退出程序。我在 CMainFrame::OnAppExt()里用GetActiveView,但是GetActiveView返回的是CView,
    我把它强制转化为CMyFormView,编译又说CMyFormView是未定义标识符,我把MyFormView.h包含进来,结果又出现一大堆莫名其妙的错误(可能是重复定义?)
    我在CMyFormView定义了一个m_Changed变量来记录所用编辑框是否改变数据了。我想在响应关闭按钮的时候,if(m_Chang) CMyFormView.OnRecordSave(),然后再退出程序。
      

  5.   

    在视图类中使用类向导建立消息WM_DESTROY的响应函数OnDestroy(),
    在这个函数中的CView::OnDestroy();之前添加代码MessageBox()
      

  6.   

    我在视图类中添加了消息WM_DESTROY的响应函数OnDestroy(),其中添加了代码MessageBox(),但是按下关闭按钮,仍然没有激活MessageBox()就直接退出了程序!!!(申明一下,我用的是单文档的CFormView派生的视图类CMyFormView,只有程序主框架上才有关闭按钮)
    我能够在视图类里响应主框架上的关闭按钮吗?怎么办?
      

  7.   

    谢谢各位大侠,我已经解决我的问题了,我添加了消息响应函数CMainFrame::OnClose,在MainFrame.cpp中添加了include "MyView.h",在MyView.h中又添加了include "MyDoc.h",这样修改后,CMainFrame::OnClose中调用GetActiveView(),再强制转化为CMyView,就可以调用CMyView中的保存函数了!