MFC
文档序列化
引入
“
文档序列化
”
的概念会让许多人感到迷惑,什么是
“
文档序列化
”
?其实说白了就是将数
据(广义上的概念)从硬盘中读出或将数据写入硬盘中。其稍正规的定义可以看看
MFC
文档如
下:
The CArchive class allows you to save a com
plex network of objects in a perm
anent
binary form (usually disk storage) that persists after
those objects are deleted. Later
you can load the objects from
persistent storage, reconsti
tuting them
in m
emory.
This process of m
aking data persistent is called "serialization."
在
MFC
中,
CArchive
类和
CRuntim
eClass
结构以及一些神秘地宏共同完成
“
文档序列化
”
这一工作,当然了我们也不能忘记
CFile
类以及它的那些派生类的功劳。
正文:
“
文档序列化
”
显然可以分成两个部分
“
写文件
”
和
“
读文件
”
。
我在本文中也将从这两个方面来为
你挖掘文档序列化的奥秘。
///
/*
1.“
写读文件
”
的共同基础
*/
//
无论是写还是读都等借助
CRuntimeClass
结构以及一些神秘的宏的帮助。在前几篇文章中
我们没少和
CRuntim
eClass
结构打交道,什么
MFC
执行期类型识别,什么动态创建技术等等。
提到的这两种技术是文档序列化的基础,下面我们就看看为什么可以这么说:
除了与动态创建有关的成员外,在
CRuntim
eClass
结构中还与序列化有关的重要成员有:
//in afx.h
struct CRuntimeClass
{
// Attributes
...//
LPCSTR m_lpszClassName;
int m
_nObjectSize;
UINT m
_wSchema; // schem
a number of the loaded class
...//
void Store(CArchive& ar) const;