- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
文档和视图 教学提示:MFC应用框架的基础是Document/View结构,文档是应用和用户操作的实体,视图实现文档的显示、编辑和打印。CDocument类提供了一个标准文档处理的接口,CView类提供文档的用户界面。 本章将介绍有关文档和视图的基本机制,并结合实例介绍使用CArchive类进行文档的序列化以及切分窗口、多视图的方法和技巧。 教学目标:了解文档和视图的基本结构,掌握使用CArchive类进行文档的序列化以及切分窗口和多视图的方法和技巧。 7.1 文档的序列化 7.1.1 磁盘文件和序列化 MFC提供了一个档案类(CArchive),允许将一个复杂结构的对象保存到字节流,待对象删除后,又可以从字节流中恢复对象。这种保存数据的方法,称为序列化(或串行化)。之所以称为是字节流,是因为序列化除了可以使用文件保存对象以外,还可以通过网络和串口传输对象。 1. 档案类CArchive的常用函数 CArchive类没有基类,提供了基本的保存和读取对象的操作。 2. 文件的读写操作 文件I/O服务是任何操作系统的主要服务,Win32提供了许多与文件相关的API:打开文件、关闭文件、读文件、写文件、搜寻数据等,MFC把这些操作都封装在CFile之中了。 有时如果用户并不想利用文档类提供的Serialize( )函数来进行文件的读写,但仍要使用序列化,这就需要创建并定制一个CArchive对象,注意要先创建一个CFile对象,并且必须保证CArchive对象和CFile对象的打开模式一致。 【例7.1】 编写一个基于对话框的应用程序Li7_1,使用档案类进行序列化。 (1) 使用MFC AppWizard创建一个基于对话框的应用程序Li7_1。 (2) 选择项目工作区的ResourceView,选中IDD_LI7_1_DIALOG,删去TODO文本,添加两个静态文本,并将其标题修改为“测试1”和“测试2”;添加两个编辑框,将其ID修改为IDC_EDIT_TEST1和IDC_EDIT_TEST2;添加两个按钮,将其ID修改为IDC_BUTTON_SAVE和IDC_BUTTON_READ。 (3) 选择View菜单中的ClassWizard菜单项,在Member Variables中,为IDC_EDIT_TEST1添加CString类型的变量m_test1,为IDC_EDIT_TEST2添加CString类型的变量m_test2。 (4) 添加IDC_BUTTON_SAVE的响应函数OnButtonSave,并在其中添加如下代码。 void CLi7_1Dlg::OnButtonSave() { UpdateData(TRUE);//将编辑框中的内容传递给变量 CFile f; f.Open(\\test.txt,CFile::modeCreate|CFile::modeWrite); CArchive ar(f,CArchive::store); arm_test1m_test2; ar.Close(); f.Close();} (5) 添加IDC_BUTTON_READ的响应函数OnButtonRead( ),并在其中添加如下代码。 void CLi7_1Dlg::OnButtonRead() { CFile f; if(f.Open(\\test.txt,CFile::modeRead)==FALSE) return; CArchive ar(f,CArchive::load); arm_test1m_test2; ar.Close(); f.Close(); UpdateData(FALSE);//将变量中的数据传递给编辑框 } (6) 编译、链接,运行Li7_1,并在其中输入test1和test2,单击【保存】,然后清除编辑框,再单击【读取】,运行结果如图7.1所示。 结果分析与讨论:使用档案类实现文件的读写,首先要创建一个文件对象,再创建一个档案类对象,并利用序列化保存到文件,然后再实现从文件中读取内容,要注意两种对象的创建顺序以及状态应该一致。 7.1.2 Document/View框架的主要成员 MFC应用程序主要包括用于封装Win32 API类和封装应用级概念的类,MFC的应用框架类都是CCmdTarget的派生类,其中的核心类有CDocument类、CView类、框架CFrameWnd类、CDocTemplate类和应用CWinApp类。 1. 应用类CWinApp及其功能 CWinApp应用类封装了Windows程序的初始化、运行和退出功能。基于MFC应用框架的程序必须有一个CWinApp派生类对象,该对象在任何窗口创建之前被构造
您可能关注的文档
最近下载
- 心理卫生与心理咨询00284.pdf VIP
- 新高一,第一次月考反思总结-高一上学期主题班会课件.pptx VIP
- 22-23年九上《道德与法治》期中试卷.pdf VIP
- 国开(SC)-安全原理-第4次形考作业-学习资料.docx VIP
- 道路交通信号灯设置与安装规范 GB14886-2016.docx VIP
- 最新苏教版六年级数学下册第一单元测试题.doc VIP
- 六年级语文质量分析语文工作总结PPT.pptx
- 2025至2030中国增塑剂(塑化剂)行业发展趋势分析与未来投资战略咨询研究报告.docx
- 智能学习环境构建在初中物理教学中的应用与效果评价教学研究课题报告.docx
- 2025民营经济促进法与案例讲座课件PPT.pptx
文档评论(0)