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

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

 2009-02-11 20:00:34 来源:WEB开发网   
核心提示: CDocument类的OnNewDocument、OnOpenDocument、OnSaveDocument及OnCloseDocument这一组成员函数用于创建、打开、保存或关闭一个文档,在这一组函数中,深入浅出MFC“文档/视图”架构(3)――文档(4),上面的CDocument::G

CDocument类的OnNewDocument、OnOpenDocument、OnSaveDocument及OnCloseDocument这一组成员函数用于创建、打开、保存或关闭一个文档。在这一组函数中,上面的CDocument::GetFile和CDocument::ReleaseFile两个函数得以调用:

BOOL CDocument::OnOpenDocument(LPCTSTR lpszPathName)
{
    if (IsModified())
       TRACE0("Warning: OnOpenDocument replaces an unsaved document.n");
  
    CFileException fe;
    CFile* pFile = GetFile(lpszPathName,
       CFile::modeRead|CFile::shareDenyWrite, &fe);
    if (pFile == NULL)
    {
       ReportSaveLoadException(lpszPathName, &fe,
           FALSE, AFX_IDP_FAILED_TO_OPEN_DOC);
       return FALSE;
    }
  
    DeleteContents();
    SetModifiedFlag(); // dirty during de-serialize
  
    CArchive loadArchive(pFile, CArchive::load | CArchive::bNoFlushOnDelete);
    loadArchive.m_pDocument = this;
    loadArchive.m_bForceFlat = FALSE;
    TRY
    {
       CWaitCursor wait;
       if (pFile->GetLength() != 0)
           Serialize(loadArchive);   // load me
       loadArchive.Close();
       ReleaseFile(pFile, FALSE);
    }
    CATCH_ALL(e)
    {
       ReleaseFile(pFile, TRUE);
       DeleteContents();  // remove failed contents
  
       TRY
       {
           ReportSaveLoadException(lpszPathName, e,
              FALSE, AFX_IDP_FAILED_TO_OPEN_DOC);
       }
       END_TRY
       DELETE_EXCEPTION(e);
       return FALSE;
    }
    END_CATCH_ALL
  
    SetModifiedFlag(FALSE);   // start off with unmodified
  
    return TRUE;
}

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

Tags:深入浅出 MFC 文档

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