欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    VC MFC 编程实例13.pdf

    • 资源ID:70023326       资源大小:38.93KB        全文页数:18页
    • 资源格式: PDF        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    VC MFC 编程实例13.pdf

    本文由s d h e x u 贡献 p d f 1。下载 第13章 文件,串行化和数据库 本章的例子涉及从简单二进制文件到访问第三方的数据库管理系统等方面的内容.文件 串行化的概念是 M F C特有的,串行化允许你组织如何保存类对象到磁盘上,以便以较小的代 价检索甚至升级它们.串行化从 a r c h i v e 文件中保存或调出,a r c h i v e 文件其实是一个二进制文 件.例63 访问二进制文件 讨论用MFC类访问和操作一个简单的二进制文件.例64 访问标准I/O文件 讨论用MFC类访问文本文件.例65 例66 访问内存文件 讨论创建和操作内存中的二进制文件.尤其是,内存文件可以使 在数据类中加入串行化功能.在本例中不实际串行化任 你利用文件系统的方法来访问堆内存的单元.在数据类中实现串行化 何东西 这些留到下五个例子来做.例67 串行化SDI或MDI文档 利用MFC的内置功能自动串行化数据类.例68 档.例69 例70 类.例71 串行化数据集 讨论MFC集类内置的串行化功能.例72 访问ODBC数据库 讨论怎样使用MFC类访问一个满足 ODBC协议的数据库.例73 访问DAO数据库 讨论怎样使用MFC类访问一个满足 DAO协议的数据库.透明地更新串行化的文档 串行化多态类 讨论怎样如何通过简单地修改新数据类,以转化旧数 据,使新数据类仍然能使用旧的串行化文档.串行化一组数据类,这些类的唯一共同点是它们派生于同一个基 按要求串行化 按要求串行化一个或多个数据类,而不仅仅是保存和装入一个文 13.1 例63 访问二进制文件 目标 在一个平面磁盘文件中维护二进制数据.策略 利用MFC的CFi l e 类,该类封装了 Wi n d o w s API中处理二进制文件的函数.步骤 1.检查文件是否存在 要判断某个文件是否已在磁盘上存在,可以使用静态 CFi l e 函数Ge t St a t u s().CFi l e St a t u s s t a t u s;i f (!CFi l e:Ge t St a t u s(s Fi l e,s t a t u s)226 第三部分 内部处理实例 下载 m s g.Fo r m a t(%s d o e s n o t e x i s t,s Fi l e);Af x Me s s a g e Bo x(m s g);2.创建一个二进制文件 为了创建一个可写的二进制文件,首先创建一个 C F i l e 类对象,然后利用 Op e n()成员函数 打开并创建一个文件对象.CFi l e f i l e;CSt r i n g m s g;CSt r i n g s Fi l e(Wz d.t m p);i f (!f i l e.Op e n(s Fil e,CFi l e:m o d e Cr e a t e|CFi l e:m o d e Wr i t e)m s g.Fo r m a t(Fa i l e d t o c r e a t e%s.,s Fi l e);Af x Me s s a g e Bo x(m s g);3.使用二进制文件 1)写二进制数据到文件中.f i l e.Wr i t e (b u f f e r,s i z e o f (b u f f e r);2)关闭文件,销毁文件对象.f i l e.Cl o s e();3)打开一个二进制文件进行读操作.i f (!f i l e.Op e n(s Fi l e,CFi l e:m o d e Re a d)m s g.Fo r m a t(Fa i l e d t o o p e n%s.,s Fi l e);Af x Me s s a g e Bo x(m s g);4)获得二进制或其他类型文件的长度.UINT n By t e s =f i l e.Ge t Le n g t h();5)使用如下函数之一以改变文件读写的当前位置.f i l e.Se e k To En d();f i l e.Se e k(20,CFi l e:b e g i n);f i l e.Se e k To Be g i n();/f i l e o f f s e t i n b y t e s /a l s o CFi l e:e n d a n d CFi l e:c u r r e n t 6)利用如下代码从二进制文件中读取数据,其中 n B y t e s 是实际读取的字节数.若 n B y t e s 比想要读取的字节数小或者为 0,则已到文件结束处.n By t e s =f i l e.Re a d (b u f f e r,s i z e o f (b u f f e r);7)设置文件为只读,使用 C F i l e 的静态成员函数 Se t St a t u s().本例中,我们获取文件当前 的任何状态,并加上只读状态标记.i f (CFi l e:Ge t St a t u s(s Fi l e,s t a t u s)s t a t u s.m _a t t r i b u t e|=0 x 01;CFi lp a g e 1e:Se t St a t u s(s Fi l e,s t a t u s);8)删除一个文件,使用 CFi l e 的另外一个静态函数 Re m o v e().CFi l e:Re m o v e (s Fi l e);下载 说明 第13章 文件,串行化和数据库 227 C+类中,C F i l e 和大多数其他 M F C类一样包含了许多一个 C+类中的 Wi n d o w s API调 用.CWn d 类对于窗口是这样,CMe n u 类对于菜单也是这样.关于操作文本文件参见下一个例子.CD说明 在C D上执行该工程时,在 W z d Vi e w.c p p 的O n Te s t Wz d()函数处设置断点.选取菜单上的 Te s t/Wz d 项,一步步地观察二进制文件的访问.13.2 例64 访问标准I/O文件 目标 操作文本文件.策略 利用M F C的C S t d i o F i l e 类操作文本文件.C S t d i o F i l e 从C F i l e 类派生,并封装 Wi n d o w s API 中用来处理文本文件的函数.步骤 1.检查一个文件是否存在 使用CFi l e 类的Ge t St a t u s()静态函数,判断一个文本文件是否存在.CFi l e St a t u s s t a t u s;CSt r i n g s Fi l e(Wz d.t x t);i f (!CFi l e:Ge t St a t u s(sFi l e,s t a t u s)m s g.Fo r m a t(%s d o e s n o t e x i s t,s Fi l e);Af x Me s s a g e Bo x(m s g);2.创建一个文本文件 打开一个文本文件以写文本串.本例中,若所找文件无法打开,则创建一个新文件.CSt d i o Fi l e f i l e;i f(!f i l e.Op e n(s Fi l e,CFi l e:m o d e Wr i t e|CFi l e:t y p e Te x t)i f(!f i l e.Op e n(s Fi l e,CFi l e:m o d e Cr e a t e|CFi l e:m o d e Wr i t e|CFi l e:t y p e Te x t)CSt r i n g m s g;m s g.Fo r m a t(Fa i l e d t o c r e a t e%s.,s Fi l e);3.使用文本文件 1)写一个文本串到文件中.228 f i l e.Cl o s e();第三部分 内部处理实例 下载 f i l e.Wr i t e St r i n g (s Re c o r d);2)关闭文件并销毁创建的文件对象.3)打开一个文本文件进行读操作.i f (!f i l e.Op e n(s Fi l e,CFi l e:m o d e Re a d|CFi l e:t y p e Te x t)m s g.Fo r m at(Fa i l e d t o o p e n%s.,s Fi l e);Af x Me s s a g e Bo x(m s g);4)定位到文件的头和尾.f i l e.Se e k To En d();f i l e.Se e k To Be g i n();5)从一个文本文件中读一个文本串.f i l e.Re a d St r i n g (s Re c o r d);6)删除一个文本文件.CFi l e:Re m o v e (s Fi l e);说明 与二进制文件以同样方式对待每个字节所不同的是,标准 I/O文件使用 f g e t s()和f p u t s()函数获取和输入文本串到文件中.既然C S t d i o F i l e 是从CFi l e 派生的,在 C F i l e 中可用的函数在此都可用.CD说明 在C D上执行该工程时,在 W z d Vi e w.c p p 中的函数 O n Te s t Wz d()处设置断点.选取菜单 上的Te s t/Wz d 项,一步步观看标准 I/O文件的访问.13.3 例65 访问内存文件p a g e 2 目标 在内存中生成一个文件,而不是在磁盘上生成一个临时文件.策略 使用MFC的CMe m Fi l e 类,该类是从CFi l e 类派生的,封装分配内存的 Wi n d o w s API.步骤 1.创建一个内存文件 要创始一个内存文件,只要创建一个 CMe m Fi l e 类对象.CMe m Fi l e f i l e;创建一个CMe m Fi l e 类对象自动打开一个内存文件.2.使用内存文件 1)写内存文件.下载 f i l e.Wr i t e (b u f f e r,s i z e o f (b u f f e r);第13章 文件,串行化和数据库 229 2)判断内存文件的当前长度.UINT n By t e s =f i l e.Ge t Le n g t h();3)使用以下方法定位下次读写的位置.f i l e.Se e k To En d();f i l e.Se e k(20,/f i l e o f f s e t i n b y t e s CFi l e:b e g i n);/a l s o CFi l e:e n d a n d CFi l e:c u r r e n t f i l e.Se e k To Be g i n();4)从内存文件中读数据.n By t e s =f i l e.Re a d (b u f f e r,s i z e o f (b u f f e r);5)删除内存文件有两种方法:一是销毁 CMe m Fi l e 类对象,二是设置文件长度为 0.f i l e.Se t Le n g t h (0);说明 内存文件为用户在内存中操作数据提供了一种方便的途径,而不必考虑释放和分配堆 空间的内存段.另外,内存文件可用作临时(.t m p )文件,这样可以加快应用程序的运行 速度,同时没有命名和删除临时文件的麻烦.C M e m F i l e 创建的内存文件是在应用程序的堆空间中生成的.若想在全局堆上创建内存 文件,相应地要使用 C S h a r e d F i l e,特别是剪贴板要求其获取的数据必须在全局堆中.关于此问题的例子参见例 76的剪切和粘贴.既然 C M e m F i l e 是从 C F i l e 而不是从 C S t d i o F i l e 派生来的,则必须实现 Re a d St r i n g()和 Wr i t e St r i n g()函数,以方便地操作内存文件中的文本数据.CD说明 在C D上执行该工程时,在 W z d Vi e w.c p p 中的O n Te s t Wz d()函数上设置断点.单击菜单上 的Te s t/Wz d 项,一步一步地观察内存文件的访问.13.4 例66 在数据类中实现串行化 目标 串行化数据类.策略 实现从COb j c t 派生过来的数据类的串行化.MFC的CObj e c t 类添加一个虚重载函数到类中,该函数为 Se r i a l i z e().我们将用我们自己的 Se r i a l i z e()重载这个 Se r i a l i z e(),使之装入和保存 成员变量到磁盘上.注意 本例中,数据类具有串行化自己的功能.实际如何串行化类到磁盘上参见下例.步骤 1.在数据类中加入 Se r i a l i z e()230 第三部分 内部处理实例 下载 从M F C的C O b j e c t 派生得到用户的数据类.不是从 C O b j e c t 派生的类不能进行串行化.因 为Cl a s s Wi z a r d 没有提供把 COb j e c t 作为类的基类的功能,则需要加进这个基类.c l a s s CMy Da t a :p u b l i c COb j e c t ;利用以下格式,在每个数据类中加入 Se r i a l i z e()成员函数.v o i d CWz d In f o 2:Se r i a l i z e(CAr c h i v e&a r)COb j e c t:Se r i a l i z e(a r);i n t v e r s i o n=1;i f(a r.Is St o r i n g()/s t o r e d a t a e l s e /l o a d d a t a 现在可以利用Se r i a l i z e()函数调出和保存每一个类的成员变量到存档设备中.p a g e 3如何串行化 一个成员变量依赖于变量类型.有三种变量类型:不是从 C O b j e c t 派生过来的简单变量,如 i n t e g e r s,f l o a t s 等;从COb j e c t 派生过来的变量;数据集,包括数组和列表.2.串行化简单变量 1)要保存数据类中不是从 C O b j e c t 派生的成员变量,在 Se r i a l i z e()函数的保存数据区 使用重载操作符.COb j e c t:Se r i a l i z e(a r);i f(a r.Is St o r i n g()/s t o r e m e m b e r v a r i a b l es n o t d e r i v e d f r o m COb j e c t a r m _s Na m e;a r 重载操 作符.COb j e c t:Se r i a l i z e(a r);i f(a r.Is St o r i n g()/s t o r e d a t a e l s e /l o a d m e m b e r v a r i a b l e s n o t d e r i v e d f r o m COb j e c t a r m _s Na m e;a r m _s Co mm e n t;3.串行化派生于COb j e c t 的变量 调用成员变量的 Se r i a l i z e()函数以保存派生于 COb j e c t 的成员变量./l o a d a n d s t o r e m e m b e r v a r i a b l e s d e r i v e d f r o m COb j e c t 下载 m _w z d In f o.Se r i a l i z e(a r);第13章 文件,串行化和数据库 231 可以在类的Se r i a l i z e()函数的调出和保存区中,调用该Se r i a l i z e()函数,或者在i f e l s e 表达式之后调用该 Se r i a l i z e()一次即可.若在变量类中没有实现 Se r i a l i z e(),则应该加上一 个.4.串行化数据集 1)保存数据集,使用如下语句.n Co u n t =m _Wz d In f o Li s t.Ge t Co u n t();/g e t n u m b e r o f /i t e m s i n a r Se r i a l i z e(ar);注意在这里我们首先保存数据集中工程的数目,然后一步一步地按顺序保存每个工程.2)使用如下语句,装入数据集./l o a d a l i s t o f d a t a a r n Co u n t;w h i l e (n Co u n t-0)CWz d In f o 2*p In f o =n e w CWz d In f o 2;p In f o-Se r i a l i z e(a r);m _Wz d In f o Li s t.Ad d Ta i l(p In f o);关于数据类串行化的详细清单,参见本节的清单 第一个数据类和清单 第二 个数据类.说明 串行化把数据类的每个成员变量按序列地存贮到磁盘上.调出或保存一个文档只不过 是串行化上千个数据类而已.只要文档按它保存的顺序调出,就没有必要对文件进行 其他控制.正如我们在后面例子看到一样,这种方法可以很快地把旧的文档格式转 化为新的格式.关于串行化和 COb j e c t 类的其他信息参见第 2章.串行化的存档设备可以是磁盘文件,内存文件或甚至是别的系统上的文件.在例 7 6中 可以看到,串行化到内存文件可以为用户提供一种快速易用方式,来剪切和粘贴自己 的数据类.一些M F C类可以使用 和 重载操作符来串行化其数据,但是这些类要自己实现这种 操作.如CSt r i n g 就使用这个操作符.可以通过测试查看还有哪些 MFC类有这样的功能.把保存一个类对象并能在以后恢复它的能力叫做对象存留.CD说明 本例子的工程称为 Se r i a l i z a t i o n ,开始时在 Wz d Do c.c p p 中Se r i a l iz e()上设置断点.然后p a g e 4 232 第三部分 内部处理实例 下载 单击Te s t/Wz d 菜单命令填充文档,之后单击 Fi l e/Sa v e 开始串行化功能.清单第一个数据类#i f n d e f WZDINFO1_H#d e f i n e WZDINFO1_H#i n c l u d e a f x t e m p l.h#i n c l u d e Wz d In f o 2.h c l a s s CWz d In f o 1:p u b l i c COb j e c t p u b l i c:CWz d In f o 1();CWz dIn f o 1();/m i s c i n f o CSt r i n g CSt r i n g m _s Gr o u p Na m e;m _s Co m m e n t;CLi s t m _Wz d In f o 2Li s t;v o i d Se r i a l i z e(CAr c h i v e&a r c h i v e);#e n d i f /Wz d In f o 1.c p p :i m p l e m e n t a t i o n o f t h e CWz d In f o c l a ss /#i n c l u d e s t d a f x.h#i n c l u d e Wz d In f o 1.h /CWz d In f o CWz d In f o 1:CWz d In f o 1()m _s Gr o u p Na m e=_T();m _s Co m m e n t=_T();CWz d In f o 1:CWz d Inf o 1()w h i l e (!m _Wz d In f o 2Li s t.Is Em p t y()d e l e t e m _Wz d In f o 2Li s t.Re m o v e Hea d();v o i d CWz d In f o 1:Se r i a l i z e(CAr c h i v e&a r)下载 COb j e c t:Se r i a l i z e(a r);i n t n Co u n t;i f (a r.Is St o r i n g()/n a m e an d c o m m e n t a r m _s Gr o u p Na m e;a r m _s Co m m e n t;/o t h e r l i s t n Co u n t =m _Wz d In f o 2Li s t.Ge t Co u n t();a r n Co u n t;第13章 文件,串行化和数据库 233 f o r (POSITION p o s =m _Wz d In f o 2Li s t.Ge t He a d Po s i t i o n();p o s;)CWz d In fo 2*p In f o =m _Wz d In f o 2Li s t.Ge t Ne x t(p o s);a r m _s Gr o u p Na m e;a r m _s Co m m e n t;/o t h e r l i s t a r n Co u nt;COb j e c t*p In f o;w h i l e (n Co u n t-0)a r p In f o;m _Wz d In f o 2Li s t.Ad d Ta i l(CWz d In f o 2*)p In f o);清单第二个数据类#i f n d e f WZDINFO2_H#d e f i n e WZDINFO2_H c l a s s CWz d In f o 2:p u b l i c COb j e c t p u b l i c:e n u m STATES OLD,NEW,MODIFIED,234 DELETED ;第三部分 内部处理实例 下载 DECLARE_SERIAL(CWz d In f o 2)CWz d In f o 2();CWz d In f o 2(CSt r i n g s Na m e,i n t n Ve r s i o n);v o i d Se t(CSt r i n g s Na m e,CSt r i n g s Co m m e n t,i n t n Ve r s i o n,i n t n St a t e);/m i s c i n f o CSt r i n g CSt r i n g i n t m _s Na m e;m _s Co m m e n t;m _n St a t e;v o i d Se r i a l i z e(CAr c h i v e&a r c h i v e);CWz d In f o 2&o p e r a t o r=(CWz d In f o 2&s rc);#e n d i f /Wz d In f o 2.c p p :i m p l e m e n t a t i o n o f t h e CWz d In f o c l a s s /#in c l u d e s t d a f x.h#i n c l u d e Wz d In f o 2.h /CWz d In f o IMPLEMENT_SERIAL(CWz d In f o 2,COb j e c t,0)CWz d In f o 2:CWz d In f o 2()m _s Na m e=_T();m _s Co m m e n t=_T();m _n St a t e=CWz d In f o 2:NEW;CWz d In f o 2:CWz d In f o 2(CSt r i n g s Na m e,i n t n Ve r s i o n):m _s Nam e(s Na m e),m _n Ve r s i o n(n Ve r s i o n)m _s Co m m e n t=_T();m _n St a t e=CWz d In f o 2:OLD;v o i d CWz d In f o 2:Se t(CSt r i n g s Na m e,CSt r i n g s Co m m e n t,i n t n Ve r s i o n,i n t n St a t e)下载 m _s Na m e=s Na m e;m _s Co m m e n t=s Co m m e n t;m _n St a t e=n St a t e;第13章 文件,串行化和数据库p a g e 5 235 v o i d CWz d In f o 2:Se r i a l i z e(CAr c h i v e&a r)COb j e c t:Se r i a l i z e(a r);i f(a r.Is St o r i n g()/d a t a a r m _s Na m e;a r m _s Co m m e n t;a r m _s Na m e;a r m _s Co m m e n t;a r m _n St a t e;CWz d In f o 2&CWz d In f o 2:o p e r a t o r=(CWz d In f o 2&s r c)i f(t h i s !=&s r c)m _s Na m e =s r c.m _s Na m e;m _s Co m m e n t =s r c.m _s Co m m e n t;m _n St a t e =s r c.m _n St a te;r e t u r n *t h i s;13.5 例67 串行化SDI或MDI文档 目标 利用MFC框架的内建特征串行化 SDI和MDI文档到磁盘.策略 利用文档类中的两个函数实现从磁盘中调出文档或串行化文档到磁盘上.第一个是文档 236 第三部分 内部处理实例 下载 类的Se r i a l i z e()函数,通过对它编程,系统地调用文档中每个数据类实例的 Ser i a l i z e()成员函 数(在前例中,我们已经添加了该成员函数).第二个是 De l e t e Co nt e n t s(),用来初始化文档.我们还将编辑一段代码来定制打开文件对话框的文档扩展名.步骤 1.使用文档类的Se r i a l i z e()定位Do c u m e n t 类的Se r i a l i z e()成员函数,如前例一样,在 Se r i a l i z e()函数中填入代码.在 此只是简单地串行化文档类的每个成员变量到作为参数所传递过来的存档类参考中.2.使用文档类的De l e t e Co n t e n t s()使用 C l a s s Wi z a r d,在文档类中加入 De l e t e Co n t e n t s()重载函数.当选择 F i l e /N e w 或者 Fi l e/Op e n 菜单命令时,该重载函数被自动调用,提供一个重新初始化文档的机会.v o i d CWz d Do c:De l e t e Co n t e n t s()/c a l l e d b y n e w a n d o p e n d o c u m e n t /o p p o r t u n i t y t o i n i t i a l i z e t h e d a t a c o l l e c t i o n s /t h a t m a k e u p y o u r d o c um e n t w h i l e (!m _Wz d In f o 1Li s t.Is Em p t y()d e l e t e m _Wz d In f o Li s t.Re m o v e He a d();CDo c u m e n t:De l e t e Co n t e n t s();在D o c u m e n t 类中不必添加其他重载函数或消息处理函数.当单击 F i l e /N e w 或者F i l e /O p e n 时,应用程序框架将自动地打开一个 Op e n Fi l e 对话框,提示用户输入一个文件名.一旦选定,应用程序将打开一个文件和一个存档,然后调用文档类的 De l e t e Co n t e n t s().一旦文档被初始 化,应用程序会调用 Se r i a l i z e()函数.用户选择 Fi l e/s a v e 或Fi l e/Sa v e As 时也是如此.如果用户单击的是 Fi l e/Ne w 菜单命令,只有 De l e t e Co n t e n t s()被调用.自动打开的 Fi l e Di a l o g 使用你给出的文件扩展名,在文件列表中过滤掉其他非此类型的文 档.也可在使用 Ap p Wi z a r d 创建应用程序时指定这个文件扩展名.如果没有这么做,也可以在 应用程序的字符串表中编辑一个字符串,指定文件扩展名.3.指定文件扩展名 为了定制在应用程序中打开供用户选择文件名的文件对话框,可以在字符串资源表中编 辑一个字符串.定位定义文档类型的字符串.在本例中,I D为I D C _ W Z D T Y P E.对这个字符 串所需的修改如下面灰底和下划线的部分.n Wz d n Wz d n Wz d Fi l e s (*.w z d)n.w z d n Wz d.Do c u m e n t n Wz d Do c u m e n t 说明 严格地说,即使是De l e t e Co n t e n t s(),也只是在SDI应用程序才被用到.当一个 MDI应用 程序打开一个新的或已经存在的文档时,一个新的文档类被创建.因此,任意文档的初 始化工作都可以在文档类的构造函数中进行.但是,习惯上应使用 De l e t e Co n t e nt s().下载 CD说明 第13章 文件,串行化和数据库 237 本例子的工程叫 Se r i a l i z a t i o n .首先在Wz d Do c.c p p 中的Se r i a l i z e()上设置断点.然后单 击Te s t/Wz d 菜单命令来填充文档.最后,单击 Fi l e/s a v e 开始串行化工作.清单文档类p a g e 6 /Wz d Do c.h :i n t e r f a c e o f t h e CWz d Do c c l a s s /#i f !d e f i n e d(AFX_WZDDOC_H_CA9038EE_B0DF_11D1_A18C_DCB3C85EBD34_INCLUDED_)#d e f i n e AFX_WZDDOC_H_CA9038EE_B0DF_11D1_A18C_DCB3C85EBD34_INCLUDED_#i f _MSC_VER=1000#p r a g m a o n c e#e n d i f /_MSC_VER=1000#i n c l u d e a f x t e m p l.h#i n c l u d e Wz d In f o 1.h#i n c l u d e Wz d In f o 2.h c l a s s CWz d Do c :p u b l i c CDo c u m e n t p r o t ec t e d:/c r e a t e f r o m s e r i a l i z a t i o n o n l y CWz d Do c();DECLARE_DYNCREATE(CWz d Do c)/At t r i b u t e s p u b l i c:CLi s t *Ge t In f o 1Li s t()r e tu r n&m _Wz d In f o 1Li s t;/Op e r a t i o n s p u b l i c:/Ov e r r i d e s /Cl a s s Wi z a r d ge n e r a t e d v i r t u a l f u n c t i o n o v e r r i d e s /AFX_VIRTUAL(CWz d Do c)p u b l i c:v i r t ua l v o i d Se r i a l i z e(CAr c h i v e&a r);v i r t u a l v o i d De l e t e Co n t e n t s();v i r t u a l BOOL On Ne w Do c u m e n t();/AFX_VIRTUAL/Im p l e m e n t a t i o n p u b l i c:v i r t u a l CWzd Do c();#i f d e f _DEBUG v i r t u a l v o i d As s e r t Va l i d()c o n s t;v i r t u a l v o i d Du m p(CDu m p Co n t e x t&d c)c o n s t;238#e n d i f p r o t e c t e d:第三部分 内部处理实例 下载 /Ge n e r a t e d m e s s a g e m a p f u n c t i o n s p r o t e c t e d:/AFX_MSG(CWz d Do c)/NOTE-t h e Cl a s s Wi z a r d w i l l a d d a n d r e m o v e m e m b e r f u n c t i o n s h e r e./DO NOT EDIT w h a t y o u s e e i n t h e s e b l o c k s o f g e n e r a t e d c o d e!/AFX_MSG DECLARE_MESSAGE_MAP()p r i v a t e:CLi s t m _Wz d In f o 1Li s t;/AFX_INSERT_LOCATION /Mi c r o s o f t De v e l o p e r St u d i o w i l l i n s e r t a d di t i o n a l d e c l a r a t i o n s i m m e d i a t e l y /b e f o r e t h e p r e v i o u s l i n e.#e n d i f /!de f i n e d(AFX_WZDDOC_H_CA9038EE_B0DF_11D1_A18C_DCB3C85EBD34_INCLUDED_)/Wz d Do c.c p p :i m p l e m e n t a t i o n o f t h e CWz d Do c c l a s s /#i n c l u d e s t d a f x.h#in c l u d e Wz d.h#i n c l u d e Wz d Do c.h#i f d e f _DEBUG#d e f i n e n e w DEBUG_NEW#u nd e f THIS_FILE s t a t i c c h a r THIS_FILE=_FILE_;#e n d i f /CWz d D

    注意事项

    本文(VC MFC 编程实例13.pdf)为本站会员(qwe****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开