- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
使用CArchive下载和存储对象
使用CArchive下载和存储对象
CArchive是负责将一个类的内容串行化到一个文件中的MFC类。CArchive可从磁盘中读写二进制的数据。CArchive负责调用你对象的串行化方法。当它调用串行化时,它用来下载或者存储(由IsLoading()或者IsStoring指示)。 该archive经常与一个CFile对象结合起来。当你构造一个CArchive时,你必须传送入一个打开的CFile对象中。在我们的例子中,我们将其串行化到一个驻留留存的文件中(CMemFile)。我们这样做的目的是为了将该对象复制到内存中,这样我们可以将它装载到一个COM数组中,并且通过网络发送出去。 串行化的工作有两个方向--对象变为数据流,还有数据流还原为对象。第一步首先要将这个对象变成为一个数据流。以下就给我们展示了如何创建一个archive,将一个对象变为一个文件: CMemFile memfile; // memory file file:// define the flag which tells archive if it should load or store long lMode = CArchive::store | CArchive::bNoFlushOnDelete; // create the archive using the memory file CArchive ar(memfile, lMode ); 当一个archive创建的时候,它需要知道它是在串行化或者还原一个对象。只要在构造器中设置其模式为to CArchive::store或者CArchive:load就可以了。 现在这个archive已经准备好用作串行化了。就这个例子来说,我们将创建一个简单的对象,并且使用archive串行化它。 CSimpleObj Obj; file:// set the data member Obj.m_strData = This is an object.; // m_pDocument is not used ar.m_pDocument = NULL; // serialize the object into the archive ar.WriteObject(Obj); // close the archive - the data is now stored in memfile ar.Close();以上的代码将一个对象的串行化字节流放入到一个内存文件中。如果你调试到WriteObject调用,你可以最终发现调用你对象中的Serialize()。这个文件现在可以拷贝到一个COM数组中传送。还原对象的操作可通过调用ar.ReadObject()完成。 串行化的另一个过程是,还原。它包括获得一个充满字节的缓存,并且将它还原为C++对象。这个操作有几个步骤。第一步是将一个数据缓冲送给一个CMemFile对象。这可以让CMemFile对象来接管并且访问到缓存。变量pBuffer是一个指向一个充满字节缓存的指针,这些缓存是我们通过串行化一个对象得到的。变量的长度是字节数的总和。 file:// attach the buffer to the memory file memfile.Attach((unsigned char*)pBuffer, lLength); file:// start at beginning of buffer memfile.SeekToBegin(); 现在我们可以创建archive对象。要将一个文件还原为对象,必须创建CArchive对象。刚才我们说的CMemFile就用在这里,通过load属性可创建archive,并且告诉它从内存文件中下载该对象。还原实际上是由ReadObject方法完成的。通过使用IsLoading()标记的Serialize,ReadObject可以创建对象并且下载成员的数据。 file:// create an archive with the attached memory file CArchive ar(memfile, CArchive::load|CArchive::bNoFlushOnDelete); // document pointer is not used ar.m_pDocument = NULL; // inflate the object and get the pointer rpObj = ar.ReadObject(0); 现在对象已经创建了,我们只需将没用的东西清除。我们要关闭archive,并
您可能关注的文档
最近下载
- 角色模型制作综合规范.pdf VIP
- 汛期居民转移安置点疫情防控工作方案.doc VIP
- 必威体育精装版BG201使用说明书20121024.pdf VIP
- 车辆维修定点服务项目投标方案(技术标).pdf
- 政府招聘人员协议书.docx VIP
- 2022电网生产调度系统检修工程预算编制与计算方法.docx VIP
- 吸入用一氧化氮-药品临床应用解读.pptx VIP
- Unit 1 Helping at home Part A 第1课时课件2025-2026学年度人教PEP英语四年级上册.pptx VIP
- 《GB3095-2012 环境空气质量标准》.pdf VIP
- GB21148-2020 足部防护 安全鞋.pdf VIP
文档评论(0)