标题：菜单栏
概述
《能源周刊》介绍
《能源周刊》是陕西广播电视报和陕西省能源研究所联合主办的综合性能源类报纸。《能源周刊》从“风险最有价值新闻，服务能源经济发展”为宗旨。报纸刊号为CN61－0034.
《能源周刊》为四开八版，一、四、五、八版为彩色印刷，二、三、六、七版为黑白版，每周五出版发行。版块涵盖省内外社会大新闻、煤炭、石油、天然气、电力、新能源、农业能源、科技装备、低碳环保、综和法制等。
作为以陕西为主西北地区性一份能源产业经济媒体，《能源周刊》忠实服务于国家和陕西能源战略，是能源大政方针和宏微观管理和经营的信息平台，及时为能源产业的生产和经营者提供能源产业发展的最新动态，为经营活动和决策提供信息依据，为广大的能源产业领导者、经营者提供最有价值的产经新闻，共谋把能源产业做的更好更快地发展。
能源周刊
2013年1月21日
Word中的菜单栏
Microsoft Word2003菜单栏位于标题栏下方，由“文件”、“编辑”、“视图”、“插入”、“格式”、“工具”、“表格”、“窗口”和“帮助”等9个菜单命令组成。
  Microsoft Word2003菜单栏
单击菜单栏中的菜单命令将会出现一个下拉菜单。Word2003的菜单有自动记录功能，也就是说Word 2003记录了用户的常用操作习惯，只在菜单中显示最近常用的命令，这为用户选择常用命令提供了很大的方便。如果某些命令在一段时间内没有被使用，就会自动隐藏。在菜单的底部都有一个箭头按钮，单击该按钮即可显示全部的菜单命令。
在菜单栏中，某些命令后边有个箭头符号，这表示该命令项后还有下一级子菜单。将鼠标停留一下，就会自动弹出子菜单。
如果在菜单命令的前面有一个对号，表明该菜单命令被激活。取消该命令前面的对号，则表明该命令没有被激活。如果用户看到某些命令的颜色变为浅灰色，表示该菜单命令现在不能使用。如果菜单命令前面有图标，表明可以将这些命令添加到工具栏中。[1]
控件菜单栏
菜单控件显示应用程序的自定义菜单。命令、子菜单或者分隔条都可包括在菜单之中。每一个创建的菜单至多有四级子菜单。菜单控件是一组通常在功能上相关的命令或控件的容器。提供特殊的布局行为，并支持用户启动的工具栏大小调整和排列。像winform/wpf ToolBar控件或专业控件ComponentOne的MenusandToolbars[2],可创建停靠/浮动的工具栏，多级菜单，全局的快捷键、可折叠/可展开的页面，MDI 应用程序使用的窗口列表等。
VC菜单栏
简介菜单在界面设计中是经常使用的一种元素，包括Windows系统中的窗口、智能终端设备的应用界面等都会经常见到菜单的身影。我们在对可视化窗口操作时，菜单确实提供了很大方便。 
菜单可以分为下拉式菜单和弹出式菜单。
下拉式菜单一般在窗口标题栏下面显示。下拉式菜单通常是由主菜单栏、子菜单及子菜单中的菜单项和分隔条所组成的。
弹出式菜单一般可以通过单击鼠标右键等操作显示。它的主菜单不可见，只显示子菜单。VC菜单资源菜单也可以在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”。[3]​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，然后创建一个临时弹出菜单。[4]​