第章基于文档/视图结构的程序.ppt
- 文档编号:2123376
- 上传时间:2022-10-27
- 格式:PPT
- 页数:57
- 大小:697.50KB
第章基于文档/视图结构的程序.ppt
《第章基于文档/视图结构的程序.ppt》由会员分享,可在线阅读,更多相关《第章基于文档/视图结构的程序.ppt(57页珍藏版)》请在冰豆网上搜索。
VisualC+VisualC+第第1212章章基于文档基于文档/视图结构的程序视图结构的程序本章内容本章内容本章内容本章内容主要包括建立基于文档/视图结构的应用程序方法,文档/视图结构应用程序的组成类及在应用程序架构中的作用,文档类CDocument与视图CView类,建立从CObject派生的类并实现对象的序列化操作。
要求了解要求了解要求了解要求了解建立文档/视图结构应用程序的方法、应用程序向导创建的三种应用程序类型、VC中对单链表的处理。
以Word为例,熟悉MDI应用程序中各个窗口所对应的类是什么,掌握文档类和视图类的常见成员函数、文档类和视图类的交互,熟练掌握VC中自定义类的持久化处理方法。
VisualC+VisualC+第第1212章章基于文档基于文档/视图结构的程序视图结构的程序12.112.1文档文档/视图结构视图结构12.212.2框架框架视图的容器视图的容器12.312.3文档文档管理和组织数据管理和组织数据12.412.4视图视图显示文档数据,提供用户接口显示文档数据,提供用户接口习题习题VisualC+VisualC+12.112.1文档文档/视图结构视图结构v文档视图结构是在VC中使用MFC开发基于文档应用程序的基本框架,在这个框架中,数据的维护及其显示分别由两个不同的,但又彼此紧密相关的对象文档和视图负责的。
文档对象通常代表应用程序中打开的一个文件,而视图窗口则提供了该文档对象中数据的可视化表示形式并接收用户的交互。
文档和视图关系是一对多的关系,即一个文档可以对应多个视图(如一个Word文档有大纲视图、页面视图、Web板式视图等),但一个视图只能对应一个文档。
12.1.112.1.1VCVC开发的应用程序类型开发的应用程序类型12.1.212.1.2文档文档/视图结构程序的主要组成类视图结构程序的主要组成类12.1.312.1.3从程序员角度看从程序员角度看SDISDI与与MDIMDI应用程序应用程序12.1.412.1.4应用程序类应用程序类12.1.512.1.5文档文档/视图结构优点视图结构优点VisualC+VisualC+12.1.112.1.1VCVC开发的应用程序类型开发的应用程序类型v利用MFC应用程序向导可以开发三种类型的应用程序:
v第一种是基于对话框的应用程序,上一章讲的对话框与控件大部分是基于对话框的应用程序。
v第二种是基于SDI(SingleDocumentInterface单文档接口)的应用程序,其特点是用户一次只能打开一个文档,若已经打开一个文档,想打开另一个文档时,必须关闭当前打开的文档。
v第三种基于MDI(MultiDocumentInterfac多文档接口)的应用程序,其特点是用户一次可以打开多个文档,若已经打开一个文档,又想打开另一个文档时,不必关闭当前打开的文档,它体现了Windows操作系统的多任务特点。
VisualC+VisualC+12.1.212.1.2文档文档/视图结构程序视图结构程序的主要组成类的主要组成类v1文档/视结构概述在MFC应用程序中,文档视图结构用来将程序的数据本身(靠CDocument类来管理)与数据的显示以及用户对数据的交互(靠CView类来管理)相隔离,这种模式与数据库系统中的“表/视图”关系相似。
v2SDI应用程序的组成类单文档应用程序是一种比较简单的基于文档/视图结构的程序,程序在运行过程中,只能打开该程序所关联的(如Word子处理程序关联的的是.Doc文件,即双击某个.Doc文件,启动它的是Word程序)一个文件。
v3MDI应用程序的组成类多文档应用程序是一种比较复杂的基于文档/视图结构程序,程序在运行过程中,可以打开该程序所关联的(如Excel电子表格处理程序关联的的是.xls文件,即双击某个.xls文件,启动它的是Excel程序)多个文件。
VisualC+VisualC+【例12-1】本实例实现一个简单的文本编辑器功能。
它是基于单文档的应用程序。
(1)实例创建步骤创建一个新的MFCAppWizard(exe)工程,工程名称为MyEditor。
在AppWizard的第一步中,选择类型为SingleDocument(单文档类型)。
AppWizard的第二步、第三步中使用缺省的选项,在第四步中,单击Advance(高级)按钮,弹出AdvanceOptions对话框,在FileExtension(文件扩展名)编辑框中输入txt2,如图图12.112.1所示。
完后按Close按钮。
AppWizard的第五步使用缺省的选项,在第六步中,将CMyEditorView类的基类设置为CEditView后,按Close按钮关闭该对话框,在余下的几步中,全部使用默认值。
最后单击“Finish”按钮,生成应用程序框架。
(2)SDI应用程序的组成类利用MFCAppWizard生成一个基于单文档的应用程序后,打开WorkSpace中的ClassView选项页,可以浏览到单文档应用程序的一些核心的组成类,如图图12.212.2所示,理解这些类及其之间的关系是理解该类应用程序的关键。
VisualC+VisualC+图
(一)图
(一)图12.2SDI程序的主要类图图12.1文件的高级选项对话框VisualC+VisualC+【例12-1】(续)向导生成的一个典型的单文档应用程序包括一个应用程序类CMyEditorApp、一个主框架窗口类CMainFrame、一个文档类CMyEditorDoc、一个视图类CMyEditorView、一个“关于”对话框类CAboutDlg。
打打开开上上述述五五个个类类的的定定义义文文件件,可可以以看看到到,基基于于文文档档/视视图图结结构构的的SDISDI应应用用程程序序至至少少由由以以下的几个类来组成:
下的几个类来组成:
应用程序类CMyEditorApp是一个从CWinApp类派生的类,它充当全部应用程序的容器。
框架窗口类CMainFrame是一个从CFrameWnd类派生的类。
在SDI应用程序中,框架窗口就是应用程序的主窗口,主窗口就是应用程序直接放置于桌面上的那个窗口,每个应用程序只能有一个主窗口,主窗口的标题栏上常常显示应用程序的名称(如在记事本程序中,新建一个文件后,主窗口的标题栏上显示“未定标题-记事本”)。
文档类CMyEditorDoc是从CDocument类继承而来的类,它存储应用程序的数据,并将这些信息提供给应用程序的其余部分。
视图类CMyEditorView是从CEditView类派生而来的,CEditView类提供了基本的文本编辑功能,是从CView类派生来的。
视图窗口与其父窗口框架窗口的客户区域对齐,它接收用户对应用程序的输入并显示相关联的文档数据。
对话框类CAboutDlg是从CDialog派生来的,该对话框类显示一个简单的版本信息的“关于”对话框。
对话框类的说明前面有一章已经专门讲解了。
VisualC+VisualC+【例12-1】(续)(3)运行SDI应用程序编译并运行上述程序的显示结果如图图12.312.3所示。
在客户区中输入一些文本,然后保存。
再新建一个,刚才所输入内容的文件已经关闭。
这是一个典型的单文档应用程序,看它是否和记事本程序的功能类似。
(4)保存文档在MyEditor应用程序的客户区输入一些文本后,单击“文件|保存”,则弹出图图12.412.4所示的“文件保存”对话框,将文件名编辑框中输入一个文件名如vc6,则在制定的目录下保存了一个vc6.txt2文件,其中保存类型编辑框中出现的的文字就是在图图12.112.1中的设置所起的作用。
另外,在Window下,我们直接双击刚才建立的文件vc6.txt2,则该文件自动用程序MyEditor打开,和在Windows下用鼠标双击某个.doc文件,则该文件自动用Word字处理程序打开类似,该功能是怎样实现的呢?
定位到应用程序类的InitInstance()函数中,可以看到下面的代码下面的代码:
VisualC+VisualC+BOOLCMyEditorApp:
InitInstance()BOOLCMyEditorApp:
InitInstance()CSingleDocTemplate*pDocTemplate;CSingleDocTemplate*pDocTemplate;pDocTemplate=newCSingleDocTemplate(pDocTemplate=newCSingleDocTemplate(IDR_MAINFRAME,IDR_MAINFRAME,RUNTIME_CLASS(CMyEditorDoc),RUNTIME_CLASS(CMyEditorDoc),RUNTIME_CLASS(CMainFrame),/mainSDIframewindowRUNTIME_CLASS(CMainFrame),/mainSDIframewindowRUNTIME_CLASS(CMyEditorView);RUNTIME_CLASS(CMyEditorView);AddDocTemplate(pDocTemplate);AddDocTemplate(pDocTemplate);/EnableDDEExecuteopen/EnableDDEExecuteopenEnableShellOpen();EnableShellOpen();/使得双击使得双击.txt2txt2文件类型时能调用该工程文件类型时能调用该工程MyEditorMyEditor打开打开RegisterShellFileTypes(TRUE);RegisterShellFileTypes(TRUE);/在注册表中注册文件类型在注册表中注册文件类型.txt2txt2/Parsecommandlineforstandardshellcommands,DDE,fileopen/Parsecommandlineforstandardshellcommands,DDE,fileopenCCommandLineInfocmdInfo;CCommandLineInfocmdInfo;ParseCommandLine(cmdInfo);ParseCommandLine(cmdInfo);上述两行加黑的代码的功能就是实现某种类型的文件与某个应用程序关联的语句,有了它就能在双击某种类型的文件时,调用相应的应用程序把其打开。
VisualC+VisualC+图
(二)图
(二)图12.4文件保存对话框图12.3MyEditor的运行界面VisualC+VisualC+【例12-2】本实例实现一个丰富文本编辑功能,即可以在当前文档中插入其它的图形、音频等。
它是基于多文档的应用程序。
(1)实例创建步骤创建一个新的MFCAppWizard(exe)工程,工程名称为MyWord。
在AppWizard的第一步中,选择类型为MultipleDocuments(多文档类型)。
AppWizard的第二步使用缺省的选项,在第三步中主要选择如何支持复合档支持文档的,我们选择“Container”容器支持,如图图12.512.5所示,完后按Next按钮。
AppWizard的第二步、第三步中使用缺省的选项,在第四步中,单击Advance(高级)按钮,弹出AdvanceOptions对话框,在FileExtension(文件扩展名)编辑框中输入doc2,如图图12.612.6所示。
完后按Close按钮。
AppWizard的第五步使用缺省的选项,在第六步中,将CMyWordView类的基类设置为CRichEditView后,按Close按钮关闭该对话框,在余下的几步中,全部使用默认值。
最后单击“Finish”按钮,生成应用程序框架。
(2)MDI应用程序组成类利用MFCAppWizard生成一个基于多文档的应用程序后,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 文档 视图 结构 程序
![提示](https://static.bdocx.com/images/bang_tan.gif)