WEB开发网
开发学院软件开发VC 使用 MFC 串行化数据和 C++ 对象 阅读

使用 MFC 串行化数据和 C++ 对象

 2009-03-07 20:02:29 来源:WEB开发网   
核心提示: 串行化处理我们要串行化 CPhone 对象,把C++对象写入文件,使用 MFC 串行化数据和 C++ 对象(6),所以需要在 CPhone 类的定义和实现文件中加入相应的串行化代码,首先要在 CPhone 头文件中加入一个 MFC 宏,也就是说 CPhone 类必须是 CObject 的派

串行化处理

我们要串行化 CPhone 对象,把C++对象写入文件,所以需要在 CPhone 类的定义和实现文件中加入相应的串行化代码,首先要在 CPhone 头文件中加入一个 MFC 宏,这是串行化需要的宏,必须为它提供一个参数,也就是类的名字。

// 串行化宏定义
DECLARE_SERIAL(CPhone)

其次是声明串行化函数,这个原型是必须的,因为要串行化类 CPhone 对象列表,所以 CPhone 类必须有一个属于自己的 Serialize()函数:

// 串行化函数 Serialize() 
virtual void Serialize(CArchive& ar);

在 CPhone 实现文件中也要加入对应的代码,这个宏也是串行化需要的另一个宏,它有三个参数,第一个是类名,第二个是基类名,第三个是应用程序的版本号,可以将版本号定义为任何值,当串行化数据到文件时,此版本号也要写入文件。

// 串行化宏实现
IMPLEMENT_SERIAL(CPhone,CObject,0);

串行化函数 Serialize() 实现

if (ar.IsStoring())
{

 ar << m_Name << m_Phone;
}
else
{

 ar >> m_Name >> m_Phone;
}

这里要注意的是为了使用 CObList 类的成员函数 Serialize(),有几个前提条件需要满足:

列表类对象必须是 MFC CObject 类的派生类对象,也就是说 CPhone 类必须是 CObject 的派生类;

在列表中的对象类必须具备一个不带参数的构造函数。如果需要,也可以有其它带参数的构造函数;

必须声明和实现列表类的串行化函数 Serialize(),即 CPhone::Serialize();

实现列表对象的串行化必须使用 DECLARE_SERIAL/IMPLEMENT_SERIAL 宏;

上一页  1 2 3 4 5 6 7  下一页

Tags:使用 MFC 串行

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接