分五步!
第一,修改CXXX类的定义,让其从CObject派生,即在XXX.h文件中将CXXX的定义改为:
class CXXX :public CObject
第二,
重载Serialize函数,在XXX.h中增加该函数的声明:
void Serialize(CArchive &ar);
并在XXX.cpp中实现这个函数,
void CGraph::Serialize(CArchive &ar)
{
if(ar.IsStoring())
{
// add your codes
}
else
{
// add your codes
}
}
第三,在声明XXX类时,用DECLARE_SERIAL宏,即在XXX.h头文件中,在CXXX类定义的内部添加: DECLARE_SERIAL(CXXX)
例如:
class CGraph :public CObject
{
DECLARE_SERIAL(CGraph)
public:
void Draw(CDC *pDC);
void Serialize(CArchive &ar);
CPoint m_End;
CPoint m_Origin;
CGraph();
CGraph(CPoint a,CPoint b);
virtual ~CGraph();
};
第四,为CXXX类定义一个不带参数的构造函数
第五,在CXXX类的实现文件中使用IMPLEMENT_SERIAL宏,即在XXX.cpp源文件中,在CXXX类的构造函数前面添加下面这句话:
IMPLEMENT_SERIAL(CXXX,CObject,1) //参数说明:类名,基类名,版本号
例如:
IMPLEMENT_SERIAL(CGraph,CObject,1)
CGraph::CGraph()
{
}