次の方法で共有


Menu 要素

1 つのメニュー項目を定義します。 これらは、Context、Menu、MenuController、MenuControllerLatched、Toolbar、ToolWindowToolbar の 6 種類のメニューです。

構文

<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 です。

Context
ユーザーがウィンドウを右クリックしたときに表示されるショートカット メニュー。 ショートカット メニューには、次の特性があります。

- メニューがショートカット メニューとして表示される場合は、Parent および Priority フィールドを使用しません。
- サブメニューとして使用でき、ショートカット メニューとしても使用できます。 この場合は、Group ID フィールドと Priority フィールドの両方が考慮されます。
- 常に使用できるとは限りません。

ショートカット メニューは、次の条件に当てはまる場合にのみ表示されます。

- それをホストするウィンドウが表示されている。
- VSPackage のマウス ハンドラーがウィンドウの右クリックを検出した後、そのコマンドを処理するメソッドを呼び出す。
- ShowContextMenu メソッド (推奨されるアプローチ) または ShowContextMenu メソッドを呼び出すことによってショートカット メニューが表示される。

メニュー
ドロップダウン メニューを提供します。 ドロップダウン メニューには、次の特性があります。

- その定義内の Parent を考慮します。
- Parent グループ、またはグループへの CommandPlacement が存在する必要があります。
- 他の任意の種類のメニューのサブメニューにすることができます。
- その親メニューが表示されるたびに自動的に表示されます。
- これが表示されるようにするために VSPackage コードを実装する必要はありません。

MenuController
ツール バーで一般に使用される分割ボタン ドロップダウン メニューを提供します。 MenuController メニューには、次の特性があります。

- Parent または CommandPlacement 経由で別のメニューに含まれている必要があります。
- その定義内の Parent を考慮します。
- その親として任意の種類のメニューを持つことができます。
- その親メニューが表示されるたびに自動的に使用可能になります。
- このメニューを表示するためにプログラムによるサポートは必要ありません。

このメニュー ボタンには、分割ボタン メニューのコマンドが表示されます。 表示されるコマンドには、次のいずれかの特性があります。

- これは、そのコマンドがまだ表示され、有効になっていた場合に使用された最後のコマンドです。
- これは、最初に表示されるコマンドです。

MenuControllerLatched
コマンドをラッチ済みとしてマークすることによってコマンドを既定の選択として指定できる分割ボタン ドロップダウン メニューを提供します。

ラッチされたコマンドは、通常はチェック マークを表示することにより、メニューで選択済みとしてマークされているコマンドです。 コマンドは、IOleCommandTarget インターフェイスの QueryStatus メソッドの実装でそれに対して OLECMDF_LATCHED フラグが設定されている場合に、ラッチ済みとしてマークできます。 MenuControllerLatched メニューには、次の特性があります。

- Parent グループまたは CommandPlacement 経由で別のメニューに含まれている必要があります。
- その定義内の Parent を考慮します。
- その親として任意の種類のメニューを持つことができます。
- その親メニューが表示されるたびに使用可能になります。
- このメニューを表示するためにプログラムによるサポートは必要ありません。

このメニュー ボタンには、分割ボタン メニューのコマンドが表示されます。 表示されるコマンドには、次のいずれかの特性があります。

- これは、ラッチされた最初に表示されるコマンドです。
- これは、最初に表示されるコマンドです。

ツール バー
ツール バーを提供します。 ツール バーには、次の特性があります。

- その定義内の Parent を無視します。
- CommandPlacement を使用した場合でも、どのグループのサブメニューにすることもできません。
- 常に [表示] メニューの [ツール バー] をクリックして表示できます。
- VisibilityItem を使用して表示できます。
- これを作成するためにコードは必要ありません。 ツール バーを作成する方法に関する例については、「ツール バーの追加」を参照してください。

ToolWindowToolbar
ツール バーが開発環境にアタッチされているのと同様に、特定のツール ウィンドウにアタッチされているツール バーを提供します。

- その定義内の Parent を無視します。
- CommandPlacement を使用した場合でも、どのグループのサブメニューにすることもできません。
- ツール バーをホストするツール ウィンドウが表示されていて、VSPackage がそのツール バーをそのツール ウィンドウに明示的に追加した場合にのみ表示されます。 これは通常、ツール ウィンドウが作成されるときに、ツール ウィンドウ フレームから (IVsToolWindowToolbarHost インターフェイスによって表される) ツール バーのホスト プロパティを取得し、AddToolbar メソッドを呼び出すことによって実行されます。
条件 省略可能。 条件付き属性に関するページを参照してください。

子要素

要素 説明
上位 省略可能。 メニュー項目の親要素。
CommandFlag 必須。 「コマンド フラグ要素」を参照してください。 Menu の有効な 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>

関連項目