250 likes | 433 Views
计算机高级程序设计 第三章. 第三章内容. 3.1 文档、视图的概念 3.2 创建 MFC 单文档应用程序 3.3 创建 MFC 多文档应用程序 3.4 创建基于对话框的应用程序. 3.1 文档、视图的概念. 什么是 MFC ? MFC (Microsoft Foundation Class Library ,微软基本类库 ) 中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立 Windows 下的应用程序,这是一种相对 SDK 来说更为简单的方法。
E N D
计算机高级程序设计 第三章
第三章内容 • 3.1 文档、视图的概念 • 3.2 创建MFC单文档应用程序 • 3.3 创建MFC多文档应用程序 • 3.4 创建基于对话框的应用程序 西南交通大学经济管理学院:何耀琴
3.1 文档、视图的概念 • 什么是MFC? • MFC (Microsoft Foundation Class Library,微软基本类库)中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。 • 总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。 • Microsoft Visual C++提供了相应的工具来完成这个工作:AppWizard可以用来生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口;ClassWizard用来协助添加代码到框架文件; • MFC为程序员提供了一种特殊的、面向实体应用的程序结构,它由文档和视图两部分组成。 • 用MFC可创建多视图的多文档应用程序。 西南交通大学经济管理学院:何耀琴
文档的概念 • 在MFC中,文档包括文本、图形、图像和表格,是能够被逻辑组合的一系列数据,适用范围很广。 • 一个文档代表了用户要存储或打开的一个文件单位。 • 文档的作用是把对数据的处理从对用户界面的处理中分离出来,集中处理数据,同时为其他类的交互提供一个接口。 • 在程序中的文档是作为文档类的对象定义的,文档类从MFC库中的CDocument类派生而来,并通过添加它的数据成员来存储应用程序所需要的数据,再通过添加成员函数来支持对数据的处理。 • 由于文档类是从MFC库中定义的基类继承的,因此,不需要编写太多的代码就可以使应用程序获得大量功能 西南交通大学经济管理学院:何耀琴
CDocument类主要成员函数 西南交通大学经济管理学院:何耀琴
视图的概念 • 视图是文档在屏幕上的一个映像,每个视图都有一个与之对应的文档。 • 用户透过视图可看到文档或改变文档。视图在用户和文档之间起到媒介的作用。 • 应用程序则通过视图显示文档中的数据,并把用户的输入解释为文档的操作。 • 通过从MFC库中的Cview类派生的方法可定义自己的视图类。 西南交通大学经济管理学院:何耀琴
Cview类主要成员函数 注:GDI(图形设备接口)是Windows 的一个子系统,它主要负责在显示屏幕与打印设备输出有关信息,它是一组通过C++类实现的应用程序编程接口。GDI使得应用程序开发人员在输出屏幕与打印机信息的时候无需考虑具体显示设备的细节,而只需调用GDI库输出的类的一些方法即可完成图形操作,真正的绘图工作由这些方法交给特定的设备驱动程序来完成,起到使图形硬件与应用程序相互隔离的作用,从而使开发人员编写设备无关的应用程序变得非常容易。 西南交通大学经济管理学院:何耀琴
文档和视图的对应关系 视图1 • 一个视图总是与一个文档对象相关联,用户通过视图与其相关联的文档进行交互。 • 反过来,一个文档却可以与任意多个视图对象关联。其对应关系见左图。 文档 视图2 …… …… …… …… …… …… …… …… …… 西南交通大学经济管理学院:何耀琴
文档与视图连接关系 文档、视图和框架窗口之间的协作是由文档模板管理的。 文档模板也是MFC类的对象。它不但管理程序中的文档对象,还管理与文档相关的窗口和视图。 在应用程序中每种文档类都需要一个文档模板。而一个文档模板可以管理多个相同类型的文档。 应用程序对象 文档模板 文档对象 框架窗口 从图中可看出:文档模板创建了文档对象和框架窗口,而文档的视图是由框架窗口创建的。 视图对象 西南交通大学经济管理学院:何耀琴
MFC应用程序基类图 基于MFC的应用程序有4种基本类型,均包含以下4个基本的类: • 应用程序类CMyApp • 框架窗口类 CMyWnd • 视图类CMyView • 文档类CMyDoc • 类的实际名称可能因特定的应用程序而异,但派生情况大致相同。 CObject MFC应用程序基类 CCmdTarget CWinThread CWnd CDocTemplate CCDocument CWinApp CFrameWnd CView CSingleDocTemplate CMyApp CMyWnd CMyView CMyDoc 应用程序类 西南交通大学经济管理学院:何耀琴
3.2 创建MFC单文档(SDI)应用程序 • 创建MFC应用程序时,要用3个主要工具: • 应用程序向导:创建基本的程序框架。完全自动生成,不需写任何代码。 • 类视图:在类视图中单击鼠标右键就可为程序添加新类或新资源(图标、位图等)。 • 资源管理器:可对资源进行修改。 • 创建MFC应用程序时,项目类型要选“MFC”,模板类型要选“MFC应用程序”,然后可创建“单文档”、“多文档”和“基于对话框”的应用程序。 • 默认为“多文档”类型,要创建单文档类型,先选择“应用程序类型”,再选择“单文档”按钮。可取消默认的“Unicode库”(不管中英文字符都是双字节编码)的默认选中项,其他的默认可以不改。 • 在“MFC应用程序向导”对话框左边选择“文档模板字符串”,在“文件扩展名”要创建文件的扩展名,如“Sample.txt”,可以看到扩展名一输后,筛选器名等就自动出现在框里了。 西南交通大学经济管理学院:何耀琴
MFC应用程序向导 西南交通大学经济管理学院:何耀琴
MFC应用程序向导 用户界面功能基本保留默认不改动。 西南交通大学经济管理学院:何耀琴
MFC应用程序向导 往应用程序菜单项中添加打印、打印预览等 西南交通大学经济管理学院:何耀琴
MFC应用程序向导 类的成员函数? 选定生成的类中每一项,可看到下面框中的变化。类的定义在.h头文件中,成员函数的实现在.cpp文件中。单击“完成”,就生成了一个单文档应用程序。程序虽不能完成什么功能,但程序中也具有基本框架。 西南交通大学经济管理学院:何耀琴
VC2008编程界面 • 应用程序向导生成的所有文件都存储在指定位置的与应用程序同名的文件夹中。IDE(集成开发环境)中可用多种方法查看。 西南交通大学经济管理学院:何耀琴
查看项目文件 • 将解决方案资源管理器下面的列表文件的 “+”号 展开,就可以看到完整的文件列表。 • 双击列表中某个文件名,就可以在右边的编辑窗口中看到该文件内容。 查看类 • 文件列表下方有几个选项卡,分别是“解决方案资源管理器”、“类视图”、“属性管理器”、“资源管理器”,单击“类视图”选项卡,类视图上方窗格会显示项目中定义的类,再单击某个类名,该类的成员会显示在下方窗格中。双击某个类名时,右边编辑框中会显示该类的定义。 西南交通大学经济管理学院:何耀琴
设置项目属性 • 在“解决方案资源管理器”选项卡中用鼠标右键单击项目名,并从弹出的快捷菜单中选择“属性”,打开属性页对话框。 属性组 常规属性组的属性 选中某个属性组,该组属性就会出现在右边。单击某个属性的值时,在属性名右边会出现下拉列表,在下拉列表中可选择新的属性值。 西南交通大学经济管理学院:何耀琴
创建可执行模块 • 应用程序编写完后,可生成执行模块。方法同前。 • 单击“生成” →“生成解决方案” • 如果未报错,可运行。 西南交通大学经济管理学院:何耀琴
3.3 创建MFC多文档应用程序 • 多文档界面 (MDI) 基于窗体的应用程序能够支持同一窗体的多个实例。 • 前面操作相同,只是在“MFC应用程序向导”对话框中,项目类型选“MFC”,模板类型选“MFC应用程序”之后, 保持“多文档”默认的“多文档”类型。 • 例如生成应用程序“try”,查看“生成的类”,看到比单文档应用程序多出一个由MFC类“CMDIChildWnd”派生的类“CChildFrame”,该类为出现在CMainFrame对象创建的应用程序窗口内部的文档视图提供框架窗口。 • 单文档应用程序只有一个文档,此文档又只有一个视图,帮该视图显示在主框回窗口的客户区中。而在多文档应用程序中,可以打开多个文档,每个文视都可以对应一个视图,因而每个文档视图都有自己的由CChildFrame类对象创建的子框架窗口。 西南交通大学经济管理学院:何耀琴
多文档程序生成的类 西南交通大学经济管理学院:何耀琴
生成解决方案并运行可看到除主窗口外还有子窗口生成解决方案并运行可看到除主窗口外还有子窗口 西南交通大学经济管理学院:何耀琴
3.4 创建基于对话框的应用程序 • 菜单、工具栏等界面元素只能向用户显示提示信息,不能与用户交互,即不能接受用户输入的信息。 • 在MFC中,对话框的功能被封装在CWnd的派生类CDialog类中。 • 基于对话框的程序运行后会出现一个对话框。创建时在“应用程序类型”中选择“基于对话框”单选按钮即可。 • 例如生成一个基于对话框的应用程序“test”,查看“生成的类”可看到应用程序只有两个类。 西南交通大学经济管理学院:何耀琴
“test”生成的类 西南交通大学经济管理学院:何耀琴
对话框的特点 • 基于对话框的应用程序框架生成后,程序员可根据需要向对话框中添加控件,也可为对话框类添加代码。 西南交通大学经济管理学院:何耀琴