请教一个序列化的问题

wwwht 2005-08-08 12:53:19
各位大侠:
我定义了如下一个类,以下是我的代码;
//in the head file
class CPosition : public CObject
{
DECLARE_SERIAL(CPosition)
public:
CPoint GetValue(int index);
void SetValue(int index,CPoint point);
void Serialize(CArchive &ar);
CPosition();
virtual ~CPosition();
public:
CPoint m_ptPosition[100];
int m_nCount;

};
//in the implement file

IMPLEMENT_SERIAL(CPosition,CObject,0)

CPosition::CPosition()
{
m_nCount = 0;
for(int i=0;i<100;i++)
m_ptPosition[i] = CPoint(0,0);
}

CPosition::~CPosition()
{

}

void CPosition::Serialize(CArchive &ar)
{
CObject::Serialize(ar);
if(ar.IsStoring())
{
ar<<m_nCount;
for(int i=0;i<m_nCount;i++)
ar<<m_ptPosition[i];
}
else
{
ar>>m_nCount;
for(int i=0;i<m_nCount;i++)
ar>>m_ptPosition[i];
}
}

void CPosition::SetValue(int index, CPoint point)
{
m_ptPosition[index] = point;
}

CPoint CPosition::GetValue(int index)
{
return m_ptPosition[index];
}
问提是:
当我点击”保存“时,可以保存,但当我点击“打开”时,视无法出现所保存的数据。但是,如果我不是这样,而是在Class Document中,定义成员 CPoint m_ptPosition[100]; int m_nCount;
重写Serialize(CArchive& ar),代码如下:
void CXXXDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: add storing code here
ar<<m_nCount;
for(int i=0;i<m_nCount;i++)
ar<<m_ptPosition[i];
}
else
{
// TODO: add loading code here
ar>>m_nCount;
for(int i=0;i<m_nCount;i++)
ar>>m_ptPosition[i];
}
}
此时,可以打开所保存的数据。这是为什么?
如果,我要以CPosition方式实现读写数据,还需做那些工作??
在此,先谢谢了!
...全文
99 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwwht 2005-08-09
  • 打赏
  • 举报
回复
各位帮我瞧瞧咯,
void CSampleDoc::Serialize(CArchive& ar)
{

m_Position.Serialize(ar);
if (ar.IsStoring())
{
// TODO: add storing code here
}
else
{
// TODO: add loading code here
}
}
看看,我这么用没错吧。。。
wwwht 2005-08-08
  • 打赏
  • 举报
回复
有调用。。。。,但就是不显示数据。
烦请在给支个招!
吹泡泡的小猫 2005-08-08
  • 打赏
  • 举报
回复
在CPosition::Serialize(CArchive &ar)处加断点,看看这个函数是否被调用了

16,470

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧