初識MFC 文件類CDocument

2022-08-21 04:27:13 字數 2002 閱讀 3212

一、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、物件的關係圖

|---->m_pmainwnd

|---->m_pviewactive

|---->m_pdocument

|---->m_viewlist(儲存檢視類物件位址)

4、文件類和檢視類之間的操作

4.1 cview::getdocument() -可以獲取和檢視類相關聯的文件類物件

4.2 cview::onupdate -虛函式,重新整理檢視視窗

4.3 cdocument::updateallviews -可以觸發所有和這個文件類物件相關聯的檢視類物件(檢視視窗)重新整理

5、命令訊息(wm_command)的處理順序

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

程式的文件類中有乙個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  --這也是儲存在登錄檔中的檔案型別名稱,會顯示於程式中用以訪問登錄檔的對話方塊內

初識MFC 執行時類資訊機制

1 執行時類資訊機制的作用 程式執行過程中,可以獲知物件的相關類的資訊 2 執行時類資訊機制的使用 2.1類必須派生自cobject類 2.2類內必須新增宣告巨集 declare dynamic 2.3類外必須新增實現巨集 implement dynamic cobject iskindof 來判斷...

初識MFC 訊息對映

訊息對映 以前的程式設計師編寫windows程式時,需要使用winmain 例程來向wndproc函式傳送訊息,對訊息的處理是通過switch case結構實現的,當要處理的訊息很多時,switch case結構的分支很多,影響程式的可讀性。在編寫mfc應用程式時,不再採用這種古老的方法,而是採用一...

MFC獲取文件屬性

在開啟檔案對話方塊中選擇檔案 cfiledialog filedlg true,null,null,ofn hidereadonly,all files 如果沒開啟檔案,則返回 if filedlg.domodal idcancel return cstring m strfilename m st...