MFC單文件開啟檔案

2021-08-31 09:39:39 字數 2025 閱讀 7976

原文件:

onfileopen

成員函式相關聯。

當使用者在通用「開啟」檔案對話方塊中指定乙個檔案後,應用程式將呼叫文件物件的cdocument::onopendocument虛成員函式。該函式將開啟檔案,並呼叫deletecontents清除文件物件的內容,然後建立乙個carchive(歸檔類)物件用於資料的讀取,接著又自動呼叫serialize函式。之後便呼叫檢視物件的cview::oninitialupdate虛成員函式。

上述的serialize函式是乙個很特別的函式,它既可以從中讀取文件資料,也可以儲存文件資料,稱為「序列化」函式。它被新增使用者的文件類中,用來根據carchive內部的乙個標誌來決定文件資料的流向(讀或寫),

文件資料的讀操作

對於上述過程,我們所做的僅僅是在文件類的

serialize

函式中新增文件資料讀取(載入

)和儲存的**。需要說明的是,

serialize

函式的引數

ar是乙個

carchive

類的引用物件。

carchive

類提供了「

<<

」和「>>

」運算子,分別可以向文件物件寫入資料或從文件物件中讀取資料。它們的含義與

c++中的「

<<

」和「>>

」運算子相同,只不過

carchive

cobject

、cstring

等。除此之外

carchive類還

提供readstring

和writestring

成員函式來讀寫文件中的一行文字。

文件資料的顯示方法和技巧

使用者的檢視類是負責顯示文件資料的,目前常用的顯示方法有二個:一是在檢視的客戶區中使用編輯控制項,二是直接呼叫cdc類的文字輸出函式繪製所有的文字內容。

1.使用編輯控制項

「編輯控制項」是乙個可以讓使用者從鍵盤輸入和編輯文字的控制項,通過它可以輸入各種文字、數字或者口令,也可使用它來編輯和修改簡單的文字內容。mfc類cedit封裝了編輯控制項的全部操作。

使用編輯控制項實現文件資料的顯示的思路是,先在檢視中建立乙個與檢視客戶區大小相同的編輯控制項,然後把文件的文字內容轉送到編輯控制項中。

2.直接控制文字的輸出(詳細)

(1)重寫onopendocument函式,讀取文字檔案到字串變數

bool cmfcdoc::onopendocument(lpctstr lpszpathname)

//將檔案讀到str字串

pcfile.read(str.getbuffer(pcfile.getlength()), pcfile.getlength()); 

pcfile.close(); }

return true; }

(2)ondraw函式中將檔案顯示出來

cdc為我們提供了四個輸出文字的函式:

textout

、exttextout

、tabbedtextout

和drawtext

,分別用於不同的場合。如果想要繪製的文字需要支援

tab符,那麼採用

tabbedtextout

函式,可以使繪製出來的文字效果更佳;如果要在乙個矩形區域內繪製多行文字,那麼採用

drawtext

函式,會更富於效率;如果文字和圖形結合緊密,字元間隔不等,並要求有背景顏色或矩形裁剪特性,那麼

exttextout

函式就將是最

好的選擇。如果沒有什麼特殊要求,那使用

textout

函式就顯得簡練了。

pdc->drawtext(pdoc->str,pdoc->str.getalloclength(),crect(0,0,1000,1000),dt_wordbreak);

MFC單文件開啟檔案預設字尾名修改

做單文件程式時,預設開啟文件字尾為 如果我們需要自定義開啟字尾時,需要對文件模板相關函式做過載。cpp view plain copy class cmysingledoctemplate public csingledoctemplate virtual bool getdocstring cst...

MFC單文件分欄

平台 vs2017 功能 建立單文件程式,並將視窗分成左右兩個 1.在cmainframe.h中新增乙個csplitterwnd成員 中新增以下內容 public csplitterwnd msplitwin1 2 基於cview建立兩個新的檢視類,cviewleft,cviewright 中新增以...

MFC 單文件 建立

據嚮導建立的單文件時候,view類的基類選擇 cformview,這樣可使用控制項 根據嚮導建立單文件,在 使用者介面功能 取消 使用傳統的停靠工具欄 可選 如果支援mysql資料庫 在資料庫支援的頁面 資料庫支援 選擇 不提供檔案支援的資料庫檢視 客戶端型別選 odbc 型別選擇 快照 資料來源 ...