MFC 文件序列化

2021-07-24 00:16:02 字數 1821 閱讀 1776

一、建立乙個序列化類的五個步驟(參考msdn:cobject::serilize)

1、建立乙個可序列化類,可序列化類都是從cobject繼承而來

2、過載serialize成員函式

3、在類宣告中使用declare_serial巨集

4、定義乙個沒有引數的建構函式

5、在實現檔案中使用implement_serial巨集

二. 例項

graph.h檔案:

[cpp]view plain

copy

#pragma once

// graph 命令目標

class

graph : 

public

cobject  

//(1)定義乙個基類為coject的類

;  

graph.cpp檔案:

[cpp]view plain

copy

// graph.cpp : 實現檔案

//#include "stdafx.h"

#include "archive.h"

#include "graph.h"

// graph

implement_serial(graph, cobject, 1) //(5)在實現檔案中使用implement_serial巨集

graph::graph() //(4)定義乙個無引數的建構函式

graph::graph(int

drawtype, cpoint ptold)  

graph::~graph()  

// graph 成員函式

void

graph::serialize(carchive &ar) 

//(2)重寫序列化函式

else

}  三、carchive類

carchive類用來建立乙個持久的disk storage.

[cpp]view plain

copy

void

cgraphicdoc::serialize(carchive& ar)  

*/}  

else

//從檔案中讀

*/}  

m_obarray.serialize(ar) ;//m_obarray的serialize成員是基類的

}  

四、如何在乙個類中訪問另乙個類的成員

1、在doc類中訪問view類中成員獲取view類指標

[cpp]view plain

copy

position pos = getfirstviewposition() ;  

cgraphicview *pview = (cgraphicview *)getnextview(pos) ;  

2、在view類中獲取doc類指標

[cpp]view plain

copy

cgraphicdoc* pdoc = getdocument();  

五、刪除分配的堆記憶體

釋放分配的堆記憶體放在deletecontents 虛函式中

[cpp]view plain

copy

void

cgraphicdoc::deletecontents()  

m_obarray.removeall() ;  

cdocument::deletecontents();  

}  

MFC文件的序列化

1 建立乙個可序列化類,可序列化類都是從cobject繼承而來 2 過載serialize成員函式 3 在類宣告中使用declare serial巨集 4 定義乙個沒有引數的建構函式 5 在實現檔案中使用implement serial巨集 二 carchive類 carchive類用來建立乙個持久...

MFC序列化和反序列化

class a void fileserialize cstring filename carchive ar file,carchive store int num ar num ar.close file.close void filedeserialize cstring filename,a...

MFC筆記 單文件程式的序列化

這個函式查詢id idr mainframe string table當中的7個字串。2 轉到cdocmanger 彈出開啟檔案對話方塊並獲取 filename docmgr.cpp void cdocmanager onfileopen 4 轉到cdocmanager類 cdocument cdo...