c++面向对象程序设计第8章 控件

  • 格式:ppt
  • 大小:614.00 KB
  • 文档页数:67

下载文档原格式

  / 67
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

补充说明
为例1菜单项增加一组组合键。打开usemenu
resources文件夹中的Accelerator文件夹,双 击IDR_MAINFRAME项,打开Accelerator编 辑器。如图所示。
补充说明
从图中可以看到,在程序中已经有一系列的加速键存在了。
例如,将Ctrl+N分配给Edit菜单的新建选项,将Ctrl+O分配 给文件菜单的打开选项等等。虽然前面已经将这些菜单删除 了,但是菜单项的加速键仍然存在。在编辑器列表的最后有 一个空项,双击它,会出现图所示的对话框。
补充说明
在ID下拉列表中,选中例1菜单项的ID值,在Modifiers中选
一个键。在Key列表框中选择组合键的另一个,也可以在 Key列表框中直接键入一个字母。这里我们设为Ctrl+F1。设 置如图所示。其中的VK代表虚键。关闭对话框即可。
补充说明
4.用灰色显示菜单项
菜单项用灰色显示,有几种不同情况。第一种情况是在菜单编辑器完成 了菜单的可视化设计,但并没有代码与之相关联,那么在程序运行时, 程序不能响应该菜单,故以灰色显示。第二种情况是在菜单编辑器中设 计菜单项时,Grayed复选框被选中,那么在程序运行时,该菜单项也以 灰色显示。第三种情况是既有代码与之相关联,Grayed复选框也没有被 选中,而是在编写程序时,根据不同的情况决定该菜单项是否以灰色显 示。就像在Word中处理文档时,如果没有选中的内容,则编辑菜单中的 复制命令和剪切命令都会以灰色显示一样。这几种情况都说明该菜单项 在此时是处理不活动状态,即是不可执行的。第一种情况和第二种情况 我们在前面已经提到过了,这里我们重点来讲述第三种情况。
补充说明
3.为菜单增加加速键
所谓加速键,就是能够通过按一组组合键来直接执 行一个菜单选项命令而略过打开菜单。这要与快捷 键区别开来。加速键与快捷键在程序运行时的作用 是不同的,虽然它们都是通过按一组组合键来取代 打开菜单,但快捷键只是打开菜单而不执行菜单命 令,可适用于父菜单或者是子菜单;而加速键不打 开菜单却能执行菜单命令,且只适用于子菜单。这 是因为父菜单只是打开弹出式菜单并不执行具体的 菜单命令,这与加速键的作用正好相反。
创建工具栏
要在应用程序加入有特色的工具栏,常用的
有两种方法。一种方法是利用AppWizard生 成应用程序框架时,在MFC AppWizard— Step 4 of 6中选中Docking toolbar复选框, 使程序具有系统预置的工具栏资源。另一种 方法是在程序中直接插入工具栏资源。本节 课分别来讲述这两种方法。仍以usemenu程 序为例讲述。
AppWizard生成工具栏
用三种方法中的任一种打开新按钮的Properties对话框。将它 的ID值设为ID_MENUITEM32781。如图所示。 运行程序,会发现单击“A”按钮与执行例1菜单项都会显示 信息“*******这是一个学习用例!*******”。
创建菜单方法和步骤
1.利用“MFC APPWizard(exe)”创建向导创建一个多文档
Cview基类的wfxy项目文件,注意在创建向导的第四部中撤 销所有选项的选择
创建菜单方法和步骤
2.在用AppWizzard创建工程完成后,单击
View菜单,从中选择Resoure symbols 选项, 就会出现如图所示的对话框
补充说明
首先为例子菜单项再增加一个子菜单项“例2”。当
选中例1子菜单项,例2子菜单项则以灰色显示。我 们可以使用Cmenu类中的EnableMenuItem()函数来 完成上述操作。该函数的调用格式如下: EnableMenuItem(nItem,nFlags); 其中nItem和nFlags两个参数的意义分别为:nItem 表示是对哪个菜单项进行操作,可用菜单项的ID值 或在菜单层中的位置(第一个菜单项的位置为0, 以此类推)来选择;nFlags表示是使用ID值还是位 置来选择菜单项及需要对该菜单项进行什么操作
弹出的菜单中选择Paste命令,这样就可以将Help菜单移到 菜单栏的最右边。如图所示。
创建菜单方法和步骤

Leabharlann Baidu
给菜单项添加代码。为了给用户选择菜单时能够完成相关的操作,要将 菜单项连接到程序的可执行部分。这里我们用ClassWizard实现为菜单 项添加代码。启动ClassWizard,在Object IDs中选择菜单项的ID值,在 MessageMap页中的Object IDs中选择要添加代码的菜单项,然后,双 击Messages中的COMMAND项,如图所示
补充说明
2. 向子菜单项中加入子菜单
以向例子菜单选项加入子菜单项“例1”为例。首先,在定义 例子菜单选项时,要选中复选框Pop-up。代表它是有下一级 子菜单的父菜单。具体表现为例子菜单选项后出现一个“►” 符号。单击例子菜单选项打开弹出式子菜单,我们便可在这 一层子菜单中建立新的子子菜单。建立例1子子菜单项的步 骤与建立例子菜单选项相同。建立完成后如图所示。
创建菜单方法和步骤
6. 由于在前面创建的Help菜单在菜单栏的中
间部分,这与平时我们见到的菜单习惯不一 样,需要把它移到Name的右边。方法是:将 鼠标指针移到Help菜单上,然后单击右键, 从弹出菜单中选择Cut命令,会显示如图所示 的提示框。
创建菜单方法和步骤
单击[确定],然后在Name右边的矩形框中单击鼠标右键,从
工具板上的名为text的文本工具,打开文本工具对话框,如 图左图所示。从键盘输入大写它母“A”。可通过Font按钮对 输入的文本进行格式编辑。如图右图所示。关闭Text Tool对 话框,新按钮设计完成。
AppWizard生成工具栏
3、将新按钮与例1菜单项相关联
这里我们通过共用一个ID值的方法使两者相对应。即使新按钮 的ID值为例1菜单项的ID值ID_MENUITEM32781。这需要打 开新按钮的Properties对话框。但需要强调的是用鼠标右键 单击按钮打开快捷菜单的方法此时并不适用。在工具栏按钮 设计中,单击鼠标右键执行的是擦除功能。那要如何打开 Properties对话框呢?可用如下三种方法实现:第一种方法 是用鼠标选中该按钮,然后按下组合键Alt+Enter快捷键实现; 第二种方法是先选中该按钮,然后双击它;还有一种方法就 是先选中该按钮,然后单击系统菜单中的View菜单,在弹出 的菜单中选择Properties选项。
点击菜单项Wang,显示结果如右图所示。
菜单实例
要求建立一个菜单栏,其中包含“文件”、“编辑”、“视
图”、“工具”四个菜单项。各菜单项包含几个菜单选项。 在“视图”中有一个“例子”菜单选项,当用户选择这个菜 单选项,将在窗口中显示信息“*******这是一个学习用例! *******”如图所示。 我们利用VC开发环境演示编写。
补充说明
nFlags可以是如下参数的逻辑组合。
(1) MF_BYCOMMAND:通过ID值选择菜单项; (2) MF_BYPOSITION:通过在菜单层中的位置选择 菜单项; (3) MF_DISABLED:使菜单项无效,但不以灰色显示; (4) MF_ENABLED:使菜单项有效; (5) MF_GRAYED:去除菜单项前的“√”标记。
创建菜单方法和步骤

3.单击resoure symbols 对话框中的new按钮,屏幕上就会弹出对话框如 下图 在name编辑框中键入“ID_NAME_WANG、ID_NAME_LI、 ID_NAME_ZHENG、ID_NAME_XU”,他们的值分别是2000,2001, 2002和2003,输入完毕单击OK按钮返回。 接着单击close按钮关闭resource symbol对话框,然后单击工具栏上的 save按钮保存对项目的修改
AppWizard生成工具栏
将默认的帮助按钮删除并增加一个新的按钮,
这个按钮与我们在前一节中的例1菜单项相对 应。用“A”代表。 1、将帮助按钮删除。删除的方法极其简单,打 开工具栏编辑器,只须用鼠标选中帮助按钮, 然后将其拖至空白处即可。
AppWizard生成工具栏
2、增加新按钮。选中工具栏右侧的空白按钮,然后单击右侧
从弹出的菜单中选择properties选项,弹出如 下图对话框,。
创建菜单方法和步骤
在上图所示的对话框的caption编辑框中键入
“&Name”,视图就会变成如图所示的样子
创建菜单方法和步骤

5.右击Name菜单下的矩形框,从弹出的菜单中选择properties选项,在 随后出现的对话框的General选项卡的ID下拉表框中选择 ID_NAME_WANG,然后在Caption编辑框中键入“&Wang”,这样就为 NAME菜单添加了WANG选项。 按照上面的方法添加Li,Zheng,Xu和Rong菜单项,它们的id号分别是: ID_NAME_LI、ID_NAME_ZHENG、ID_NAME_XU对应的caption编辑 框分别是“&li”、“&zheng”、“&xu”,保存对项目所做的修改
创建菜单方法和步骤
点击OK后出现如图所示的对话框
创建菜单方法和步骤
点击OK后开始添加成员函数。在ClassView中,点击
CWfxyView前的“+”号,找到OnNameWang函数,双击该函数, 可在代码行中找到具体的函数代码位置,添加代码如图 。
创建菜单方法和步骤
编译,运行可得到如左图所示的菜单文件,
补充说明
1. 为菜单项建立快捷键
就像我们在Word文档中看到的“文件(F)”一样,许多菜单 项都带有一个具有下划线的字母,这些字母就是快捷键。例 如“文件(F)”中的“F”就是一个快捷键。我们只要同时 按下Alt和F,就可以打开文件菜单。也即是说,当打开一个 带有快捷键的菜单或菜单项时,除了用鼠标单击打开该菜单 外,还可以通过同时按下Alt和快捷键来打开该菜单或菜单项。 我们也可以为我们自己设计的菜单项建立快捷键。即在对话 框中Caption编辑框中菜单项名字后加上“&n”, n即是这个 菜单项的快捷键。n代表任何字母字符。
第8章用户界面设计
8.1 菜单和工具栏
8.2 对话框 8.3 控件
菜单和工具栏
在VC的集成环境中,我们可以利用Windows丰富的 资源来开发可视化软件。主要有菜单、工具栏、对 话框、按钮、文本框等等。这些资源不是可执行文 件,但可通过资源编译器连接到程序的可执行文件 中。它们为Windows应用程序的执行提供了友好的 界面和丰富的环境。还需要指出的一点是,由于 Visual C++将资源编译与程序编译分开,开发者便 可把执行部分的编写与资源编辑分开,这有利于程 序的调试和用户界面的设计和改进。在 Visual C++ 中,资源与可执行文件的连接是由资源编译器自动 完成的。这一章我们就主要来讲述其中的菜单与工 具栏资源。
创建菜单方法和步骤
4.单击工作空间窗口的resource view选项卡,然后单击wfxy
resources左边的“+”号将它展开,再单击menu文件夹前面 的加号,将出现一个IDR_WFXYTYPE图标,双击该图标, 在编辑窗口中就会出现如图所示的图形
创建菜单方法和步骤
在菜单视图中的矩形方框上单击鼠标右键,
AppWizard生成工具栏

在MFC AppWizard—Step 4 of 6中选中Docking toolbar复选框,使程序 具有系统预置的工具栏资源。切换到ResourceView标签,打开 usemenu resources文件夹下的Toolbar子文件夹,双击 IDR_MAINFRAME,打开工具栏编辑器。工具栏编辑器中显示了工具栏 的初始状态。如图所示。
补充说明
在在处理例2子菜单项的方法中调用
EnableMenuItem()函数。并将 EnableMenuItem(nItem,nFlags)函数中的 nFlags参数赋值为 MF_BYCOMMAND|MF_DISABLED或者是 MF_BYPOSITION|MF_DISABLED即可达到 使例2子菜单项以灰色显示的目的。