vc序列化问题(3)

2019-06-17 12:16

for(int i=0;i

ar>>pgraph;

pview->m_obarray.add(pgraph); } } }

类对象

if (ar.isstoring()) {

// todo: 在此添加存储代码 } else {

但是读取数据的时候还需要重绘图像:转回view类,因为在 // todo: view类加载的时候会自动调用在此添加加载代码ondraw(), 在ondraw()中添加如下语句 int ncount;

ncount=m_obarray.getsize(); for(int i=0;i

}

pview->m_obarray.serialize(ar); // 将这个数据传递给 }

其中cobarray类对象读取数据的方法:(以下是mfc源代码,无须用户添

((cgraph*)m_obarray.getat(i))->draw(pdc); void cobarray::serialize(carchive& ar) }

基本上完成了通过serialize保存和打开文件。

{

assert_valid(this);

用serialize的好处:通过缓存来保存,当缓存区满了才进行一次读 /写,因此提高了应用程序的效率

cobject::serialize(ar);

另外 , archive 对象是支持序列化的,因此在读写数据的时候即可以按以上方法在 doc 类的 serialize 来保存和打开数据。 因此修改 doc 中的 serialize 为

if (ar.isstoring())

void cgraphicserialdoc::serialize(carchive& ar) { {

ar.writecount(m_nsize);

position pos=getfirstviewposition();// 获得第一个视类对象在对象列表中的位置 for (int_ptr i = 0; i < m_nsize; i++)

cgraphicserialview *pview=(cgraphicserialview*)getnextview(pos);// ar << m_pdata[i]; 找到当前视类对象的指针,由于这是单文档,因

} else {

} }

void cgraphicserialdoc::serialize(carchive& ar)

dword_ptr noldsize = ar.readcount(); { setsize(noldsize);

??

for (int_ptr i = 0; i < m_nsize; i++) m_obarray.serialize(ar); //doc 类中定义m_obarray的情况 ar >> m_pdata[i]; } }

void cgraphicserialdoc::deletecontents()

下面直接在 doc 类中使用 cobarray 对象(取消之前定义在 view 类中的该类对象)

{

在 doc 类中定义 cobarray m_obarray;

int ncount;

存图形数据的代码修改为:

ncount=m_obarray.getsize();

cgraphicdoc *pdoc=getdocument();// 通过视类提供的getdocument()方法来获得doc类指针

/*for(int i=0;i

pdoc->m_obarray.add(pgraph);

{

修改其他位置的 m_obarray

delete m_obarray.getat(i);

void cgraphicserialview::ondraw(cdc* pdc)

//m_obarray.removeat(i);

{

}

??

m_obarray.removeall();*/

ncount=pdoc->m_obarray.getsize();

while(ncount--)

for(int i=0;i

{

{

delete m_obarray.getat(ncount);

((cgraph*)pdoc->m_obarray.getat(i))->draw(pdc); //doc类中定义m_obarray的情况

}

当我们新建和打开文档的时候,我们之前的文档对象并没有被销毁(系统利此时应删除文档对象。

在文档类中重载函数 void cgraphicserialdoc::deletecontents() 来删

m_obarray.removeat(ncount); }

cdocument::deletecontents(); }


vc序列化问题(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中药真伪的性状(经验)鉴别方法

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: