第6章C++菜单、工具栏和状态栏
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.3.2 状态栏的创建
创建一个状态栏可以按照以下3个步骤执行: (1)构造一个CStatusBar类的对象。 (2)调用Create()函数创建状态栏窗口,并将该 窗口连接到该CStatusBar对象上。 (3)调用SetIndicators ()函数设置指示器ID。
6.3.3 状态栏的风格
6.3 状态栏的使用
在Windows应用程序的窗口中,底部都有一个状 态栏来提供当前程序中的有用信息,例如:当鼠 标停在某个菜单项上时,状态栏能提示此菜单项 的作用;状态栏窗口既不接受用户输入也不产生 命令消息,它的作用就是显示一些文本信息。
6.3.1 状态栏概述
用AppWizard创建的应用程序,一般自动添加状 态栏。在编程过程中只要在原有状态栏的基础上 进行适当地修改就可以了。
6.2.5 改变工具栏按钮的状态
就如同菜单项有选中、无效状态一样,工具栏按 钮也有选中、无效等状态。具体设置与菜单项类 似。
6.2.6 工具栏的移动
在Visual C++ 6.0中,工具栏具有泊位和漂浮功能。 工具栏可以“泊位”到父窗口的任意边上,也可 以在自己的小框架窗口内“漂浮”。 可以通过以下3步来设置工具栏的泊位功能: (1)使可泊位在框架窗口中有效。 (2)使泊位对工具栏有效。 (3)泊位工具栏到框架窗口。
6.2 工具栏的使用
6.2.1 工具栏概述
工具栏是一系列工具按钮的组合,借助它们可以 提高用户的工作效率。工具栏一般放在窗口的顶 部,也可拖动工具栏使它停靠在窗口的任一边, 并可让其浮动。VC++ 6.0系统保存了每个工具栏 相应的位图,其中包括所有按钮的图像。 组成工具栏的基本元素包括资源和CToolBar类。 其中,资源是指工具栏位图。
6.1.1 菜单概述
1.菜单及加速键 菜单作为Windows图形用户界面中窗口的重要组成部分, 可以方便地操作应用程序。Windows中的菜单主要分为两 种:一种是附着在框架窗口和对话框的菜单条上的下拉菜 单,另一种是弹出式的上下文菜单。 菜单是应用程序中最常见的元素。大量命令的调用都是通 过选择菜单实现的。在使用AppWizard生成SDI或MDI应 用程序框架时,AppWizard将自动生成标准的应用框架菜 单资源(IDR_MAINFRAME)和菜单处理函数代码。为 了满足实际需要,有时需要对默认菜单进行修改。
第6章 菜单、工具栏和状态栏
本章要点: 菜单的实现机制和创建过程。 普通下拉菜单和上下文菜单的创建。 工具栏的创建和消息处理过程。 状态栏的使用。
6.1 菜单及加速键的使用
菜单为所有的Windows应用程序提供了一致的接口方式, 可使用户直观地了解并方便地使用应用程序所提供的各项 功能,是Windows资源中最重要的资源之一。使用加速键 可使菜单的操作更灵活快捷,两种资源往往密不可分,菜 单通常由以下部分组成: (1)窗口主菜单栏(位于窗口的标题栏下方,其菜单项 通常为下拉式菜单); (2)下拉式菜单框; (3)菜单项热键标识; (4)菜单项加速键标识; (5)菜单项分隔线。 此外,菜单项前常有选中标志以标识其是否被选中。
在MFC的CStatusBar类中,有两个成员函数可以改 变状态栏的风格,一个是前面提到的SetPaneInfo() 函数;另一个是: void SetPaneStyle( int nIndex, UINT nStyle ); 其中,参数nIndex表示要设置的状态栏窗格的索引, nStyle表示窗格的风格类型,用来指定窗格的外观,
6.2.2 工具栏资源的创建
工具栏对象是一种窗口。跟菜单类似,当用户按 下工具栏中的图形按钮时会发送WM_COMMAND 或UPDATE_COMMAND_UI命令消息。 工具栏资源的创建主要有两种方法:一种是修改 现有的工具栏,增加所需按钮及其功能实现;另 一种方法是增加新的工具栏,并利用CToolBar类 加载到系统中。下面,将分别介绍这两种方法。
6.1.5 改变菜单的显示状态
有时候,需要根据应用程序的内部状态来对菜单项作相应 的改变。例如,假设在应用程序的Edit菜单中有一个 Paste选项。当没有什么东西可粘贴时,Paste就应当是无 效状态。又如,为了标识系统正处于何种状态,可对菜单 项进行标记;为了提示用户,应当将菜单项置为高亮度等。 为了使应用程序的状态与菜单项保持同步,可以采用MFC 提供的方法。即每当弹出式菜单第一次显示时,都会发送 特殊的更新命令UI消息,该消息通常传递给与菜单项相联 系的相应对象。通过编辑与菜单项相联系的 UPDATE_COMMAND_UI消息所映射的函数即可完成对 菜单项状态的设置。此外,还可以用 CMenu::GheckMenuItem()和EnableMenuItem()进行处理。
6.1.2
Baidu Nhomakorabea
菜单消息及消息映射
在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.1 菜单概述
在获得菜单指针之后,就可以利用CMenu成员函数在运行 时动态修改菜单(用户利用资源编辑器只能静态修改菜单 资源)。CMenu类的成员函数AppendMenu()、 InsertMenu()、ModifyMenu()和RemoveMenu()分别用于 添加、插入、修改和删除指定菜单项。标识菜单项的方法 有两种:一是用ID,二是用位置索引。 如果菜单由弹出式菜单构成,则通过成员函数 GetSubMenu()获取该菜单的一个弹出式菜单的CMenu对 象。 成员函数TracePopupMenu()在一个POINT结构指定的位 置显示一个浮动的弹出式菜单,并跟踪该菜单上的选择操 作。浮动的弹出式菜单可以出现在屏幕上的任何地方。
6.2.3 工具栏按钮的消息映射
添加工具栏按钮的消息映射与添加菜单项的消息 映射处理方法基本相同。
6.2.4 工具栏窗口的创建和加载
工具栏位于主框架窗口内,其窗口的创建及资源 的装载由应用程序框架来管理。用AppWizard创 建的应用程序,窗口的创建及工具栏资源的装载 代码在MainFrm.cpp和MainFrm.h中,步骤一般如 下: (1)声明一个CToolBar类对象。 (2)窗口的创建及资源的装载。
6.1.3 上下文菜单
Windows的一个重要特征是鼠标右键功能。当用 户单击鼠标右键时,系统会弹出一个浮动菜单 (称为上下文菜单)供用户选择。 通过该菜单,用户可以方便、快捷地进行一些操 作。应用程序在响应弹出鼠标右键消息时,调用 LoadMenu()函数装载菜单资源,然后调用 GetSubMenu()成员函数获取指向弹出式菜单的 CMenu指针,最后调用TrackPopupMenu()成员 函数显示该浮动弹出式菜单,并跟踪用户的选择。
6.1.1 菜单概述
2.CMenu类 菜单类(CMenu类)提供了许多处理菜单和菜单项的方法, 这些方法分别是菜单构造方法、菜单操作方法、菜单项操 作方法和虚拟方法等。 可以通过下列三种方法获得指向CMenu对象的指针: (1)利用CWnd::GetMenu()函数获取指向指定菜单的指 针。 (2)利用CWnd::GetSystemMenu()函数获取指向系统菜 单的指针。 (3)利用CMenu::LoadMenu()函数从应用程序的可执行 文件装载菜单资源,并将它连接到CMenu对象上。