IExtendContextMenu::AddMenuItems メソッド (mmc.h)
IExtendContextMenu::AddMenuItems メソッドを使用すると、スナップインでコンテキスト メニューに項目を追加できます。
構文
HRESULT AddMenuItems(
[in] LPDATAOBJECT piDataObject,
[in] LPCONTEXTMENUCALLBACK piCallback,
[in, out] long *pInsertionAllowed
);
パラメーター
[in] piDataObject
項目が追加されるメニューのデータ オブジェクトの IDataObject インターフェイスへのポインター。
[in] piCallback
コンテキスト メニューに項目を追加できる IContextMenuCallback へのポインター。
[in, out] pInsertionAllowed
使用できる MMC で定義されたメニュー項目の挿入ポイントを識別する値。 これには、次のフラグの組み合わせを指定できます。
CCM_INSERTIONALLOWED_TOP
項目は、コンテキスト メニューの上部に挿入できます。
CCM_INSERTIONALLOWED_NEW
[新しい] サブメニューに項目を挿入できます。
CCM_INSERTIONALLOWED_TASK
項目は、[すべてのタスク] サブメニューに挿入できます。
CCM_INSERTIONALLOWED_VIEW
項目は、ツール バー ビュー メニューまたは結果ウィンドウコンテキスト メニューの [表示 ] サブメニューに挿入できます。
戻り値
このメソッドは、これらの値のいずれかを返すことができます。
注釈
IExtendContextMenu::AddMenuItems の実装では、通常、piDataObject で IDataObject::GetDataHere を呼び出すことによって必要なノード型とその他のパラメーターを読み取り、piCallback で IContextMenuCallback::AddItem を呼び出してコンテキスト メニュー項目を適宜追加します。
MMC で定義された挿入ポイントにメニュー項目を追加する前に、スナップインでアクセス許可の pInsertionsAllowed フラグをチェックする必要があります。 たとえば、CCM_INSERTIONALLOWED_NEW フラグが設定されていない限り、スナップインはメニュー項目をCCM_INSERTIONPOINTID_PRIMARY_NEWまたはCCM_INSERTIONPOINTID_3RDPARTY_NEWに追加しないでください。
pInsertionsAllowed フラグでは、次の 2 つの機能を使用できます。
ユーザーがスコープ項目を選択し、そのコンテキスト メニューを表示すると、MMC はスナップインの IComponentData と IComponent (現在のビューを所有する) の両方の実装にメニュー項目を追加する機会を与えます。 MMC は、スナップインの IComponent 実装によって実装された IExtendContextMenu::AddMenuItems メソッドを呼び出して、スナップインがメニュー項目を [表示 ] メニューに追加できるようにします。 MMC は、スナップインの IComponentData によって実装された IExtendContextMenu::AddMenuItems メソッドを呼び出して、スナップインが他のすべてのメニューにメニュー項目を追加できるようにします。 [ 表示 ] メニューに項目を追加できるのは、スナップインの IComponent 実装のみです。
ユーザーがスコープアイテムを最初に選択せずにスコープ項目のコンテキスト メニューを表示する場合、MMC はスナップインの IComponentData 実装にのみ、メニュー項目を [表示 ] メニュー以外のすべてのメニューに追加する機会を与えます。 そのため、ユーザーが最初に項目を選択した場合にのみ、スコープ項目の [表示 ] メニューが表示されます。
呼び出し元へのメモ
AddMenuItems メソッドは、piDataObject ポインターまたは piCallback ポインターで AddRef を呼び出さないでください。また、返された後にこれらのインターフェイスのメソッドを呼び出す必要もありません。 代わりに、返す前に、これらのインターフェイスのメソッドに必要なすべての呼び出しを行う必要があります。 これらの項目のいずれかが選択されている場合は、 IExtendContextMenu::Command の IDataObject へのポインターが返されるため、このメソッドが戻った後にこのポインターを保持しないでください。 項目が選択されていない状態でメニューが閉じられた場合、通知は受け取りません。 また、1 つのメソッド IContextMenuCallback::AddItem で十分であるため、piCallback から代替インターフェイスのクエリを実行しないでください。要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista |
サポートされている最小のサーバー | Windows Server 2008 |
対象プラットフォーム | Windows |
ヘッダー | mmc.h |