引言: 内容提要
理解对象的持久性* File Demo应用程序* 创建一个持久类* 直接读写文件* 创建自己的CArchive对象* 理解注册
关键词
文章正文
对象的持久性
程序需要完成的一项最重要的事情是,当数据以某种方式改变之后,程序能够保存用户的数据。
摘要:[摘要]介绍了在无汉字字库的打印机上,无需启动汉字操作系统打印汉字的方法,并给出了非汉字系统下打印输出含有汉字的文本文件的实用vc++源程序。 [关键词]汉字打印,zebra系列, vc++语言,24*24点阵字库,文本文件
电脑用户中,有相当一部分用户的打印机不带汉字库,他们打印输出汉字的一般方法是,首先启动汉字操作系统,使汉字打印驱动程序驻留内存,再把含有汉字的文本文件送打印机输出,或......
摘要:图形擦除是图形特技处理中最为常见的一种,在各种游戏中图形擦除技术有着广泛的应用。图形擦除在本质上是图形的消隐,即在两幅图片之间进行图片的平滑过渡显示。过渡的方式决定了图形擦除的不同视觉效果,其中最为常见的一种就是图片淡入淡出的更新:两幅图片由明到暗、由暗到明的循环交替显示。这种特技效果在编程中的实现,往往是通过directx技术实现的:directx transform为我们提供了一个“micro......
对象的持久性和文件I/O内容提要
关键词 【程序编程相关:
Windows图像编程概要
】
理解对象的持久性* file demo应用程序* 创建一个持久类* 直接读写文件* 创建自己的carchive对象* 理解注册 【推荐阅读:
关于_beginthread()的学习体】
文章正文 【扩展信息:
Windows窗口框架(API入门一)
】
对象的持久性
程序需要完成的一项最重要的事情是,当数据以某种方式改变之后,程序能够保存用户的数据.没有保存被编辑过的数据的功能,用户利用应用程序所做的工作只能在应用程序执行时存在,在用户离开应用程序时就会消失.这不是一种好的工作方式!在很多情况下,尤其在使用appwizard来创建应用程序时,visual c++提供许多代码用于保存与加载数据.然而,在一些情况下—特别是当你创建自己对象类型时,必须做一部分额外的工作来保存用户文件的更新.
当读者正在编写一个应用程序时,要处理大量的不同类型对象.你的数据对象有些可以像整数与字符一样简单.其他对象可以是诸如cstring类的字符串或你的定制类所创建的对象.当在需要保存与加载文档的应用程序中使用对象时,需要用某种方式保存与加载这些对象的状态,这样才能重新创建它们,如同上一次任务结束时那样.
一个对象所具有的保存与加载其状态的能力称为“持久性”.几乎所有的mfc类都是持久的,这是因为它们是直接或间接由mfc的cobject类派生的,该类提供了保存与加载对象状态的基本功能.
file demo应用程序
你在使用visual c++的appwizard来创建程序时,将得到一个可以使用文档与视图类来组织.编辑与显示数据的应用程序.由cdocument类派生的文档对象,负责在会话期间保存应用程序的数据与在不同时期保存与加载数据,使得文档从一个会话过程到另一个会话过程时得以保持.
创建一个file demo应用程序,演示保存与加载由cdocument派生的对象的数据的基本技术.file demo的文档是包含一个短消息的单一字符串.
有三个菜单项与该应用程序相关.当程序初次运行时,消息自动设置字符串为default message.用户可以选择edit|change message来改变这条消息.file|save菜单项可以存储文档,file|open菜单项则从磁盘加载文档.
☆ 文档类的回顾
任何编写过程序的人都保存与打开过文件,从用户的观点看这就是对象的持久性.我们将可以学到持久性工作的原理.
当使用visual c++的appwizard创建程序时,必须完成以下几步使得文档能够保存与加载其状态.这些步骤是:
1) 定义保存文档数据的成员变量.
2) 在文档类的onnewdocument( )函数中初始化该成员变量.
3) 在视图类的成员函数ondraw( )中显示当前文档.
4) 在视图类中提供成员函数以使得用户能够编辑文档.
5) 在文档类的成员函数serialize( )中增加保存与加载构成该文档的数据所需要的代码.
当应用程序处理多文档时,你需要做一点额外的工作来保证使用.修改或保存了正确的文档.所幸的是大部分工作都由mfc与appwizard完成了.
☆ 创建file demo应用程序
要想创建file demo应用程序,首先利用appwizard创建一个sdi应用程序.因为要使appwizard中的所有选项都保持为其默认值,所以可以在第1步选择了sdi并使document/view被选中之后就单击finish按钮,以加快速度.
在classview中双击cfiledemodoc编辑文档类的头文件.在attributes部分添加一个cstring成员变量,变量名为m_message,使得attributes部分如下所示:
// attributes
public:
cstring m_message;
在此例中,存储的文档只不过是单一字符串对象.通常,存储的文档要更加复杂.然而,用单字符串演示文档持久性的基本方法已经足够.对于mfc程序员来说,在文档中使用公有变量而不用带有公共访问函数的私有变量是很常见的.这使得编写访问文档变量的视图类的代码简单了一些.不过,这会使以后加强这个程序的功能时要做的工作增加.
像所有的文档数据一样,这个变量必须要初始化.这个工作在onnewdocument( )函数中进行.在classview中扩展cfiledemodoc,双击onnewdocument( )编辑它.在其中添加一行初始化串的代码,如程序清单1所示.在此之前要把todo注释删除掉.
程序清单1 初始化文档的数据
bool cfiledemodoc::onnewdocument()
{
if (!cdocument::onnewdocument())
return false;
m_message = 褼efault message*;
return true;
}
经过对文档类的数据成员m_message进行初始化,应用程序可以在视图窗口中显示该数据.你只须编辑视图类的ondraw( )函数(参见程序清单2).在classview中扩展cfiledemoview,并双击ondraw( )函数编辑它.在这里也只要删除todo注释,添加一行代码....
下一页 摘要:我 们 编 写 了 一 个 扩 展 类 的 样 例 并 将 其 封 装 在 dll 中 以 向 你 演 示 该 过 程。
有 经 验 的 windows 编 程 人 员 都 逐 渐 放 弃 了 windows sdk, 而 转 向 能 为 windows 内 置 的 低 级 机 制 提 供 高 级 抽 象 的 开 发 环 境。 这 种 转 移 的 一 个 主 要 受 益 者 是 visual c......