网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
对象的持久性和文件I/O
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
e Demo程序类似,当用户选择File|Save或File|Open时可以保存或加载文档。

与创建File Demo程序类似,创建一个名为MultiString的SDI应用程序。添加一个成员变量到文档中,使得MultiStringDoc.h的Attributes部分如下所示:

//Attributes

public:

  CMessages  m_messages;

下一步就是编写CMessage类。

☆  CMessages类一览

在理解文档类如何成功实现保存和加载其内容之前,需要了解CMessages类是如何工作的,文档类的m_messages数据成员是该类的一个对象。在查看此类时,将看到上面提到的创建持久类所需的五个步骤是如何实现的。

要想创建CMessages类,首先选择Insert|New Class。修改其类类型为普通类,并命名为CMessages。在屏幕的下部,选择CObject作为基类名,并将As列设置为public,这样将创建两个文件:messages.h作为头文件,messages.cpp作为代码文件。同时还有一些简单的代码被添加到这些文件中(这时候可能会有一条警告信息,找不到CObject的头文件,单击OK忽略它。因为CObject像所有MFC文件一样,不需要包含额外的处理就是可用的)。

切换到Multistringdoc.h中,将下面的代码行添加到类定义部分:

#include "Messages.h"

这就保证了编辑器知道CMessages类的存在。现在切换回Messages.h,在其中添加下面的代码行:

DECLARE_SERIAL(CMessages)

protected:

   CString m_message1;

   CString m_message2;

   CString m_message3;

public:

   void SetMessage(UINT msgNum, CString msg);

   CString GetMessage(UINT msgNum);

   void Serialize(CArchive& ar);

DECLARE_SERIAL( )宏提供了实现对象持久性所需的附加的函数和成员变量声明。

下一步是类的数据成员,它们是Cstring类的三个对象。请注意它们现在是protected性质的成员变量。其后是public类型的成员函数。SetMessage( )函数的变元为需设置的字符串的索引号和字符串的新值,该函数使得程序能够改变一个数据成员。GetMessage( )是一个实现函数,它使得程序能够检索任何字符串的当前值。它的唯一参量是要检索的字符串的索引号。

最后,该类重载Serialize( )函数,在此所有的数据得以保存和加载,Serialize( )函数是一个持久对象的核心,每个持久类以不同方式实现。程序清单6显示了这些新成员函数的代码,将它添加到messages.cpp中。

程序清单6   MESSAGE.CPP—CMessage类的实现文件

void CMessages::SetMessage(UINT msgNum, CString msg)

{

     switch (msgNum)

     {

     case 1:

          m_message1 = msg;

          break;

     case 2:

        m_message2 = msg;

          break;

  

     case 3:

        m_message3 = msg;

          break;

     }

   SetModifiedFlag();

}

CString CMessages::GetMessage(UINT msgNum)

{

   switch (msgNum)

   {

      case 1:

         return m_message1;

      
  • 上一篇资讯: 深入MDI客户窗口编程
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号