CArchive類 MSDN上的東西

2021-05-01 20:08:42 字數 1741 閱讀 7760

mfc 提供carchive類實現資料的緩衝區讀寫,同時定義了類物件的儲存與讀取方案。

建立 carchive 物件有兩種方法:

最普通且最容易的方法是使框架代表「檔案」選單上的「儲存」、「另存為」和「開啟」命令為文件建立carchive物件。

以下是應用程式的使用者從「檔案」選單上發出「另存為」命令時,框架所執行的操作:

顯示「另存為」對話方塊並從使用者獲取檔名。

開啟使用者命名的檔案作為cfile物件。

建立指向該cfile物件的carchive物件。在建立carchive物件時,框架將模式設定為「儲存」(即寫入或序列化),而不是「載入」(即讀取或反序列化)。

呼叫在cdocument派生類中定義的serialize函式,將carchive物件的引用傳遞給該函式。

然後,文件的serialize函式將資料寫入carchive物件(剛作了解釋)。從serialize函式返回時,框架先銷毀carchive物件,再銷毀cfile物件。

因此,如果讓框架為文件建立carchive物件,您所要做的一切是實現寫入存檔和從存檔中讀取的文件的serialize函式。您還必須為文件的serialize函式直接或間接依次序列化的任何cobject派生物件實現serialize

除了通過框架將文件序列化之外,在其他場合也可能需要carchive物件。例如,可能要序列化到達或來自剪貼簿的資料,由csharedfile物件表示。或者,可能要使用使用者介面來儲存與框架提供的檔案不同的檔案。在這種情況下,可以顯式建立carchive物件。使用下列過程,用與框架採用的相同方式來執行此操作。

顯式建立 carchive 物件

構造cfile物件或從cfile匯出的物件。

按照下面示例所示,將cfile物件傳遞到carchive的建構函式:

cfile thefile;

thefile.open(..., cfile::modewrite);

carchive archive(&thefile, carchive::store);

carchive建構函式的第二個引數是指定存檔將用於向檔案中儲存資料還是用於從檔案中載入資料的列舉值。物件的serialize函式通過呼叫存檔物件的isstoring函式來檢查該狀態。

當完成向carchive物件儲存資料或從該物件中載入資料時,關閉該物件。雖然carchive物件(和cfile物件)會自動關閉存檔(和檔案),好的做法是顯式執行,因為這使從錯誤恢復更為容易。

關閉 carchive 物件

MSDN 基於模板的集合類

翻譯 collections template based classes 這篇文章是介紹在mfc3.0及以後版本中的型別安全的 基於模板的集合類。使用這些模板去建立型別安全的集合與使用沒有基於模板的集合類相比更加方便而且提供了更好的型別安全。mfc預先定義了兩類基於模板的集合 簡單的陣列 列表 對...

c 序列化CArchive類的學習小結

1.carchive類沒有基類 2.carchive類是實現物件持久化的方法,它可以把記憶體中的物件持久化到本地磁碟中去,也可以從本地磁碟中讀取資料在內存在構建物件 3.carchive類和輸入輸出流類似。輸入輸出流處理是acii字串行,而carchive類是以一種高效的非冗餘的方式來處理二進位制物...

Silverlight在MSDN類庫中的小變化

目前微軟對silverlight在msdn類庫的導航位置進行了調整,大家會發現silverlight被同時安排在.net development節點和web development節點下。微軟將silverlight的out of browser功能和windows phone 7開發單獨列出在.n...