函数用于在未销毁文档对象时删除文档数据。原型为:
virtual void DeleteContents( );
枫叶文学网www.fywxw.com
第8 章 文件cāo作
·177·
(7)ReleaseFile()
该虚函数用于释放文件以允许其他应用程序使用。原型为:
virtual void ReleaseFile(
CFile* pFile,
BOOL bAbort
);
? 参数pFile:要释放的CFile 对象。
? 参数bAbort:指定用什么方法释放对象,若取值为TRUE,则用CFile::Abort(),反之
用CFile::Close()。
(8)SaveModified()
该虚函数用于查询文档的修改状态并存储修改的文档。原型为:
virtual BOOL SaveModified( );
? 函数返回值:函数是否成功的标志。
8.1.2 Serialize()函数
在8.1.1 节中介绍了文档的主要结构,本小节将讲述如何创建和使用文档与磁盘文件之
间的串行化读写通道,即Serialize()函数。
1.串行化的基本概念
串行化在面向对象程序设计领域中的基本概念是指对象可以被持续,即当程序退出时,
它们可以被保存在磁盘中,而当程序重新运行时又可以从磁盘中读取恢复。对象的这种保存
和恢复的过程就称为“串行化”。在MFC 中,对象串行化的成员函数称为Serialize()成员函
数。这个函数提供了将类的数据进行存盘和读取的功能。
在MFC 中,串行化过程是顺序的,即与文档相关的所有对象只能在某个单独的文件中
进行顺序的读或写,而并不能进行随机的访问。MFC 的文档类中就只提供了顺序保存和读写
文档数据的功能。
2.将类串行化
将类串行化需要进行下列几个步骤:
(1)从CObject 派生
在 CObject 类中定义了基本的序列化协议和功能,需要串行化的类必须直接或间接地从
CObject 类派生,从而获得对CObject 的序列化协议及功能的访问权限。
(2)添加DECLARE_SERIAL()宏
设置好基类后,在类的声明中添加一个DECLARE_SERIAL()宏,具体代码如下:
class CSample : public CObject //由CObject 派生
{
public:
??//其他成员变量和成员函数的定义
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·178·
DECLARE_SERIAL(CSample) //声明串行化,参数为该类的类名
??//其他成员变量和成员函数的定义
};
(3)添加IMPLEMENT_SERIAL()宏
在类的实现文件中添加IMPLEMENT_SERIAL()宏,具体代码如下: