1、如题。
2、顺便问另一问题:如何定义一个不可创建实例的类?谢谢

解决方案 »

  1.   

    重载CDocument类的OnSaveDocument(LPCTSTR lpszPathName)函数,去掉其中的return CDocument::OnSaveDocument(lpszPathName);这行代码,直接返回
    return TRUE;
      

  2.   

    先设BOOL量MODIGYFLG为TRUE在文档中保存数据。但是不要用AfxmessageBox不就好了,
      

  3.   

    expert.csdn.net/Expert/topic/1094/1094407.xml?temp=8.491153E-02
      

  4.   

    1、更改基础类的virtual函数CWinApp::OnFileSave();
    2、在定义的类中声明纯虚拟函数,在函数声明后加"=0",拥有纯虚拟函数的类便是抽象类,不可实作任何具体对象!
      

  5.   

    Janejacky:在CWinApp::OnFileSave()中怎样保存文档呢?好像找不到可用的函数啊,我用SaveDocument(),它一样要出那个提示框!
      

  6.   

    重载Doc类的CanCloseFrame()函数,参照如下:
    BOOL CTestDoc::CanCloseFrame(CFrameWnd* pFrame) 
    {
    // TODO: Add your specialized code here and/or call the base class
    if( IsModified() )
    {
    OnSaveDocument(this->GetPathName());
    SetModifiedFlag(FALSE);
    } return CDocument::CanCloseFrame(pFrame);
    }
      

  7.   

    在Doc类的OnCloseDocument()中直接调用DoSave()就可以了。
      

  8.   

    重载CDocument::SaveModified,什么都不做直接返回TRUE就行。如何定义一个不可创建实例的类?把构造函数定义为private就行。
      

  9.   

    void CMainFrame::OnWindowCloseAll() 
    {
    CWinApp* pApp = AfxGetApp();
    ASSERT_VALID( pApp );
    CDocTemplate* pTemplate =pApp->GetDocTemplate();
    ASSERT_VALID( pTemplate );
    ASSERT_KINDOF( CDocTemplate, pTemplate );
    POSITION posDocument =pTemplate->GetFirstDocPosition();
    while( posDocument != NULL )
    {
    // 4 - For each document object...
    CDocument* pDoc =
    pTemplate->GetNextDoc( posDocument );
    ASSERT_VALID( pDoc );
    ASSERT_KINDOF( CDocument, pDoc ); // 5 - Save the document if necessary
    // (without prompting the user)
    if( pDoc->IsModified() )
    pDoc->DoFileSave();
    }
    } // 6 - Now that all documents are saved, close them !
    pApp->CloseAllDocuments( FALSE );
    }
      

  10.   

    1.SetModifiedFlag(FALSE);
    2.class A
    {
    ...
    void a()=0;
    }
      

  11.   

    谢谢。解决了。用DoFileSave()而不用DoSave()(这个仍然会提示)