在计算机编程中,让对象数据持久性的过程就称之为串行化或序列化。而利用CArchive类可进行串行化操作。
1.CArchive 对象提供了一个类型安全缓冲机制,用于将可序列化对象写入 CFile 对象或从中读取可序列化对象。通常,CFile 对象表示磁盘文件;但是,它也可以是表示“剪贴板”的内存文件(CSharedFile 对象)。
CArchive(CFile*pFile,UINTnMode,int nBufSize=4096,void*lpBuf=NULL );
pFile
nMode标识
它指定了对象是否从归档文件中装载或存储到文件中去。
nMode参数必须有下列值之一:
l CArchive::load 从归档文件装载数据。CFile只读。
l CArchive::store 把数据保存到归档文件中。允许CFile写操作。
l CArchive::bNoFlushOnDelete 当归档文件析构程序被调用时,防止归档文件自动调用Flush。如果设定了此标识,则在析构程序被调用之前必须负责调用Close函数。如果不这样做,数据就会崩溃。
nBufSize
lpBuf
指向nBufSize大小的提供缓冲区的
指针。如果不指定这个参数,归档文 件从本地堆为归档文件分配一个缓冲区并且当对象被毁弃时,释放缓冲 区。归档文件不能释放一个提供的缓冲区。
2.CDocument::OnNewDocument()
创建一个新文档时程序的消息响应函数,一般用于编写创建新文档时用户对自己文档对象的内容初始化内容。
BOOL CDocument::OnNewDocument()
//清除老文档内容
{
}
3.
CObject
::Serialize从档案文件中读取该对象或向档案文件中写入该对象。
virtual void Serialize(CArchive&ar);
throw(
CMemoryException);
throw(
CArchiveException);
throw(
CFileException);
参数:
ar 被
串行化的CArchive对象。
4.【文件/新建】和【文件/打开】菜单项的命令响应函数都是在CWinApp类中提供的。CWinApp类有一个成员变量:m_pDocManager,是指向CDocManager对象的指针,也就是说, CWinApp负责管理文档管理器,而后者有一个文档模板指针链表:m_templateList,用来保存文档模板的指针,即文档管理器负责管理文档模板,而后者又是用来管理文档类、框架类和视类的,始终让这三个对象三位一体,一起为文档服务。
5.如果要使一个类可串行化,可以经过以下五个步骤来实现:
1>从CObject派生类(或从CObject派生的某个类派生);
2>重写Serialize成员函数;
3>使用DECLARE_SERIAL宏(在类声明中)。即DECLARE_SERIAL(class_name)
4> 定义不带参数的构造函数;
5>为类在实现文件中使用IMPLEMENT_SERIAL宏。即IMPLEMENT_SERIAL(class_name,base_class_name,wSchema)
6.