一、建立乙個序列化類的五個步驟(參考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...