字体
第(4/5)页
关灯
   存书签 书架管理 返回目录
象,并且将CArchive 对象与CFile 对象分离。

    其原型为:

    void Close( );

    8.1.4 加入串行化代码

    介绍完串行化的基本内容,本节将讲述如何在文档视图应用程序中添加文档类的串行化

    功能的方法来实现文档的保存和读取。

    在MFC 中,文档数据进行串行化的处理过程,同样是通过文档类的Serialize()函数进行。

    下面以选择“文件|另存为”菜单命令为例介绍这个过程。首先MFC 框架提示用户选取文件

    名,并打开对应的CFile 对象。接着框架创建指向该CFile 对象的CArchive 对象。由于是“另

    存为”,因此该对象设置为“存储”,即CArchive::store。然后调用CDoccomnt 派生类即程序

    的文档类中定义的Serialize()函数,将CArchive 对象的引用传递给该函数。程序的文档类的

    Serialize()函数执行完毕后,框架先销毁CArchive 对象,再销毁CFile 对象。

    因此,根据上述过程,在文档视图应用程序中进行文档的串行化处理,只需要在文档类

    中重载CDoccomnt::Serialize()函数,对特定的文档数据进行串行化即可实现。下面给出一个

    在文档类中加入串行化代码的示例代码。该段代码中CSampleDoc 类是程序的文档类,它有

    一个CSampleData 类的成员变量指针,用于保存文档数据。示例演示了CSampleDoc 类如何

    将CSampleData 类的文档数据串行化。

    1.CSampleData 类的声明

    具体代码如下:

    class CSampleData : public CObject

    {

    public:

    枫叶文学网www.fywxw.com

    第8 章 文件cāo作

    ·183·

    //定义的公共数据类型

    CString m_strNcom;

    int m_nType;

    CSampleData();

    virtual ~CSampleData();

    //定义串行化的宏

    DECLARE_SERIAL(CSampleData)

    //串行化虚函数

    virtual void Serialize(CArchive &ar);

    };

    2.CSampleData 类的实现

    具体代码如下:

    //实现串行化的宏

    IMPLEMENT_SERIAL(CSampleData, CObject, 0)

    //初始化

    CSampleData::CSampleData()

    {

    m_nType=0;

    m_strNcom="";

    }

    CSampleData::~CSampleData()

    {

    }

    //串行化函数

    void CSampleData::Serialize(CArchive &ar)

    {

    //基
上一页 目录 下一页