初識MFC----文檔類CDocument


一、MFC的文檔

  1、相關問題

    文檔類 - 負責管理數據,封裝了和視圖窗口以及框架窗口之間的操作

    CDocument - 父類CCmdTarget

  2、文檔類的使用

    2.1首先利用pFrame調用LoadFrame函數,創建主框架窗口

    2.2在主框架窗口WM_CREATE消息處理中創建視圖窗口

    2.3在視圖窗口WM_CREATE消息處理中將文檔類對象和視圖類對象建立綁定關系

 

    //文檔類用一個鏈表成員保存和文檔類對象相關聯的視圖類對象

    m_viewList.AddTail(pView); 

    //視圖類用一個普通成員保存和視圖類對象相關聯的文檔類對象        

    pView->m_pDocument = this;

 

    經分析可知:

    文檔類用一個鏈表保存視圖類對象:說明一個文檔類對象可以和多個視圖類對象關聯(綁定)

    視圖類用一個普通成員保存文檔類對象:說明一個視圖類對象只能和一個文檔類對象關聯(綁定)

  3、對象的關系圖

    theApp

       |---->m_pMainWnd

              |---->m_pViewActive

                      |---->m_pDocument

                             |---->m_viewList(保存視圖類對象地址)

  4、文檔類和視圖類之間的操作

    4.1 CView::GetDocument() -可以獲取和視圖類相關聯的文檔類對象

    4.2 CView::OnUpdate -虛函數,刷新視圖窗口

    4.3 CDocument::UpdateAllViews -可以觸發所有和這個文檔類對象相關聯的視圖類對象(視圖窗口)刷新

  5、命令消息(WM_COMMAND)的處理順序

    View->Document->Frame->App

 二、文檔類中文件相關功能

  程序的文檔類中有一個OnNewDocument虛函數,該函數是【文件\新建】命令處理的一部分;

  1、修改單文檔程序/多文檔程序的程序窗口標題

    方法一:

      在程序的文檔類中的虛函數OnNewDocument中添加:SetTitle("程序窗口的新標題");

    方法二:

      在程序的字串表資源中找到資源:IDR_MAINFRAME,該資源字符串是由“\0”分隔的7個子串;可利用文檔模板類CDocTemplate的成員函數:GetDocString來獲取各個子串:

      virtual BOOL GetDocString( CString& rString, enum DocStringIndex index ) const;

        rString:是一個CString對象的引用,當函數返回時,該參數將包含要查找的子串;

        index:枚舉類型,指定將要查找的子串的索引,與IDR_MAINFRAME字符串資源中的7個子串的順序一致,包括:

          CDocTemplate::windowTitle  --主窗口標題欄上的字符串,僅在單文檔程序出現,多文檔程序將以IDR_MAINFRAME字符串為默認值

          CDocTemplate::docName  --默認文檔的名稱,無指定時默認為“無標題”

          CDocTemplate::fileNewName  --文檔類型的名稱;如果程序指定支持多種類型的文檔,此字符串將顯示在“新建”文件對話框中

          CDocTemplate::filterName  --文檔類型的描述和一個適用於此類型的通配符過濾器,這個字符串將出現在“打開”文件對話框中的文件類型列表框中,要和CDocTemplate::filterExt一起使用;

          CDocTemplate::filterExt  --文檔的擴展名,如果沒有指定就不能在“打開”文件對話框中處理這種文檔,要和CDocTemplate::filterName一起使用

          CDocTemplate::regFileTypeId  --如果以::RegisterShellFileTypes向系統的注冊表注冊文件類型,此值會出現在HKEY_CLASSES_ROOT之下成為其子項,並僅供Windows內部使用;如果沒有指定,這種文件類型就無法注冊

          CDocTemplate::regFileTypeName  --這也是存儲在注冊表中的文件類型名稱,會顯示於程序中用以訪問注冊表的對話框內

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM