资源描述
第3章 HTML基础,Click to edit Master text styles,Second level,Third level,Fourth level,1-,16,北京源智天下科技有限公司,联系方式:,联系方式:,北京源智天下科技有限公司,Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,第,9,讲:菜单和框架窗口,课程内容安排,Windows,应用程序的框架窗口,Windows,菜单和,MFC,菜单编辑器,Windows,应用程序的快捷键,命令处理的使用,复文本编辑,实例讲解,属性表的开发过程,课程内容安排,CPersistentFrame,持续信息类的使用,使用,ActivateFrame(),成员函数设置窗口尺寸和位置,创建窗口之前的工作:,PreCreateWindow,成员函数,控制栏状态和,Windows,注册表,MDI,应用程序和持续框架,Windows,应用程序的框架窗口,主框架窗口包含标题栏和菜单栏,而各种各样的子窗口,其中包括工具栏、状态栏窗口和视图窗口,则占据着主窗口的整个客户区域。应用程序就是通过框架和视图之间的消息传递来控制框架和视图之间的相互作用的。,Windows,菜单和,MFC,菜单编辑器,菜单是,Windows,程序设计中一项重要的界面元素。通常,开发者可以为主窗口定义一个默认的菜单资源,当应用程序创建窗口时,该默认的菜单会被自动装入。也可以定义一个与窗口无关的菜单资源,当调用一些消息函数时,可以自动调入,如鼠标右键的浮动菜单。,VC6.0,提供了一个强大的菜单资源编辑器,通过这个菜单资源编辑器,开发者可以灵活地开发各种各样的菜单,并且可以编辑菜单的属性等。,Windows,应用程序的快捷键,键盘加速键的编辑是在资源编辑框中的键盘加速键资源中,命令处理的使用,MFC,应用程序框架中,大多数命令消息都来自于应用程序框架,但应用程序框架并没有对这些消息进行处理,因此开发者要自主添加消息处理函数并且在消息处理函数的实现方面做一些工作。,当应用程序接收到一个框架窗口命令时,按照以下的顺序进行寻找相应的消息控制函数:,(,1,)视图。,(,2,)文档。,(,3,),MDI,子框架窗口。,(,4,),MDI,主框架窗口。,(,5,)应用程序。,复文本编辑,Windows,有两种文本编辑控件:普通的编辑控件和复文本编辑通用控件。,MFC,提供了,CEditView,类和,CRichEditView,类,以支持复文本的功能。,编辑视图类:,CEditView,类,复文本编辑视图类:,CRichEditView,类,复文本编辑控件类:,CRichEditCtrl,类,实例讲解,实例,9.1,快捷键和文本编辑使用,属性表的开发过程,选项卡对话框形式的属性表创建过程的步骤一般是:,(,1,)创建若干个对话框,用于制作选项卡的子对话框。虽然对话框的大小没有限制,不过为了方便起见,最好在尺寸上不要差别太大。,(,2,)使用,ClassWizard,为每个对话框生成一个类,这些类可以取类似的名字以表示这些子对话框相互之间的关系,并且,这些类的基类都是,CPropertyPage,类。,(,3,)生成,CPropertySheet,类的派生类,并将子对话框类的对象添加到该类中。,(,4,)使用,Domal(),函数生成属性表的对话框。,(,5,)添加,Apply,按钮的消息处理函数。,鼠标右键调用的浮动快捷菜单,Windows,菜单主要包括两类:,(,1,)顶层菜单:该菜单就是主框架窗口的顶级菜单,这个是前文常见的一种菜单。,(,2,) 弹出式菜单:这个前文虽然没有提及,不过相信读者在使用各种应用软件时,都使用过弹出菜单,如鼠标右键弹出的菜单列表。,使用弹出式的菜单实质上就是通过获取了一个指向某菜单的指针来进行显示,CPersistentFrame,持续信息类的使用,CPersistentFrame,类能够记住以下的特性:,(,1,)窗口尺寸,(,2,)窗口位置,(,3,)最大化状态,(,4,)最小化状态,(,5,)工具栏和状态栏是否处于允许状态以及它们的位置,一切,C+,的类对象实际上也只能在内存中运行,它是怎么做到记忆的功能的呢?原因在于,当用户关闭又,CPersistentFrame,类创建的应用程序时,上述信息将会倍保存在,Windows,操作系统的注册表里面,而,Windows,的注册表是存放在磁盘中的,因此就达到了记忆的效果。,使用,ActivateFrame(),成员函数设置窗口尺寸和位置,在一个,MFC,的单文档应用程序中,主框架窗口是视图窗口的“父窗口”,父窗口的创建是先于子窗口的,改变框架窗口尺寸的关键在于,CFrameWnd,类的,ActivateFrame,成员函数。,如果使用对派生类中的,ActivateFrame,成员函数进行重载,开发者就可以调用,CWnd:SetWindowPlacement,函数来设置框架窗口的位置和尺寸,也可以设置控制栏的可视状态,而这些工作都是在框架窗口被显示之前完成的。,PreCreateWindow,成员函数,PreCreateWindow,成员函数视在,CWnd,类层次上声明的,这个函数是提供给开发者在窗口显示之前可以重写的一个虚拟函数,而应用程序框架在调用,ActivateFrame,成员函数函数之前必须调用,PreCreateWindow,成员函数。,该函数有一个,CREATESTRUCT,结构作为参数,该结构有两个数据成员:,style,:风格,如决定窗口是否有边界、是否具有滚动条和是否具有最小化框等。,dwExStyle,:扩展的风格,一些扩展的风格,如视图总在最前面等。,控制栏状态和,Windows,注册表,Windows,注册表实际就是一组系统文件,是一种层次数据库,由,Windows,操作系统管理,让,Windows,系统和其他应用软件可以在注册表中保存一些永久信息。,MFC,库提供了两个,CFrameWnd,成员函数:,(,1,),SaveBarState(),:存储状态栏信息。,(,2,),LoadBarState(),:加载状态栏信息。,以上的两个函数可以处理应用程序的状态栏和贴边工具栏的大小和位置。,MDI,应用程序和持续框架,CPersistentFrame,类并不适用于,MDI,(多文档)应用程序,因为,MDI,主框架窗口中的,ShowWindow,函数是由应用程序类的,InitInstance,成员函数来调用,而没有用到,ActivateFrame,虚函数来进行调用。,MDI,应用程序的持续状态信息也可以通过保存在注册表中,然后到下次读取时,再通过读取注册表的信息来进行记忆。,
展开阅读全文