版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、于东2021上,第八周;2;3;利用Class Wizard创建Doc/View程序Doc/View程序框架分析View类的编程方法(1)基于CEditView的编程基于CFormView的编程Doc类的编程文档序列化4;5全部下一步,直至完成全部下一步,直至完成;6自动创建自动创建4 4个类,分个类,分别是:别是:视图类视图类运用程序类运用程序类程序主框架类程序主框架类文档类文档类指定指定ViewView类的基类,类的基类,可获得不可获得不同视图类同视图类型型演示W8_1;7标题栏菜单栏工具栏形状栏Document窗口AppApp类对象类对象DocDoc类对象类对象MainFrmMainFr
2、m对象对象ViewView对象对象;在Dlg程序中,App类担任启动程序,创建Dlg类对象,之后一切操作都放在Dlg类中完成,包括音讯映射函数窗口各种控件变量需求保管的各种数据子Dlg对象、操作函数等假设程序比较复杂,Dlg类会变得混乱不堪。比如,要在程序中添加一个算法,再添加一组文件格式操作方法,再添加一组变量,再添加数据库的读取,再添加。都在dlg类中?8;暂时忘记简单的Dlg,回想Win程序的最初了解。用户对Windows程序的要求要有界面,界面可以处置用户音讯能够是很复杂的界面操作。比如画图,比如3D显示,比如复杂文档显示。要可以处置、保管数据能够是很复杂的数据,比如Ecxel、wor
3、d文档数据为了应对复杂的操作,可以思索将这两者分开实现。单独写一个类,处置界面操作即Cview视图类单独写一个类,处置用户的数据操作即CDoc文档类9;Doc+View的搭配是MFC胜利的灵魂在Doc中,可以运用多种数据构造,实现各种数据的保管、处置、加工等。在View中,将数据“画在屏幕上,运用坐标、画笔、颜色、字体、鼠标控制,等等。View还担任人机交互,担任音讯呼应,担任从Doc中读写数据。10;程序框架MainFrm将程序“界面进一步分为两部分,第一部分是与程序Doc和View无关的部分,比如,程序外框、标题栏、封锁按钮、菜单、形状栏等,将这些部分作为程序“框架。Doc和View程序需
4、求处置的数据以及对应的显示数据的手段。每个View对象都需求与至少一个Doc对象“绑定实现数据传输每个Doc对象也需求经过View来显示给用户单文档SDI和多文档MDI程序SDI程序中只允许运用一个Doc对象。MDI程序中在同一时间允许运用多个Doc对象。11;利用Class Wizard创建Doc/View程序Doc/View程序框架分析View类的编程方法(1)基于CEditView的编程基于CFormView的编程Doc类的编程文档序列化12;运用程序类运用程序类W8_1.hW8_1.h程序主框架类程序主框架类MainFrm.hMainFrm.h视图类视图类View.hView.h文档类
5、文档类Doc.hDoc.h13;14从头文件看,与Dlg程序根本一致,也是只实现了InitInstance方法。;Dlg程序的InitInstance担任创建、显示Dlg类对象SDI程序的InitInstance,创建的是“文档模板类对象15;文档模板类的意义SDI程序中,View类和Doc类相互独立,而MainFrm类实践上是View类的一个容器。三者共同组成了程序的表里。由于三者实践上是并行的类,因此三者之间的数据传输就成了问题。简单的相互访问可经过获取指针实现,但假设要求数据的自动同步,就很难实现。在App类的InitInstance中,经过CSingleDocTemplate模板类,用
6、一种复杂的手段将三者绑定在一同。在此之后,三者之间可以经过各自内部的成员函数,实现相互的数据访问。16参考资料:wenku.baidu/view/7ce66f20af45b307e871978a.html;运用程序类运用程序类W8_1.hW8_1.h程序主框架类程序主框架类MainFrm.hMainFrm.h视图类视图类View.hView.h文档类文档类Doc.hDoc.h17;18这里定义了默许的形状栏和工具栏对象与Dlg程序中的OnInitDlg类似,这里的初始化函数叫做OnCreate。SDI的OnCreate函数中,完成了形状栏和工具栏的初始化,并实现了工具栏的Docking;运用程
7、序类运用程序类W8_1.hW8_1.h程序主框架类程序主框架类MainFrm.hMainFrm.h视图类视图类View.hView.h文档类文档类Doc.hDoc.h19;20View类访问Doc类对象的通路;21View类默许的音讯呼应重要:重绘音讯呼应函数;运用程序类运用程序类W8_1.hW8_1.h程序主框架类程序主框架类MainFrm.hMainFrm.h视图类视图类View.hView.h文档类文档类Doc.hDoc.h22;23OnNewDocumentOnNewDocument函数,即为菜单中函数,即为菜单中“新建对应的呼应函数新建对应的呼应函数SerializeSerializ
8、e函数,实现文档序列化,即实现数据的存储、读写操作。函数,实现文档序列化,即实现数据的存储、读写操作。; 文档序列化函数中,程序并不知道用户需求处置什么样的文档序列化函数中,程序并不知道用户需求处置什么样的数据,因此只给出一个数据,因此只给出一个“空壳构造,没有实现任何操作。空壳构造,没有实现任何操作。 在点击菜单或工具栏中的翻开、保管、另存为按钮时,程在点击菜单或工具栏中的翻开、保管、另存为按钮时,程序会经过序会经过“绑定机制执行序列化函数。绑定机制执行序列化函数。24;程序框架包含4个类:App、MainFrm、View、DocApp类担任启动程序,创建“文档模板对象实现View/Doc/
9、MainFrm的绑定MainFrm类担任实现程序框架,以及其中的界面元素View类担任实现数据内容的展现和处置界面,并且担任处置界面音讯。Doc类在初始化的时候,并未定义任何数据,需求用户按照本人需求编写该类。框架程序仅在View类中实现GetDocument方法,获取Doc对象指针。25ViewView类编程是重点内容类编程是重点内容;利用Class Wizard创建Doc/View程序Doc/View程序框架分析View类的编程方法(1)基于CEditView的编程基于CFormView的编程Doc类的编程文档序列化26;Dlg程序经过组合多种控件完成程序功能SDI框架为View视图类提供
10、了假设干种基类,可以直接实现各种典型运用。如:CEditView:提供包含编辑控件的视图,可实现文本编辑CFormView:提供类似对话框模板的视图,CScrollView:提供自动滚动、缩放功能的视图CListView: 提供列表控件视图CTreeView: 提供树控件视图CCtrlView: 提供以上各种视图的基类视图CView: 直接对视图进展编程27;创建方法:在创建的第6步中,选择View类的基类为CEditView。28;什么都不需求做,就能实现最简单的文本文件读取、保管、修正等操作。29当然,这个程序非常简单,以致于只能展现看看,根本无法运用。更常用的一种视图,是FormView
11、演示;概念:Form即表单,类似于无方式对话框的款式,可以安顿各种控件,当作一个对话框来运用。经过FormView,可以在SDI程序中很方便的运用各种Dlg程序中的控件。实例:以FormView为视图类的基类,实现一个文本编辑器。30;Step1Step1:建立:建立SDISDI程序,在第程序,在第6 6步时,选择步时,选择ViewView类的基类的基类为类为CFormViewCFormViewStep2Step2:在出现的类似于对话框的面板上安顿控件:在出现的类似于对话框的面板上安顿控件31与Dlg的运用完全一致,可以添加各种控件。在View类中,为这些控件添加相应的音讯呼应和变量;Step
12、3Step3:添加:添加ButtonButton音讯呼应,为音讯呼应,为EditEdit添加添加CstringCstring变量变量32在资源管理器中,Form也属于一种对话框;Step4Step4:在:在DocDoc类中,添加类中,添加CstringCstring变量,用来存储变量,用来存储EditEdit字符串数据字符串数据Step5Step5:经过文档序列化实现文档翻开:经过文档序列化实现文档翻开33;Step6Step6:在:在ViewView类中添加类中添加OnUpdateOnUpdate函数实现文档到视函数实现文档到视图的自动更新图的自动更新34;Step6Step6:在:在Vie
13、wView类中添加类中添加OnUpdateOnUpdate函数实现文档到视函数实现文档到视图的自动更新图的自动更新到目前,程序可以翻开显示一个文本文档,但无法到目前,程序可以翻开显示一个文本文档,但无法保管保管35;Step7: Step7: 修正文档序列化函数,实现文档保管修正文档序列化函数,实现文档保管36获取窗口框架指针获取当前视图指针序列化,保管数据;Step8: Step8: 为了使界面更美观,为控件添加一个为了使界面更美观,为控件添加一个WM_SIZEWM_SIZE音讯呼应,来实现自动调整页面大小。音讯呼应,来实现自动调整页面大小。37; 可以将可以将FormViewFormView看作看作DlgDlg的扩展,的扩展,dlgdlg能做的事情,能做的事情,formviewformview都能做都能做 运用运用FormViewForm
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论