我想在子窗口关闭时询问用户是否保存文件,我在子框架的OnClose中很容易就实现了。但当直接关闭主框架时,子框架的OnClose函数并没有被调用,而且在主框架的OnClose中直接调用子框架的OnClose却会出错(此时已经不能阻止关闭过程了)。请问我该怎么办?注意:我没有使用文档-视模式。

解决方案 »

  1.   

    在主框架的OnClose中判断子窗口是否打开,如果打开,将其关闭,不要直接调用子窗口的OnClose函数,可以在子窗口中另写一个方法实现其关闭。
    (此时已经不能阻止关闭过程了)? 应该是可以的,直接RETURN,程序就不会关闭。
      

  2.   

    而且在主框架的OnClose中直接调用子框架的OnClose却会出错(此时已经不能阻止关闭过程了)。///////////////////////////////////////////////////////////////
    请问你是如何做的呢??
      

  3.   

    void CMainFrame::OnClose() 
    {
    // TODO: Add your message handler code here and/or call default
        MessageBox("CMainFrame::OnClose()", "Close");

        CMDIChildWnd *pActiveWnd = MDIGetActive();
        while( NULL != pActiveWnd ){
            pActiveWnd->SendMessage(WM_CLOSE);
            pActiveWnd = MDIGetActive();
        } CMDIFrameWnd::OnClose();
    }
      

  4.   

    我是要判断所有的子窗口能否关闭,如果有一个子窗口不能关闭则取消关闭过程。
    如果直接在主框架中return,即不调用CMDIFrameWnd::OnClose();的话,此时的确程序没有关闭,但子窗口的窗口句柄已经为NULL了。我说的错误就是指这个错误。
      

  5.   

    qiwei(破框儿) 的程序应该可以用吧,你先试试
      

  6.   

    1.直接在主框架中return,2.即不调用CMDIFrameWnd::OnClose();的话////////////////////////////////////////////////////////////
    注意:1和2这是两码事,不可等同!!