读书人

奇怪的序列化有关问题

发布时间: 2012-02-29 16:44:10 作者: rapoo

奇怪的序列化问题

我的一个基类 CVSPageShape类,再有一个继承于此的类CNestPageShape类

2个类都有自己的序列化函数,

奇怪的是在保存时程序自CNestPageShape类中进入,而打开时却从CVSPageShape中走

为什么?


//CNestPageShape类的序列化函数
void CNestPageShape::Serialize(CArchive& ar)
{
CVSPageShape::Serialize(ar);
AfxMessageBox( "NestPageShape ");
if(ar.IsStoring())
{
//FODO:Add your own code here.
m_strStatistic = " ";
ar < < m_strStatistic;
}
else
{
//FODO:Add your own code here
ar > > m_strStatistic;
}
}

//CVSPageShape的序列化函数
void CVSPageShape::Serialize(CArchive& ar)
{
CVSDrawShape::Serialize(ar);
if(ar.IsStoring())
{
//FODO:Add your own code here.

// Save shapes
ar < < m_listShape.GetCount();

CVSDrawShape *pShape;
POSITION posx = m_listShape.GetHeadPosition();
while (posx)
{
pShape = m_listShape.GetNext(posx);
ar < < (CVSDrawShape*)pShape;
}
}
else
{
//FODO:Add your own code here.
// Read Shapes
int nCountx;
ar > > nCountx;
CVSDrawShape* pShape;
for (int i1=0; i1 < nCountx; i1++)
{
ar > > pShape;
pShape-> AddRef();
pShape-> UpdateComp();
m_listShape.AddTail(pShape);

pShape-> Release();
}
}
}

[解决办法]
CNestPageShape没有保存什么呀,只保存了一个空字符,大部分保存都在CVSPageShape。
打开保存的文件时可以看到里面保存的是CVSPageShape不足为奇。

读书人网 >VC/MFC

热点推荐