WEB开发网
开发学院软件开发VC 深入浅出MFC“文档/视图”架构(3)――文档 阅读

深入浅出MFC“文档/视图”架构(3)――文档

 2009-02-11 20:00:34 来源:WEB开发网   
核心提示: 打开文档的函数CDocument::OnOpenDocument完成的工作包括如下几步:(1)打开文件对象;(2)调用DeleteDontents();(3)建立与此文件对象相关联的CArchive对象;(4)调用应用程序文档对象的Serialize()函数;(5)关闭CArchive对象

打开文档的函数CDocument::OnOpenDocument完成的工作包括如下几步:

(1)打开文件对象;

(2)调用DeleteDontents();

(3)建立与此文件对象相关联的CArchive对象;

(4)调用应用程序文档对象的Serialize()函数;

(5)关闭CArchive对象、文件对象。

BOOL CDocument::OnSaveDocument(LPCTSTR lpszPathName)
{
    CFileException fe;
    CFile* pFile = NULL;
    pFile = GetFile(lpszPathName, CFile::modeCreate |
       CFile::modeReadWrite | CFile::shareExclusive, &fe);
  
    if (pFile == NULL)
    {
       ReportSaveLoadException(lpszPathName, &fe,
           TRUE, AFX_IDP_INVALID_FILENAME);
       return FALSE;
    }
  
    CArchive saveArchive(pFile, CArchive::store | CArchive::bNoFlushOnDelete);
    saveArchive.m_pDocument = this;
    saveArchive.m_bForceFlat = FALSE;
    TRY
    {
       CWaitCursor wait;
       Serialize(saveArchive);   // save me
       saveArchive.Close();
       ReleaseFile(pFile, FALSE);
    }
    CATCH_ALL(e)
    {
       ReleaseFile(pFile, TRUE);
  
       TRY
       {
           ReportSaveLoadException(lpszPathName, e,
              TRUE, AFX_IDP_FAILED_TO_SAVE_DOC);
       }
       END_TRY
       DELETE_EXCEPTION(e);
       return FALSE;
    }
    END_CATCH_ALL
  
    SetModifiedFlag(FALSE);   // back to unmodified
  
    return TRUE;    // success
}

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:深入浅出 MFC 文档

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接