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 提供一个拆分按钮下拉菜单,可通过将命令标记为闩锁来指定命令作为默认选择。 闩锁命令是在菜单中选择的命令,通常通过显示检查标记来标记。 如果命令在接口方法IOleCommandTarget的 QueryStatus 实现中设置了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>