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

         return m_message2;

      case 3:

         return m_message3;

      default:

         return  " ";

   }

}

void CMessages::Serialize(CArchive& ar)

{

    CObject::Serialize(ar);

    if (ar.IsStoring())

    {

        ar << m_message1 << m_message2 << m_message3;

    }

    else

    {

        ar >> m_message1 >> m_message2 >> m_message3;

    }

}

在SetMessage( )和GetMessage( )函数中没有任何技巧,它们精确地完成所给予的任务。不过在Serialize( )函数中可能会产生一些问题。首先,注意函数体的第一行调用了基类的Serialize( )函数。这是一个标准的基类函数的重载函数。在本例中,对CObject::Serialize( )的函数调用没做多少事情,这是因为CObject类的Serialize( )函数为空。尽管如此,调用基类的Serialize( )函数是一个需要养成的好习惯,因为你建立的持久类不总是直接由CObject类派生的。

在调用的此函数基类版本后,Serialize( )用与文档对象相同的方式进行数据的保存和加载。因为必须串行化的数据成员是CString对象。程序可以使用>>和<<运算符将字符串写入磁盘。

在messages.cpp的顶部,include语句之后,添加下面的代码行:

IMPLEMENT_SERIAL(CMessages,CObject,0)

IMPLEMENT_SERIAL宏与DECLARE_SLRIAL( )组成一对,它提供了使类具有持续能力的函数的实现。此宏的三个变元是类名、直接基类名和方案号。方案号类似一个版本号。在多数情况下,可使用0或1作为方案号。

☆  在程序中使用CMessages类

现在CMessages已经被定义和实现了,MultiString的文档和视图的成员函数也已经可以执行了。首先扩展CMultiStringDoc,双击OnNewDocument( )编辑它。将下面的代码添加到TODO注释处:

m_messages.SetMessage(1, "Default Message 1");

m_messages.SetMessage(2, "Default Message 2");

m_messages.SetMessage(3, "Default Message 3");

由于文档类不能直接访问数据对象的数据成员,它必须通过调用CMessages类的SetMessage( )成员函数来初始化每一个字符串。

扩展CMultiStringView,双击OnDraw( )函数,按下面的代码行来编辑它:

void CMultiStringView::OnDraw(CDC* pDC)

{

        CMultiStringDoc* pDoc = GetDocument();

        ASSERT_VALID(pDoc);

    pDC->TextOut(20, 20, pDoc->m_messages.GetMessage(1));

    pDC->TextOut(20, 40, pDoc->m_messages.GetMessage(2));

    pDC->TextOut(20, 60, pDoc->m_messages.GetMessage(3));

}

与在创建File Demo时所作的类似,添加“Change Message”项目到Edit菜单中。将它与名为OnEditChangemessages的函数相关联。这个函数将会通过调用CMessages对象的成员函数来修改数据,如程序清单7所示。视图类函数OnDraw( )同样调用GetMessage( )成员函数,以访问CMessages类的串。

程序清单7   编辑数据串

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

    免费论文

    原创论文

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