选单栏

选单栏

选单栏实际是一种树型结构,为软体的大多数功能提供功能入口。点击以后,即可显示出选单项。

选单栏是按照程式功能分组排列的按钮集合,在标题栏下的水準栏。Microsoft Word2003选单栏位于标题栏下方,由"档案"和"视图"等9个选单命令组成。选单也可以在VC的资源视图中直接建立编辑。MFC为选单的操作提供了CMenu类。

  • 中文名称
    选单栏
  • 结构
    树型
  • 提供
    能入口
  • 套用于
    电脑

概述

​选单,将系统可以执行的命令以阶层的方式显示出来的一个介面。一般置于画面的最上方或者最下方,应用程式能使用的所有命令几乎全部都能放入。重要程度一般是从左到右,越往右重要度越低。命定的层次根据应用程式的不同而不同,一般重视档案的操作、编辑功能,因此放在最左边,然后往右有各种设定等操作,最右边往往设有帮助。一般使用滑鼠的第一按钮进行操作。

即时选单(又称功能表、上下文选单(Context Menu)),与应用程式準备好的层次选单不同,在选单栏以外的地方,通过滑鼠的第二按钮调出的选单称为"即时选单"。根据调出位置的不同,选单内容即时变化,列出所指示的对象可以进行的操作。

Word中

Microsoft Word2003选单栏位于标题栏下方,由"档案"、"编辑"、"视图"、"插入"、"格式"、"工具"、"表格"、"视窗"和"帮助"等组成组成。

Microsoft Word2003选单栏

单击选单栏中的选单命令将会出现一个下拉选单。Word2003的选单有自动记录功能,也就是说Word 2003记录了使用者的常用操作习惯,只在选单中显示最接近上次常用的命令,这为使用者选择常用命令提供了很大的方便。如果某些命令在一段时间内没有被使用,就会自动隐藏。在选单的底部都有一个箭头按钮,单击该按钮即可显示全部的选单命令。

在选单栏中,某些命令后边有个箭头符号,这表示该命令项后还有下一级子选单。将滑鼠停留一下,就会自动弹出子选单。

如果在选单命令的前面有一个对号,表明该选单命令被激活。取消该命令前面的对号,则表明该命令没有被激活。如果使用者看到某些命令的颜色变为浅灰色,表示该选单命令暂时不能使用。如果选单命令前面有图示,表明可以将这些命令增加到工具列中。如果我们还会看见选单命令的后面有组合按键,如Ctrl+O,这实际上的该命令的快捷键,熟记这些快捷键有助于我们快速操作。

控制项选单

选单控制项显示应用程式的自定义选单。命令、子选单或者分隔条都可包括在选单之中。每一个建立的选单至多有四级子选单。选单控制项是一组通常在功能上相关的命令或控制项的容器。提供特殊的布局行为,并支持使用者啓动的工具列大小调整和排列。像winform/wpf ToolBar控制项或专业控制项ComponentOne的MenusandToolbars,可建立停靠/浮动的工具列,多级选单,全局的快捷键、可折叠/可展开的页面,MDI 应用程式使用的视窗列表等。

VC选单

简介

选单在介面设计中是经常使用的一种元素,包括Windows系统中的视窗、智慧型终端设备的套用介面等都会经常见到选单的身影。我们在对可视化视窗操作时,选单确实提供了很大方便。

选单可以分为下拉式选单和弹出式选单。

下拉式选单一般在视窗标题栏下面显示。下拉式选单通常是由主选单栏、子选单及子选单中的选单项和分隔条所组成的。

弹出式选单一般可以通过单击滑鼠右键等操作显示。它的主选单不可见,只显示子选单。

资源

选单也可以在VC的资源视图中直接建立编辑。我们先建立一个新的MFC单文档工程Example34,具体看看选单的组成结构及各种标记的意义。

开启Resource View资源视图,展开Example34->Example34.rc->Menu,我们可以看到有一个ID为IDR_MAINFRAME选单资源,双击开启。

包含"File"的一栏是主选单栏,点击"File"弹出子选单,可以看到子选单中有多个选单项和分隔条。选单项中含有"..."则表示点击后会弹出对话框。

除了这些,我们还注意到,很多选单项的标题文本中都有一个字母带下划线,带下划线的字母为热键,例如,主选单栏上的"File"中字母"F"带下划线,F就是热键,程式运行并显示视窗时,在键盘上点击Alt+F就等同于直接点选单项File,弹出File下的子选单后,点击"Open"的热键O就可以实现与直接点选单项Open相同的功能。

那麽热键是如何定义的呢?我们可以看下"File"选单项的属性,Caption为"&File",很明显,只要在要定义为热键的字母前加&就可以了。

有些选单项的右侧还显示了一些字元串,例如,"New"的右侧显示有"Ctrl+N",这些代表的是快捷键,也就是"New"选单项的快捷键是Ctrl+N,"Open"选单项的快捷键是Ctrl+O,用这些组合键就能实现与相应选单项一样的功能。

快捷键如何定义?我们再来看看"Open"选单项的Caption属性,为"&Open...\tCtrl+O",这裏的\t表示在显示前面的文本后跳格再显示快捷键Ctrl+O,但这样设定其Caption属性只是能显示出快捷键,要实现快捷键的功能还需要在Accelerator资源中设定。资源视图中展开Example34.rc->Accelerator,双击开启下面的IDR_MAINFRAME,可以看到Accelerator中有四列,分别为:ID、Modifier、Key和Type。ID就是选单项的ID,Modifer和Key就代表了组合键。例如,Open选单项的ID为ID_FILE_OPEN,Modifer为"Ctrl",Key为"O"。

CMenu类

MFC为选单的操作提供了CMenu类,下面就常用的几个成员函式进行简单的介绍。

BOOL LoadMenu(UINT nIDResource);

载入选单资源,并将其附加到CMenu对象上。参数nIDResource指定了要载入的选单资源的ID。如果选单载入成功则返回TRUE,否则返回FALSE。

BOOL DeleteMenu(UINT nPosition,UINT nFlags);

在选单中移除一个选单项。参数nPosition指定要移除的选单项。参数nFlags就用来解释nPosition的意义,为MF_BYCOMMAND时说明nPosition表示选单项的ID,为MF_BYPOSITION时说明nPosition表示选单项的位置,第一个选单项的位置为0。如果移除选单项成功则返回TRUE,否则返回FALSE。

BOOL TrackPopupMenu(UINT nFlags,int x,int y,CWnd* pWnd,LPCRECT lpRect = 0);

用来在指定位置显示一个浮动的弹出式选单。参数nFlags指定萤幕坐标和滑鼠位置的标志,可以是以下取值:

TPM_CENTERALIGN:选单在水準方向上相对于参数x指定的坐标值居中显示

TPM_LEFTALIGN:选单的左侧与参数x指定的坐标值对齐

TPM_RIGHTALIGN:选单的右侧与参数x指定的坐标值对齐

TPM_BOTTOMALIGN:选单的底部与参数y指定的坐标值对齐

TPM_TOPALIGN:选单项的顶部与参数y指定的坐标值对齐

TPM_VCENTERALIGN:选单在垂直方向上相对于参数y指定的坐标值居中显示

这裏先介绍这几个比较常用的,其他可参见MSDN。参数x指定弹出式选单的水準方向的萤幕坐标,参数y指定选单顶部垂直方向上的萤幕坐标,参数pWnd指明哪个视窗拥有此弹出式选单,不能为NULL,参数lpRect忽略。

UINT CheckMenuItem(UINT nIDCheckItem,UINT nCheck);

在弹出选单中为选单项增加选中标记或移除选中标记。参数nIDCheckItem指定要选中或取消选中的选单项。参数nCheck指定选单项的选中状态和如何根据nIDCheckItem确定选单项的位置,可以是MF_CHECKED或MF_UNCHECKED与MF_BYPOSITION或MF_BYCOMMAND的组合,这几个标志的含义如下:

MF_BYCOMMAND:为默认值。说明参数nIDCheckItem表示选单项的ID

MF_BYPOSITION:说明参数nIDCheckItem表示选单项的位置,第一个选单项的位置是0

MF_CHECKED:为选单项增加选中标记

MF_UNCHECKED:为选单项移除选中标记

该函式返回选单项之前的状态:MF_CHECKED或MF_UNCHECKED, 如果选单项不存在则返回0xFFFFFFFF。

UINT EnableMenuItem(UINT nIDEnableItem,UINT nEnable);

激活、禁用选单项或使其变灰。参数nIDEnableItem指定要激活、禁用或变灰的选单项。参数nEnable指定操作的类型,可以是MF_DISABLED、MF_ENABLED或MF_GRAYED与MF_BYCOMMAND或MF_BYPOSITION的组合,这些值的含义如下:

MF_BYCOMMAND:同CheckMenuItem

MF_BYPOSITION:同CheckMenuItem

MF_DISABLED:禁用选单项,使其不能被选择但不变灰

MF_ENABLED:激活选单项,使其能够被选择并由变灰状态恢复

MF_GRAYED:禁用选单项,使其不能被选择并变灰

该函式返回选单项之前的状态:MF_DISABLED、MF_ENABLED或MF_GRAYED

CMenu* GetSubMenu(int nPos) const;

获取弹出选单的CMenu对象。参数nPos指定弹出选单在选单中的位置,不能使用ID。返回值是CMenu对象的指针,该CMenu对象的m_hMenu成员为由nPos指定的弹出选单的句柄,如果不存在这样的CMenu对象则返回NULL,然后建立一个临时弹出选单。

选单栏控制项

利用 ASP.NETMenu控制项,可以开发 ASP.NET 网页的静态和动态显示选单。您可以在Menu控制项中直接配置其内容,也可通过将该控制项绑定到资料源的方式来指定其内容。

无需编写任何代码,便可控製 ASP.NETMenu控制项的面板、方向和内容。除该控制项公开的可视属性外,该控制项还支持 ASP.NET 控制项面板和主题。有关面板和主题的更多信息,请参见ASP.NET 主题和面板概述。

静态显示和动态显示

Menu控制项具有两种显示模式:静态模式和动态模式。静态显示意味着Menu控制项始终是完全展开的。整个结构都是可视的,使用者可以单击任何部位。在动态显示的选单中,只有指定的部分是静态的,而只有使用者将滑鼠指针放置在父节点上时才会显示其子选单项。

静态显示行为

使用Menu控制项的StaticDisplayLevels属性可控製静态显示行为。StaticDisplayLevels属性指示从根选单算起,静态显示的选单的层数。例如,如果将StaticDisplayLevels设定为 3,选单将以静态显示的方式展开其前三层。静态显示的最小层数为 1,如果将该值设定为 0 或负数,该控制项将会引发异常。

动态显示行为

MaximumDynamicDisplayLevels属性指定在静态显示层后应显示的动态显示选单节点层数。例如,如果选单有 3 个静态层和 2 个动态层,则选单的前三层静态显示,后两层动态显示。

如果将MaximumDynamicDisplayLevels设定为 0,则不会动态显示任何选单节点。如果将MaximumDynamicDisplayLevels设定为负数,则会引发异常。

相关词条

相关搜索

其它词条