⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 13.4.3 版本号.txt

📁 网上第一本以TXT格式的VC++深入详解孙鑫的书.全文全以TXT格式,并每一章节都分了目录,清晰易读
💻 TXT
字号:
13.4.3 版本号
上面介绍 IMPLEMENT SERIAL宏时,曾说过它的第三个参数是一个版本号。现在其值为1,如果将值
修改为 2:
iMPLEMENT_SERIAL(CGraph, CObject , 2) 
再次运行 Graphic程序,单击【文件\打开】菜单项,选择 Graphic.txt文件打开,程序将弹出如图 
13.17所示的警告对话框,提示"非预期的文件格式"。这时因为先前保存数据时使用的版本号是1,
而现在读取时发现对象的版本号。)与保存的版本号 (})不一致,所以程序就会弹出这样的警告消息
框。
图 13.17因版本号不一致而出现的警告信息

读者可以在 CGraph类的 Serialize函数处设置一个断点,并且在 CGraphicDoc类的 Serialize函数
处也设置一个断点。然后调试运行 Graphic程序。先利用相关绘图菜单,在窗 U中绘制一些图形,
然后单击【文件\保存】菜单命令,井选择一个文件(例如 Graphic.txt)保存绘制的图形对象,这时
可以发现程序将会进入 CGraphicDoc类的 Serialize函数。然后单步调试程序,发现当程序执行下
面这条语句时,将跳转到 CGraph类的 Serialize函数处。 
ar<<pView->m一obArray.GetAt(i);
然后我们单步调试运行,当前是存储状态,所以利用 CArchive对象保存 CGraph对象三个变量,也
就是我们要保存的图形三个要素。继续调试,因为本例绘制了三条直线,所以三次进入了 CGraph
类的 Serialize函数。通过以上的调试过程,可以看到,对于 CGTaphicDoc类的 Serialize函数来
说,最终在保存对象的数据时,实际上调用的就是对象本身(即 CGraph对象)的 Serialize函数,这
种调用是由框架自动完成的。也就是说,在利用文档类的 Serialize函数保存-个可串行化类的对象
的数据时,实际上利用的是对象本身的 Serialize函数来完成的。因此,对象需要保存和读取的数
据都需要在该对象的 Serialize 
514 I胁' 


vc忡深λ详解
函数中确定。这就要求在设计可串行化的类时,在其内部确定需要串行化的数据。这就是可串化类
的内部实现机制。 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -