网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
对象的持久性和文件I/O
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
是很常见的。这使得编写访问文档变量的视图类的代码简单了一些。不过,这会使以后加强这个程序的功能时要做的工作增加。

像所有的文档数据一样,这个变量必须要初始化。这个工作在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注释,添加一行代码。

程序清单2   显示文档的数据

void CFileDemoView::OnDraw(CDC* pDC)

{

    CFileDoc* pDoc = GetDocument();

    ASSERT_VALID(pDoc);

  

    pDC->TextOut(20, 20, pDoc->m_message);

}

现在创建File Demo应用程序,确保没有错误,运行这个程序。缺省的消息就显示在屏幕中。

现在,增加程序的功能允许程序员通过修改串值来编辑应用程序的文档。理论上说应用程序应该显示一个对话框,让用户输入字符串。在这儿,我们利用Edit|Change Message菜单项来自动赋给消息串一个不同的值。

单击Resource选项卡切换到ResourceView,扩展resources,扩展Menus,双击IDR_MAINFRAME,编辑它。单击菜单中的Edit项,下拉出一个子菜单列表。单击列表末尾的空白项并输入Change &Message,向菜单中添加了另外一项。

选择View|ClassWizard使得这个菜单项与代码相关联。先使ID_EDIT_ CHANGEMESSAGE 被中,再从右上角的下拉框中选择CFileDemoView 。在左下角的框中单击COMMAND,然后单击Add Function按钮。单击对话框的OK按钮,接受所推荐的函数名称-OnEditChangeMessage( )。单击Edit Code,在编辑器中打开这个新函数,按程序清单3编辑它。

程序清单3   修改文档的数据

void CFileDemoView::OnEditChangemessage()

{

   CTime now = CTime::GetCurrentTime();

   CString changetime = now.Format(褻hanged at %B %d %H:%M:%S*);

   GetDocument()->m_message = changetime;

   GetDocument()->SetModifiedFlag();

   Invalidate();

}

  

  此函数响应应用程序的Edit|Message命令,利用当前的日期和时间创建一个串,并将它传送给文档数据成员。对文档类函数SetModifiedFlag( )的调用通知对象其内容已经改变。在用户可能修改数据的地方调用SetModifiedFlag( ),就会使程序在用户试图不保存修改过的数据而退出时发出警告。最后,代码调用Invalidate( ),强迫屏幕重绘。

提示:如果m_message是文档类的私有成员变量,就应该用公共的SetMessage( )函数来调用SetModifiedFlag( )函数。这样每次m-message改变时,都会调用SetModifiedFlag()函数。这是编写真正的面向对象的程序的好处。

文档类的Serialize( )函数处理保存和加载文档的数据。程序清单4显示了由AppWizard生成的Serialize( )的空壳。

程序清单4   FILEVIEW.CPP—文档类的Serialize( )函数

void CFileDoc::Serialize(CArchive& ar)

{

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

    免费论文

    原创论文

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