77范文网 - 专业文章范例文档资料分享平台

vc序列化问题(3)

来源:网络收集 时间:2019-06-17 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

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(); }

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库vc序列化问题(3)在线全文阅读。

vc序列化问题(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/660222.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: