Menu 元素

定义一个菜单项。 以下是六种类型的菜单:上下文、菜单、MenuController、MenuControllerLatched、工具栏和 ToolWindowToolbar。

语法

<Menu guid="guidMyCommandSet" id="MyCommand" priority="0x100" type="button">
  <Parent>... </Parent>
  <CommandFlag>... </CommandFlag>
  <Strings>... </Strings>
</Menu>

特性和元素

下列各节描述了特性、子元素和父元素。

特性

属性 说明
guid 必需。 GUID/ID 命令标识符的 GUID。
id 必需。 GUID/ID 命令标识符的 ID。
priority 可选。 一个数值,该值指定菜单在一组菜单中的相对位置。
toolbarPriorityInBand 可选。 一个数值,该值指定停靠窗口时工具栏在带中的相对位置。
type 可选。 一个指定元素类型的枚举值。

如果不存在,则默认类型为 Menu。

上下文
当用户右键单击窗口时显示的快捷菜单。 快捷菜单具有以下特征:

- 当菜单显示为快捷菜单时,不使用 “父 ”和 “优先级 ”字段。
- 可用作子菜单,也可以用作快捷菜单。 在这种情况下,将 遵循组 ID优先级 字段。
- 并不总是可用。

仅当以下条件为 true 时,才会显示快捷菜单:

- 显示托管它的窗口。
- VSPackage 中的鼠标处理程序检测到右键单击窗口,然后调用处理命令的方法。
- 通过调用 ShowContextMenu 方法(建议的方法)或 ShowContextMenu 方法来显示快捷菜单。

菜单
提供下拉菜单。 下拉菜单具有以下特征:

- 尊重父级的定义。
- 必须具有父组或对组的 CommandPlacement。
- 可以是任何其他菜单的子菜单。
- 每当显示父菜单时,将自动显示。
- 不需要实现任何 VSPackage 代码才能显示它。

MenuController
提供拆分按钮下拉菜单,通常用于工具栏。 MenuController 菜单具有以下特征:

- 必须通过 Parent 或 CommandPlacement 包含在另一个菜单中。
- 尊重父级的定义。
- 可以将任何类型的菜单作为其父菜单。
- 每当显示父菜单时,都将自动可用。
- 不需要编程支持才能显示菜单。

拆分按钮菜单中的命令显示在菜单按钮上。 显示的命令具有以下特征之一:

- 它是在命令仍然显示和启用时使用的最后一个命令。
- 它是第一个显示的命令。

MenuControllerLatched
提供一个拆分按钮下拉菜单,可通过将命令标记为闩锁来指定命令作为默认选择。

闩锁命令是在菜单中选择的命令,通常通过显示检查标记来标记。 如果命令在接口方法IOleCommandTargetQueryStatus实现中设置了OLECMDF_LATCHED标志,则可以将其标记为闩锁。 MenuControllerLatched 菜单具有以下特征:

- 必须通过父组或 CommandPlacement 包含在另一个菜单中。
- 尊重父级的定义。
- 可以将任何类型的菜单作为其父菜单。
- 每当显示其父菜单时,都可用。
- 不需要编程支持才能显示菜单。

拆分按钮菜单中的命令显示在菜单按钮上。 显示的命令具有以下特征之一:

- 它是闩锁的第一个显示命令。
- 它是第一个显示的命令。

Toolbar
提供工具栏。 工具栏具有以下特征:

- 忽略其定义中的 Parent。
- 不能成为任何组的子菜单,甚至不能使用 CommandPlacement。
- 始终可以通过单击“视图菜单上的工具栏来显示。
- 可以使用 VisibilityItem 显示。
- 不需要任何代码来创建它。 有关如何创建工具栏的示例,请参阅 “添加工具栏”。

ToolWindowToolbar
提供附加到特定工具窗口的工具栏,就像工具栏附加到开发环境一样。

- 忽略其定义中的 Parent。
- 不能成为任何组的子菜单,甚至不能使用 CommandPlacement。
- 仅在显示承载工具栏的工具窗口并且 VSPackage 显式将工具栏添加到工具窗口时显示。 当工具窗口是通过从工具窗口框架获取工具栏主机属性(由接口表示 IVsToolWindowToolbarHost ),然后调用 AddToolbar 该方法来创建工具窗口时,通常会执行此操作。
条件 可选。 请参阅 条件属性

子元素

元素 说明
父级 可选。 菜单项的父元素。
CommandFlag 必需。 请参阅 Command 标志元素。 菜单的有效 CommandFlag 值如下所示:

- AlwaysCreate
- DefaultDocked
- DefaultInvisible - 此标志不会影响工具栏的显示。
- DontCache
- DynamicVisibility - 此标志不会影响工具栏的显示。
- IconAndText
- NoCustomize
- NotInTBList
- NoToolbarClose
- TextChanges
- TextIsAnchorCommand
字符串 必需。 请参阅 Strings 元素。 必须定义子 ButtonText 元素。
注释 可选注释。

父元素

元素 说明
Menus 元素 定义 VSPackage 实现的所有菜单。

示例

<Menu guid="cmdGuidWidgetCommands" id="menuIDEditWidget"
  priority="0x0002" type="Menu">
  <Parent guid="cmdSetGuidWidgetCommands" id="groupIDFileEdit"/>
  <CommandFlag>AlwaysCreate</CommandFlag>
  <Strings>
    <ButtonText>Edit Widget</ButtonText>
  </Strings>
</Menu>

另请参阅