举例:
/************************************************************************/
/* 重载串行化函数 */
/* 功能:确定归档文件是否被存储 */
/************************************************************************/
void CMsg::Serialize(CArchive& ar)
{
//读入
if (ar.IsStoring())
{
ar<<(WORD)m_bClose;
ar<<m_strText;
ar<<code;
}
//输出
else
{
WORD wd;
ar>>wd;
m_bClose = (BOOL)wd;
ar>>m_strText;
ar>>(UINT)code;
}
}//void CMsg::Serialize(CArchive& ar)
//
CArchive::IsStoringBOOL IsStorng( ) const;
返回值:
如果正在存储归档文件,则返回非零值,否则为0。
说明:
确定是否正在存储归档文件。这个函数由归档文件类的Serialize函数调用。
如果归档文件的IsStoring状态为非零,则它的IsLoading状态为0,反之亦然。
示例:
int i;
extern CArchive ar;
if(ar.IsStoring( )) ar<
else ar>>i;
//
CObject::Serialize
virtual void Serialize( CArchive& ar ); throw( CMemoryException ); throw( CArchiveException ); throw( CFileException ); 参数: ar 被串行化的CArchive对象。 说明: 从档案文件中读取该对象或向档案文件中写入该对象。 必须为希望串行化的每个类覆盖Serialize。被覆盖的Serialize首先必须调用基类的Serialize函数。 在类的声明中必须使用DECLARE_SERIAL宏,并且在类的执行过程中也必须使用IMPLEMENT_SERIAL宏。 使用CArchive::IsLoading或CArchive::IsStoring函数,用于决定是否装载或存储了档案文件。 通过CArchive::ReadObject和CArchive::WriteObject来调用Serialize函数。这些函数与CArchive插入操作符(<<)和抽出操作符(>>)相关联。 如果要了解有关串行化的例子,请参阅联机文档“Visual C++程序员指南” 中的“串行化(对象永久化)”。 示例:请参阅ObList::CObList,了解所有CObject示例中使用的CAge类。 // example for CObject::Serialize void CAge::Serialize( CArchive& ar ) { CObject::Serialize( ar ); if( ar.IsStoring() ) ar << m_years; else ar >> m_years; }