实现类对串行化的支持

分五步!

第一,修改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()

{



}

  

你可能感兴趣的:(实现)