




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,第6章菜单、工具栏和状态栏,本章要点:菜单的实现机制和创建过程。普通下拉菜单和上下文菜单的创建。工具栏的创建和消息处理过程。状态栏的使用。,.,6.1菜单及加速键的使用,菜单为所有的Windows应用程序提供了一致的接口方式,可使用户直观地了解并方便地使用应用程序所提供的各项功能,是Windows资源中最重要的资源之一。使用加速键可使菜单的操作更灵活快捷,两种资源往往密不可分,菜单通常由以下部分组成:(1)窗口主菜单栏(位于窗口的标题栏下方,其菜单项通常为下拉式菜单);(2)下拉式菜单框;(3)菜单项热键标识;(4)菜单项加速键标识;(5)菜单项分隔线。此外,菜单项前常有选中标志以标识其是否被选中。,.,6.1.1菜单概述,1菜单及加速键菜单作为Windows图形用户界面中窗口的重要组成部分,可以方便地操作应用程序。Windows中的菜单主要分为两种:一种是附着在框架窗口和对话框的菜单条上的下拉菜单,另一种是弹出式的上下文菜单。菜单是应用程序中最常见的元素。大量命令的调用都是通过选择菜单实现的。在使用AppWizard生成SDI或MDI应用程序框架时,AppWizard将自动生成标准的应用框架菜单资源(IDR_MAINFRAME)和菜单处理函数代码。为了满足实际需要,有时需要对默认菜单进行修改。,.,6.1.1菜单概述,2CMenu类菜单类(CMenu类)提供了许多处理菜单和菜单项的方法,这些方法分别是菜单构造方法、菜单操作方法、菜单项操作方法和虚拟方法等。可以通过下列三种方法获得指向CMenu对象的指针:(1)利用CWnd:GetMenu()函数获取指向指定菜单的指针。(2)利用CWnd:GetSystemMenu()函数获取指向系统菜单的指针。(3)利用CMenu:LoadMenu()函数从应用程序的可执行文件装载菜单资源,并将它连接到CMenu对象上。,.,6.1.1菜单概述,在获得菜单指针之后,就可以利用CMenu成员函数在运行时动态修改菜单(用户利用资源编辑器只能静态修改菜单资源)。CMenu类的成员函数AppendMenu()、InsertMenu()、ModifyMenu()和RemoveMenu()分别用于添加、插入、修改和删除指定菜单项。标识菜单项的方法有两种:一是用ID,二是用位置索引。如果菜单由弹出式菜单构成,则通过成员函数GetSubMenu()获取该菜单的一个弹出式菜单的CMenu对象。成员函数TracePopupMenu()在一个POINT结构指定的位置显示一个浮动的弹出式菜单,并跟踪该菜单上的选择操作。浮动的弹出式菜单可以出现在屏幕上的任何地方。,.,6.1.2菜单消息及消息映射,在MFC消息映射中,包含两个菜单消息:WM_COMMAND和UPDATE_COMMAND_UI。(1)WM_COMMAND消息。当用户选中了某个菜单项,激活菜单的加速键或选中了相应的工具栏按钮时,会发出消息标识符为WM_COMMAND的命令消息。其消息映射为ON_COMMAND,ON_COMMAND消息映射的映射方式是:ON_COMMAND(菜单项的标识ID,消息处理函数)(2)UPDATE_COMMAND_UI消息。UPDATE_COMMAND_UI是MFC所特有的,应用程序不一定要处理该消息,如果用户想根据应用程序的当前状态对菜单项进行激活、使菜单项无效,或给菜单项添加被选中标记等操作,要添加该消息,.,6.1.3上下文菜单,Windows的一个重要特征是鼠标右键功能。当用户单击鼠标右键时,系统会弹出一个浮动菜单(称为上下文菜单)供用户选择。通过该菜单,用户可以方便、快捷地进行一些操作。应用程序在响应弹出鼠标右键消息时,调用LoadMenu()函数装载菜单资源,然后调用GetSubMenu()成员函数获取指向弹出式菜单的CMenu指针,最后调用TrackPopupMenu()成员函数显示该浮动弹出式菜单,并跟踪用户的选择。,.,6.1.5改变菜单的显示状态,有时候,需要根据应用程序的内部状态来对菜单项作相应的改变。例如,假设在应用程序的Edit菜单中有一个Paste选项。当没有什么东西可粘贴时,Paste就应当是无效状态。又如,为了标识系统正处于何种状态,可对菜单项进行标记;为了提示用户,应当将菜单项置为高亮度等。为了使应用程序的状态与菜单项保持同步,可以采用MFC提供的方法。即每当弹出式菜单第一次显示时,都会发送特殊的更新命令UI消息,该消息通常传递给与菜单项相联系的相应对象。通过编辑与菜单项相联系的UPDATE_COMMAND_UI消息所映射的函数即可完成对菜单项状态的设置。此外,还可以用CMenu:GheckMenuItem()和EnableMenuItem()进行处理。,.,6.2工具栏的使用,.,6.2.1工具栏概述,工具栏是一系列工具按钮的组合,借助它们可以提高用户的工作效率。工具栏一般放在窗口的顶部,也可拖动工具栏使它停靠在窗口的任一边,并可让其浮动。VC+6.0系统保存了每个工具栏相应的位图,其中包括所有按钮的图像。组成工具栏的基本元素包括资源和CToolBar类。其中,资源是指工具栏位图。,.,6.2.2工具栏资源的创建,工具栏对象是一种窗口。跟菜单类似,当用户按下工具栏中的图形按钮时会发送WM_COMMAND或UPDATE_COMMAND_UI命令消息。工具栏资源的创建主要有两种方法:一种是修改现有的工具栏,增加所需按钮及其功能实现;另一种方法是增加新的工具栏,并利用CToolBar类加载到系统中。下面,将分别介绍这两种方法。,.,6.2.3工具栏按钮的消息映射,添加工具栏按钮的消息映射与添加菜单项的消息映射处理方法基本相同。,.,6.2.4工具栏窗口的创建和加载,工具栏位于主框架窗口内,其窗口的创建及资源的装载由应用程序框架来管理。用AppWizard创建的应用程序,窗口的创建及工具栏资源的装载代码在MainFrm.cpp和MainFrm.h中,步骤一般如下:(1)声明一个CToolBar类对象。(2)窗口的创建及资源的装载。,.,6.2.5改变工具栏按钮的状态,就如同菜单项有选中、无效状态一样,工具栏按钮也有选中、无效等状态。具体设置与菜单项类似。,.,6.2.6工具栏的移动,在VisualC+6.0中,工具栏具有泊位和漂浮功能。工具栏可以“泊位”到父窗口的任意边上,也可以在自己的小框架窗口内“漂浮”。可以通过以下3步来设置工具栏的泊位功能:(1)使可泊位在框架窗口中有效。(2)使泊位对工具栏有效。(3)泊位工具栏到框架窗口。,.,6.3状态栏的使用,在Windows应用程序的窗口中,底部都有一个状态栏来提供当前程序中的有用信息,例如:当鼠标停在某个菜单项上时,状态栏能提示此菜单项的作用;状态栏窗口既不接受用户输入也不产生命令消息,它的作用就是显示一些文本信息。,.,6.3.1状态栏概述,用AppWizard创建的应用程序,一般自动添加状态栏。在编程过程中只要在原有状态栏的基础上进行适当地修改就可以了。,.,6.3.2状态栏的创建,创建一个状态栏可以按照以下3个步骤执行:(1)构造一个CStatusBar类的对象。(2)调用Create()函数创建状态栏窗口,并将该窗口连接到该CStatusBar对象上。(3)调用SetIndicators()函数设置指示器ID。,.,6.3.3状态栏
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中考历史总复习世界历史九年级下册(世界现代史部分)全册知识清单(超强)
- 酒店餐饮营销培训体系构建
- 《医学影像信息交流实施工具》课件
- 仿铜浮雕画培训
- 轮胎购销合同协议版
- 残联免责协议书
- 《管理基础理论》教学课件
- 灌浆施工协议书
- 转让家具工具合同协议
- 《中医养生基础》课件
- JJF 1095-2002电容器介质损耗测量仪校准规范
- GB/T 36266-2018淋浴房玻璃
- 医疗质量安全核心制度要点释义(国家卫健委)
- 电子版-铁路货物运价规则
- 《月光下的中国》朗诵稿
- 印染工业园八万吨日污水集中处理项目环境影响评价报告书简本
- 单片机红外遥控系统设计
- 园林绿化种子进场检验记录
- 电梯日常检查记录
- 混凝土基础质量检验记录表
- 二级社会体育指导员培训分析课件
评论
0/150
提交评论