(中职)Visual C++程序设计基础(中职)Flash 8.0基础第9章 菜单与文档视图结构ppt课件.ppt

上传人:春哥&#****71; 文档编号:71825002 上传时间:2023-02-06 格式:PPT 页数:17 大小:127KB
返回 下载 相关 举报
(中职)Visual C++程序设计基础(中职)Flash 8.0基础第9章 菜单与文档视图结构ppt课件.ppt_第1页
第1页 / 共17页
(中职)Visual C++程序设计基础(中职)Flash 8.0基础第9章 菜单与文档视图结构ppt课件.ppt_第2页
第2页 / 共17页
点击查看更多>>
资源描述

《(中职)Visual C++程序设计基础(中职)Flash 8.0基础第9章 菜单与文档视图结构ppt课件.ppt》由会员分享,可在线阅读,更多相关《(中职)Visual C++程序设计基础(中职)Flash 8.0基础第9章 菜单与文档视图结构ppt课件.ppt(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、(中职)Visual C+程序设计基础(中职)Flash 8.0基础第9章 菜单与文档视图结构ppt课件第第9章章 菜单与文档菜单与文档/视图结构视图结构9.1 9.1 菜单菜单9.2 9.2 文档文档/视图结构及其应用视图结构及其应用9.1 菜单菜单 Visual C+应应用用程程序序的的菜菜单单存存放放在在资资源源脚脚本本文文件件中中,菜菜单单资资源源模模板板用用一一种种很很简简单单的的结结构构来来定定义义菜菜单单资资源源,在在运运行行程程序序时时才才被调用。被调用。菜菜单单栏栏中中的的菜菜单单通通常常是是按按照照树树形形层层次次结结构构组组织织在在一一起起的的,菜菜单列表中的菜单分为三类

2、:单列表中的菜单分为三类:“POPUP”弹弹出出式式菜菜单单,用用来来弹弹出出一一个个子子菜菜单单,它它是是子菜单的标题子菜单的标题 “MENUITEM”菜菜单单项项或或菜菜单单命命令令,用用来来调调用用应应用用程程序的某项功能,菜单项不仅要有菜单名,还必须有标识符序的某项功能,菜单项不仅要有菜单名,还必须有标识符ID “MENUITEM SEPARATOR”分分隔隔线线,用用来来区区分分一一组组菜单项。菜单项。每每个个菜菜单单都都有有标标题题(Caption),称称菜菜单单名名。只只有有菜菜单单项项有有标标识符识符(ID),以,以“ID_”开头,而弹出式菜单和分隔线没有标识符。开头,而弹出式

3、菜单和分隔线没有标识符。9.1.1 菜单概述菜单概述1菜单资源模板菜单资源模板2菜单类的方法菜单类的方法 菜单类(CMenu)是从CObject类派生的,可打开Afxwin.h文件查看其定义,从而了解该类的功能。菜单类提供了许多处理菜单和菜单项的方法,菜单类的构造方法使应用程序在运行时通过CMenu对象建立菜单 菜单操作方法只有DeleteMenu()和TrackPopupMenu()两个,用来处理菜单的顶层操作。DeleteMenu()删除某个特定的菜单项,如果被删除的菜单项有相关的弹出式子菜单,此弹出式菜单的句柄也要被删除并释放内存;TrackPopupMenu()在一个POINT结构所指

4、定的位置显示一个快捷菜单。菜单项的操作方法用来处理具体的菜单项,是菜单操作方法的补充。虚拟方法使应用程序重写它们以提供CMenu派生类自绘菜单,它共有两个方法,即DrawItem()和MeasureItem()。DrawItem()在自绘菜单形状改变时由MFC调用,MeasureItem()在自绘菜单项创建时由MFC调用来得到菜单的大小。3建立菜单及菜单消息映射建立菜单及菜单消息映射 建立菜单 可以动态地建立菜单或将菜单作为静态资源添加到程序中,MFC应用程序中加入菜单一般要经过下述操作:利用“Insert”“Resource”菜单命令将菜单资源加入到应用程序中。在菜单编辑器中打开菜单,通过设

5、置菜单属性进行菜单设计。建立菜单与窗口的关联。为每个菜单命令项添加WM_COMMAND消息映射和对应的消息处理函数。菜单消息映射 在应用程序运行时,当用户选择了一个有效的菜单项时,系统会向应用程序发送一个WM_COMMAND消息,在此消息的参数中包含有该菜单项的ID号,由该消息驱动的消息处理函数将被调用。对每个菜单项ID可设置两个消息映射:ON_COMMAND消息映射的作用是在用户选择该菜单项时调用它对应的处理函数。ON_UPDATE_COMMAND_UI消息映射的作用是在菜单项被显示时通过调用它对应的消息映射函数来确定其状态。9.1.2 对话框应用程序中的菜单设计实例对话框应用程序中的菜单设

6、计实例 使用MFC AppWizard生成基于对话框、单文档SDI或多文档MDI应用程序框架时,基于对话框的应用程序的主对话框窗口中不包含有菜单,而单文档SDI和多文档MDI应用程序的主框架窗口中包含有菜单.如果要在MFC AppWizard生成的基于对话框的应用程序的对话框中显示菜单,必须把菜单作为一个资源加入到项目中,然后再关联到对话框窗口中。建立、设计菜单 菜单是一种资源,可利用资源编辑器来添加菜单资源到项目中,再对菜单进行编辑以达到程序要求。菜单编辑器的常用操作 菜单编辑器中的常用操作有:设置菜单项属性、选择菜单项、添加菜单项、删除菜单项、移动、复制菜单项。1在菜单编辑器中进行菜单设计

7、在菜单编辑器中进行菜单设计 添加的菜单实际上还只是一个资源,在编程中必须给它关联一个类。在菜单的编辑窗口上右击鼠标,选择“ClassWizard”快捷菜单打开MFC ClassWizard对话框,在弹出的“Adding a Class”对话框中选择“Select an existing class”选项,打开“Select Class”对话框中,选择需要的类与菜单关联,打开主对话框的打开主对话框的“Dialog Properties”对话框,从对话框,从“Menu”组合组合框下拉列表中选择菜单资源,使菜单资源与应用程序的对话框窗框下拉列表中选择菜单资源,使菜单资源与应用程序的对话框窗口建立了关

8、联。口建立了关联。3关联莱单到应用程序的主窗口关联莱单到应用程序的主窗口2为菜单关联一个类为菜单关联一个类 菜单与类和对话框窗口都实现了关联。此时运行程序,菜单菜单与类和对话框窗口都实现了关联。此时运行程序,菜单即显示在主对话框中,如果用户选择菜单,将有消息发送到应用即显示在主对话框中,如果用户选择菜单,将有消息发送到应用程序程序 4为菜单项建立消息映射和映射函数为菜单项建立消息映射和映射函数9.2文档与视图结构及其应用文档与视图结构及其应用 使使用用MFC AppWizard可可以以创创建建文文档档界界面面应应用用程程序序和和基基于于对对话话框框(Dialog based)的的应应用用程程序

9、序。文文档档界界面面应应用用程程序序分分为为单单文文档档界界面面SDI(Single Document Interface)与与多多文文档档界界面面MDI(Multiple Documents Interface)两种)两种 。9.2.1 概述概述1单文档界面与多文档界面单文档界面与多文档界面在在单单文文档档界界面面程程序序中中,用用户户在在同同一一时时刻刻只只能能打打开开一一个个文文档档,当当要要打打开开另另一一个个文文档档时时,必必须须先先把把当当前前打打开开的的文文档档关关闭闭。在在多多文文档档界界面面程程序序中中,用用户户在在同同一一时时刻刻可可以以打打开开多多个个文文档档。因因为为M

10、DI应应用用程程序序每每次次可可以以读读写写多多个个文文档档,每每个个文文档档打打开开在在自自己己的的文文档档窗窗口口中中,用用户户可可以以在在这这多多个个文文档窗口间切换进行操作。档窗口间切换进行操作。使使用用MFC AppWizard创创建建MDI应应用用程程序序和和创创建建SDI应应用用程程序序的的过过程程几几乎乎完完全全一一样样。生生成成的的SDI应应用用程程序序中中包包括括有有应应用用程程序序类类、框框架架窗窗口口类类、文档类、视图类和文档模板类。文档类、视图类和文档模板类。MDI程序与程序与SDI程序的主要区别在于框架窗口类,程序的主要区别在于框架窗口类,9.2.1 概述概述1单文

11、档界面与多文档界面单文档界面与多文档界面 SDI的的框框架架窗窗口口类类CMainFrame的的基基类类为为CFrameWnd。而而MDI应应用用程程序序有有两两个个框框架架窗窗口口类类,一一个个是是从从CMDIFrameWnd类类派派生生出出的的CMainFrame类类,负负责责菜菜单单等等界界面面元元素素的的主主框框架架窗窗口口的的维维护护;另另一一个个是是从从CMDIChildWnd类类派派生生出出的的CChildFrame类类,负责由相应的文档及其视图构成的子窗口的维护。负责由相应的文档及其视图构成的子窗口的维护。SDI和和 MDI使使 用用 的的 文文 档档 模模 板板 类类 不不

12、同同,SDI使使 用用 的的 是是CSingleDocTemplate,面,面MDI使用的是使用的是CMultiDocTemplate。使使用用MFC AppWizard开开发发的的文文档档操操作作的的应应用用程程序序,都都采采用用文文档档/视视图图结结构构。在在文文档档/视视图图结结构构中中,数数据据的的维维护护及及其其显显示示分分别别由由两两个个不不同同但但又又彼彼此此紧紧密密相相关关的的文文档档类类和和视视图图类类负负责责。文文档档/视视图图结构比传统的编程方式更有利于文档应用程序的开发。结构比传统的编程方式更有利于文档应用程序的开发。2文档文档/视图结构视图结构文文档档的的任任务务是是

13、对对数数据据进进行行管管理理和和维维护护,相相当当于于数数据据容容器器。数数据据通通常常被被保保存存在在文文档档类类的的成成员员变变量量中中,通通过过文文档档类类的的串串行行化化(Serialize)过程将数据保存到磁盘文件或数据库中。)过程将数据保存到磁盘文件或数据库中。视视图图类类在在文文档档和和用用户户之之间间起起中中介介作作用用。视视图图可可以以直直接接或或间间接接地地访访问问文文档档类类中中存存放放有有数数据据的的成成员员变变量量,它它从从文文档档类类中中取取出出要要显显示示的的文文档档数数据据,然然后后将将文文档档数数据据显显示示在在屏屏幕幕上上。所所以以说说,视视图图是是数数据据

14、的的用用户户窗窗口口,为为用用户户提提供供了了文文档档的的可可视视的的数数据据显显示示,它它把把文文档档的的部分或全部内容在窗口中显示出来。部分或全部内容在窗口中显示出来。每每一一个个文文档档可可以以有有多多个个不不同同的的视视图图,但但每每个个视视图图只只能能对对应应于于一一个个确确定定的的文文档档。因因此此,视视图图是是提提供供文文档档与与用用户户交交互互的的一一个个窗窗口口,文档的不同表现形式可采用不同的视图来与用户交互。文档的不同表现形式可采用不同的视图来与用户交互。2文档文档/视图结构视图结构 在在通通常常情情况况下下,视视图图调调用用成成员员函函数数GetDocument()获获得

15、得指指向向相相关关联联的的文文档档对对象象的的指指针针,再再通通过过该该指指针针访访问问文文档档类类的的成成员员从从文文档档中中读读取取数数据据。视视图图把把读读取取到到的的文文档档数数据据由由屏屏幕幕显显示示给给用用户户,用用户户通通过过与与视视图图的的交交互互来来查查看看数数据据并并对对数数据据进进行行修修改改。然然后后,视视图图通通过过相相关关联联的的文文档档类类的的成成员员将将经经过过修修改改的的数数据据传传递递给给文文档档对对象象。文文档档对对象象获获得得修修改改过过的的数数据据之之后后,对对其其进进行行必必要要的的处处理理,最最后后通通过串行化保存到永久介质(如磁盘文件)中。过串行

16、化保存到永久介质(如磁盘文件)中。MFC的的文文档档/视视结结构构机机制制实实现现了了数数据据操操作作和和数数据据表表示示的的分分离离,把把数数据据同同它它的的显显示示以以及及用用户户对对数数据据的的操操作作分分离离开开来来。所所有有对对数数据据的修改由文档对象来完成,视图调用这个对象的方法来访问数据。的修改由文档对象来完成,视图调用这个对象的方法来访问数据。框框架架窗窗口口是是Windows应应用用程程序序的的界界面面,对对SDI应应用用程程序序来来讲讲,它它是是CMainFrame类的一个对象,一个应用程序只有一个框架窗口。类的一个对象,一个应用程序只有一个框架窗口。3SDI的框架窗口的框

17、架窗口 当当SDI应应用用程程序序的的一一个个实实例例被被运运行行时时,将将会会动动态态地地生生成成文文档档模模板板类类CDocTemplate的的一一个个对对象象,这这个个文文档档模模板板的的作作用用就就是是把把自自动动生生成成的的框框架架窗窗口口类类CMainFrame、文文档档类类、视视窗窗类类和和应应用用类类的的对对象象联联系系起起来来,并并且且这这些些都都不需要程序员去处理。不需要程序员去处理。CMainFrame类类继继承承了了基基类类CFrameWnd的的很很多多功功能能。在在CMainFrame类类中中,已已经经从从CFrameWnd类类那那里里继继承承了了处处理理窗窗口口一一

18、般般事事件件的的WINDOWS消消息息,因此编程的时候程序员不需要再关心此类消息的处理。因此编程的时候程序员不需要再关心此类消息的处理。框框架架的的各各种种行行为为已已经经被被MFC安安排排好好了了而而不不需需人人为为干干预预,程程序序员员不不需需要要经经常常对对CMainFrame类进行操作,一般只需对文档和视图进行操作就可以了。类进行操作,一般只需对文档和视图进行操作就可以了。一一般般用用户户输输入入的的消消息息(如如菜菜单单选选择择,鼠鼠标标,键键盘盘等等)会会先先发发往往视视图图,如如果果视视图图未未处处理理则则会会发发往往框框架架窗窗口口。所所以以定定义义消消息息映映射射时时可可以以

19、定定义义在在视视图图中中,如如果果一一个个应应用用同同时时拥拥有有多多个个视视图图而而当当前前活活动动视视图图没没有有对对消消息息进进行行处处理理则则消消息息会会发往框架窗口。发往框架窗口。9.2.2 文档类及其派生类文档类及其派生类 1CDocument类的方法类的方法 CDocument类类实实现现了了文文档档类类所所需需要要的的最最基基本本的的功功能能,它它提提供供的的方方法法主要包含一般方法和虚拟方法。主要包含一般方法和虚拟方法。CDocument是所有文档类的基类,它提供了文档类所需要的最基本的功能实现,为文档对象以及文档和其它对象交互的实现提供了一个框架。编程时只需在这个已有框架的

20、基础上,添加与特定应用程序相关的实现代码即可。CDocument类是从CCmdTarget类派生的,它在MFC类库中的继承关系如图所示。CObject CCmdTarget CDocument2建立文档类的派生类建立文档类的派生类 为为每每一一个个文文档档从从CDocument类类或或其其派派生生类类来来派派生生一一个个相相应应的的文文档档类。类。为派生的文档类添加成员变量。为派生的文档类添加成员变量。重写文档类的成员函数重写文档类的成员函数Serialize,实现文档数据的串行化。,实现文档数据的串行化。9.2.3 视图类及其派生类视图类及其派生类 1CView类的方法类的方法 视视图图与与

21、文文档档相相关关联联,用用来来显显示示文文档档数数据据并并把把用用户户输输入入转转换换成成对对文文档档的的操操作作,CView类类提提供供了了文文档档类类所所需需要要的的最最基基本本的的功功能能实实现现。CView类类的的一一般般方方法法中中的的GetDocument()函函数数非非常常重重要要,由由该该成成员员函函数数可可获获得指向与视图相关联的文档的指针。得指向与视图相关联的文档的指针。视图类(CView)是从CWnd类派生的,它在MFC类库中的继承关系如图所示。因为以CWnd为基类,所以CView类及其派生类都具有CWnd的所有功能,如创建、移动、显示和隐藏窗口,并且可以接收任何Wind

22、ows消息(CDocument)类则不行。可可利利用用CView类类的的虚虚拟拟方方法法,使使得得CView的的派派生生类类重重写写它它们们来来实实现现应应用用程程序序的的特特定定功功能能。其其中中的的虚虚拟拟成成员员函函数数OnDraw()非非常常重重要要,该该虚虚函函数数对对维维护护程程序序的的正正确确显显示示负负有有重重要要责责任任。必必须须重重写写该该虚虚函函数数以以显显示示关关联联文文档档中中的的数数据据,如如果果不不重重新新定定义义该该函函数数,就就不不可可能能在在窗窗口口切切换换后后保保证证窗窗口口的的正正确确显显示示。当当屏屏幕幕发发生生变变化化或或因因为为焦焦点点的的变变化化

23、需需要要重重新新绘绘制视图以实现正确显示时,该函数被自动调用。制视图以实现正确显示时,该函数被自动调用。CObject CCmdTarget CWnd CView2视图类的派生类视图类的派生类 CScrollView类的基类是类的基类是CView类,可实现视图的滚动显示。类,可实现视图的滚动显示。CTreeView类类主主要要支支持持一一些些树树型型控控件件功功能能的的实实现现,使使数数据据的显示方式更富于变化。的显示方式更富于变化。CListView类类与与CTreeView类类一一样样,提提供供了了一一种种简简捷捷地地实实现现数据的不同显示的途径,为数据的组织提供多种手段。数据的不同显示的

24、途径,为数据的组织提供多种手段。CEditView类类利利用用CEdit接接收收用用户户输输入入,主主要要用用来来实实现现类类似似编辑控件的功能,常见的文本操作大多是由该类支持实现的。编辑控件的功能,常见的文本操作大多是由该类支持实现的。CRichEditView类类作作为为Rich Text Edit的的视视图图类类,提提供供了了可可以以按按照照格格式式显显示示文文本本的的能能力力,在在使使用用时时需需要要CRichEditDoc的的支支持。持。CFormView类类提提供供用用户户在在资资源源文文件件中中定定义义界界面面的的能能力力,并并可可以以将将子子窗窗口口和和变变量量进进行行绑绑定定

25、。通通过过UpdateData函函数数让让数数据据在在变量和子窗口间交换。变量和子窗口间交换。9.2.4 建立单文档界面的绘画程序实例建立单文档界面的绘画程序实例 单文档应用程序的开发过程单文档应用程序的开发过程 在VC中,选择“File”“New”菜单命令,弹出“New”对话框。在“New”对话框中选择“Projects”标签,从项目类型清单中选择“MFC AppWizard(exe)”,利用MFC应用程序向导创建一个项目框架,启动MFC AppWizard来创建应用程序。MFC AppWizard在创建SDI应用程序框架过程中,依次显示6个应用程序向导对话框供程序员对将要创建的应用程序进行

26、设置,最后根据设置创建应用程序框架。1创建单文档界面创建单文档界面SDI应用程序应用程序2主框架窗口及资源编辑主框架窗口及资源编辑 菜单的编辑 工具栏的编辑 图标的编辑 对话框的编辑 向项目中添加类 向类中添加成员变量 向类中添加成员函数3为存储绘制的图形添加类为存储绘制的图形添加类5视图与用户的交互视图与用户的交互 添加成员变量 初始化 视图响应用户的操作 显示文档中的内容4编辑编辑CDrawDoc类类 向CDrawDoc类中添加成员变量存放文档数据 存放文档数据的成员变量的初始化 文档串行化6菜单消息映射及消息处理函数菜单消息映射及消息处理函数菜单栏中的大部分菜单项在生成应用程序框架时就已经存在了,而且应用程序框架已经基本实现了它们的菜单消息映射和消息处理函数,在实现了文档的串行化后,菜单中的“打开”、“保存”和“另存为”命令也能正常实现了。只需为特定菜单命令实现菜单消息映射,编写相应的消息处理函数即可。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁