MFC四大关键技术宣贯.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MFC 六大关键技术 (第四部分 )——永久保存(串行化) 先用一句话来说明永久保存的重要:弄懂它以后,你就越来越像个程序员了! 如果我们的程序不需要永久保存, 那几乎可以肯定是一个小玩儿。 那怕我们的记事本、 画图 等小程序,也需要保存才有真正的意义。 对于 MFC 的很多地方我不甚满意,总觉得它喜欢拿一组低能而神秘的宏来故弄玄虚,但对 于它的连续存储( serialize )机制,却是我十分钟爱的地方。在此,可让大家感受到面向对 象的幸福。 MFC 的连续存储( serialize )机制俗称串行化。 “在你的程序中尽管有着各种各样的数据, serialize 机制会象流水一样按顺序存储到单一的文件中,而又能按顺序地取出,变成各种不 同的对象数据。 ”不知我在说上面这一句话的时候,大家有什么反应,可能很多朋友直觉是 一件很简单的事情,只是说了一个 “爽 ”字就没有下文了。 要实现象流水一样存储其实是一个很大的难题。 试想, 在我们的程序里有各式各样的对象数 据。如画图程序中,里面设计了点类,矩形类,圆形类等等,它们的绘图方式及对数据的处 理各不相同, 用它们实现了成百上千的对象之后, 如何存储起来?不想由可, 一想头都大了: 我们要在程序中设计函数 store() ,在我们单击 “文件 /保存 ”时能把各对象往里存储。 那么这个 store() 函数要神通广大,它能清楚地知道我们设计的是什么样的类,产生什么样的对象。大 家可能并不觉得这是一件很困难的事情, 程序有能力知道我们的类的样子, 对象也不过是一 块初始化了存储区域罢了。就把一大堆对象 “转换 ”成磁盘文件就行了。 即使上面的存储能成立,但当我们单击 文件“ /打开 ”时,程序当然不能预测用户想打开哪个 文件,并且当打开文件的时候,要根据你那一大堆垃圾数据 new 出数百个对象,还原为你 原来存储时的样子,你又该怎么做呢? 试想, 要是我们有一个能容纳各种不同对象的容器, 这样, 用户用我们的应用程序打开一个 磁盘文件时, 就可以把文件的内容读进我们程序的容器中。 把磁盘文件读进内存, 然后识别 它 “是什么对象 ”是一件很难的事情。 首先,保存过程不像电影的胶片, 把景物直接映射进去, 然后, 看一下胶片就知道那是什么内容。 可能有朋友说它象录像磁带, 拿着录像带我们看不 出里面变化的磁场信号,但经过录像机就能把它还原出来。 其实不是这样的, 比如保存一个矩形, 程序并不是把矩形本身按点阵存储到磁盘中, 因为我 们绘制矩形的整个过程只不过是调用一个 GDI 函数罢了。它保存只是坐标值、线宽和某些 标记等。程序面对 “00 FF这样的东西,当然不知道它是一个圆或是一个字符!” 拿刚才录像带的例子,我们之所以能最后放映出来,前提我们知道这对象是 “录像带 ”,即确 定了它是什么类对象。如果我们事先只知道它 “里面保存有东西,但不知道它是什么类型的 东西 ”,这就导致我们无法把它读出来。拿录像带到录音机去放,对录音机来说,那完全是 垃圾数据。即是说,要了解永久保存,要对动态创建有深刻的认识。 现在大家可以知道困难的根源了吧。 我们在写程序的时候, 会不断创造新的类, 构造新的对 象。这些对象,当然是旧的类对象(如 MyDocument )从未见过的。那么,我们如何才能使 文档对象可以保存自己新对象呢,又能动态创建自己新的类对象呢? 许多朋友在这个时候想起了 CObject 这个类,也想到了虚函数的概念。于是以为自己

文档评论(0)

lxc05035395 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档