CONTEXTMENUITEM2構造体 (mmc.h)

CONTEXTMENUITEM2構造は MMC 2.0 で導入されています。

CONTEXTMENUITEM2構造体は、IContextMenuCallback2::AddItem メソッドまたは IContextMenuProvider::AddItem メソッド (IContextMenuCallback から継承) に渡され、新しいメニュー項目、サブメニュー、または挿入ポイントを定義します。 コンテキスト メニューはルートダウンから作成され、新しい項目はそれぞれサブメニューの末尾、または新しい項目が挿入される挿入ポイントに移動します。 CONTEXTMENUITEM2構造体は CONTEXTMENUITEM 構造体よりも優先されます (strLanguageIndependentName メンバーを除き、CONTEXTMENUITEM2のすべてのメンバーは CONTEXTMENUITEM 内にあります)。

構文

typedef struct _CONTEXTMENUITEM2 {
  LPWSTR strName;
  LPWSTR strStatusBarText;
  LONG   lCommandID;
  LONG   lInsertionPointID;
  LONG   fFlags;
  LONG   fSpecialFlags;
  LPWSTR strLanguageIndependentName;
} CONTEXTMENUITEM2;

メンバー

strName

メニュー項目またはサブメニューの名前を含む null で終わる文字列へのポインター。 区切り記号または挿入ポイントを除き、このメンバーを NULL に することはできません。

strStatusBarText

この項目が強調表示されたときにステータス バーに表示されるテキストを含む null で終わる文字列へのポインター。 このメンバーには NULL を指定できます。

lCommandID

メニュー項目のコマンド識別子を示す 値です。 メニュー項目が IExtendContextMenu::AddMenuItems によって追加され、選択されている場合、 lCommandIDIExtendContextMenu::Command に返されるコマンド ID パラメーターです。 このメニュー項目が IContextMenuProvider インターフェイスによって追加され、選択されている場合、これは IContextMenuProvider::ShowContextMenu によって pISelected に返されるコマンド ID です。 これが挿入ポイント (CCM_SPECIAL_INSERTION_POINTfSpecialFlags で設定されている) またはサブメニュー (fFlags設定MF_POPUP) の場合は、後続の呼び出しで lInsertionPointID として lCommandID を使用します (詳細については、次の一覧を参照してください)。 新しい挿入ポイント ID の特定のビットがオンで、他のビットがオフになっている必要があるため、次の説明をよくお読みください。

コマンド ID の次のビットでは、挿入ポイントまたはサブメニューではない項目に対して特別な処理が必要です。

CCM_COMMANDID_MASK_RESERVED (0xFFFF0000)

これらのビットが設定されている場合、挿入ポイントとサブメニュー以外の項目は追加できません。

挿入ポイント ID の次のビットでは、挿入ポイント (fSpecialFlags および CCM_SPECIAL_INSERTION_POINT) またはサブメニュー (fFlags および MF_POPUP) である項目に対して特別な処理が必要です。

CCM_INSERTIONPOINTID_MASK_SPECIAL (0xFFFF0000)

特殊な動作。 スナップインでは、必要に応じて他のビットを使用できます。

CCM_INSERTIONPOINTID_MASK_SHARED (0x80000000)

これらの挿入ポイントとサブメニューは、コンテキスト メニューの作成者、プライマリ拡張機能、およびサード パーティの拡張機能の間で共有されます。 共有の挿入ポイントまたはサブメニューに追加された項目は、コンテキスト メニュー、プライマリ拡張機能、およびサード パーティの拡張機能の作成者が使用できます。

このビットが設定されていない場合は、 IContextMenuProvider インターフェイスと各拡張機能で同じ ID を使用できます。 各 ID は、異なる挿入ポイントまたはサブメニューを参照します。

コンテキスト メニューの作成者とプライマリ スナップインのみが、共有の挿入ポイントまたはサブメニューを作成できます。

CCM_INSERTIONPOINTID_MASK_CREATE_PRIMARY (0x40000000)

このビットは、プライマリ スナップインによって作成された共有の挿入ポイントとサブメニューに対して設定する必要があり、コンテキスト メニュー作成者によって作成されたビットには設定されません。 これにより、共有挿入ポイントとサブメニューの 2 つのソース間で ID の競合が回避されます。

CCM_INSERTIONPOINTID_MASK_ADD_PRIMARY (0x20000000)

プライマリ スナップインが共有の挿入ポイントまたはサブメニューに項目を追加できるようにします。

CCM_INSERTIONPOINTID_MASK_ADD_3RDPARTY (0x10000000)

拡張スナップインで、共有の挿入ポイントまたはサブメニューに項目を追加できるようにします。

CCM_INSERTIONPOINTID_MASK_RESERVED (0x0FFF0000)

この値を設定すると、挿入ポイントまたはサブメニューを追加できません。

lInsertionPointID

コンテキスト メニューの新しい項目を追加する場所を示す 値です。 スナップインでは、メニュー作成者またはプライマリ スナップインによって作成された挿入ポイントにのみ項目を追加できます。 スコープ ウィンドウとリスト ビューの結果ウィンドウの項目の既定のコンテキスト メニューで MMC によって作成された挿入ポイントを次に示します。

0 (ゼロ)

lInsertionPointID が 0 の場合、このコンテキスト メニューのルート メニューが参照されます。 値 0 は、 CCM_INSERTIONPOINTID_ROOT_MENUと同じ意味で使用できます。 ルート メニューに項目を直接追加できるのは IContextMenuProvider のみです。 拡張機能は、 IContextMenuProvider または MMC によってのみ、ルート メニューに追加された挿入ポイントとサブメニューに項目を追加できます。

CCM_INSERTIONPOINTID_PRIMARY_TOP (0xA0000000)

プライマリ スナップインでは、この挿入ポイントを使用して、メインコンテキスト メニューの上部に項目を追加できます。

CCM_INSERTIONPOINTID_PRIMARY_NEW (0xA0000001)

プライマリ スナップインでは、この挿入ポイントを使用して、[ 新しい ] サブメニューの上部に項目を追加できます。 [ 新しい ] サブメニューは、スコープと結果ウィンドウのコンテキスト メニューで使用できます。

CCM_INSERTIONPOINTID_PRIMARY_TASK (0xA0000002)

プライマリ スナップインは、この挿入ポイントを使用して、[すべてのタスク] サブメニューの上部に項目を追加できます。 [ すべてのタスク] サブメニューは、スコープと結果ウィンドウのコンテキスト メニューで使用できます。

CCM_INSERTIONPOINTID_PRIMARY_VIEW (0xA0000003)

プライマリ スナップインでは、このカーソルを使用して [ 表示 ] メニューに項目を追加できます。 ユーザーがツール バーの [ 表示 ] ドロップダウン メニューをクリックすると、この挿入ポイントは表示されますが、[新規] および [すべてのタスク] の挿入ポイントは表示されません。

CCM_INSERTIONPOINTID_3RDPARTY_NEW (0x90000001)

拡張機能スナップインでは、この挿入ポイントを使用して、[ 新しい ] サブメニューの下部に項目を追加できます。 [新しい] サブメニューは、スコープ ペインのコンテキスト メニューにのみ表示され、結果ウィンドウのコンテキスト メニューには表示されません。

CCM_INSERTIONPOINTID_3RDPARTY_TASK (0x90000002)

拡張機能スナップインでは、この挿入ポイントを使用して、[ すべてのタスク] サブメニューの下部に項目を追加できます。

CCM_INSERTIONPOINTID_ROOT_MENU (0x80000000)

IContextMenuProvider では、この挿入ポイントを使用して、ルート メニューに項目を追加できます。

IContextMenuProvider によって追加された挿入ポイントを除き、プライマリ拡張機能もサード パーティの拡張機能もルート メニューに項目を追加することはできません。

fFlags

次のスタイル フラグの 1 つ以上を指定する 値。

MF_POPUP

作成された項目は、コンテキスト メニュー内のサブメニューです。 メニュー項目、挿入ポイント、およびその他のサブメニューは、作成されたサブメニューに追加できます。新しいメニュー項目、サブメニュー、または挿入ポイントでは、作成されたサブメニューの lCommandID メンバーを lInsertionPointID メンバー値として使用する必要があります。

MF_BITMAP

このフラグはサポートされていません。 IContextMenuCallback2::AddItemE_INVALIDARGを返します。

MF_OWNERDRAW

このフラグはサポートされていません。 IContextMenuCallback2::AddItemE_INVALIDARGを返します。

MF_SEPARATOR

水平方向の区切り線を描画します。

MF_SEPARATORが設定されたメニュー項目を追加できるのは、IContextMenuProvider だけです。

次のフラグは、Windows API の場合と同じ方法で機能します。

MF_CHECKED

メニュー項目を選択します。

MF_DISABLED

メニュー項目を無効にして選択できないようにしますが、フラグはメニュー項目を暗くしません。

MF_ENABLED

メニュー項目を選択できるように有効にし、淡色表示の状態から復元します。

MF_GRAYED

メニュー項目を無効にし、選択できないように淡色表示します。

MF_MENUBARBREAK

メニュー バーの MF_MENUBREAK フラグと同じように機能します。 ドロップダウン メニュー、サブメニュー、またはショートカット メニューの場合、新しい列と古い列を縦線で区切ります。

MF_MENUBREAK

列を区切らずに、新しい行 (メニュー バーの場合) または新しい列 (ドロップダウン メニュー、サブメニュー、またはショートカット メニューの場合) に項目をPlacesします。

MF_UNCHECKED

項目を選択しません (既定値)。

次のフラグ グループを一緒に使用することはできません。

  • MF_DISABLEDMF_ENABLEDMF_GRAYED
  • MF_MENUBARBREAKMF_MENUBREAK
  • MF_CHECKEDMF_UNCHECKED

fSpecialFlags

次のフラグの 1 つ以上を指定する 値。

CCM_SPECIAL_SEPARATOR (0x0001)

lInsertionPointID を除く他のすべてのパラメーターは無視します。 メニューの末尾または指定したカーソル位置に区切り記号を追加します。 メニューまたはサブメニューの上部または下部に配置された区切り記号は表示されません。 間にメニュー項目がない区切り記号は、1 つの区切り記号に折りたたまれます。

区切り記号を追加できるのは 、IContextMenuProvider だけです。特別な場合は 、それ以外の場合は 。

CCM_SPECIAL_SUBMENU (0x0002)

このサブメニューが空の場合は、淡色表示されます。これは、 MF_POPUP 項目に対してのみ有効です。

CCM_SPECIAL_DEFAULT_ITEM (0x0004)

これは既定のメニュー項目です。 複数のメニュー項目でこのフラグが指定されている場合は、各サブメニューの最後の項目が優先されます。

CCM_SPECIAL_INSERTION_POINT (0x0008)

lCommandIDlInsertionPointID 以外の他のすべてのパラメーターは無視します。 このフラグは、 lInsertionPointID で識別される挿入ポイントまたはサブメニューの末尾に新しい挿入ポイントを作成します。 新しいメニュー項目、サブメニュー、または挿入ポイントは、作成された挿入ポイントに追加できます。新しいメニュー項目、サブメニュー、または挿入ポイントでは、作成された挿入ポイントの lCommandID メンバーを lInsertionPointID メンバー値として使用する必要があります。

CCM_SPECIAL_TESTONLY = 0x0010

項目パラメーターを検証しますが、メニュー項目を追加しないでください。 Add 操作が成功したかどうかを示す結果コードを返します。

strLanguageIndependentName

メニュー項目の言語に依存しない名前。 MenuItem.LanguageIndependentName プロパティを取得して、MMC 2.0 Automation オブジェクト モデル アプリケーションでこの値を取得します。 区切り記号または挿入ポイントを追加しない限り、 strLanguageIndependentName メンバーを NULL または空の文字列にすることはできません。それ以外の場合、 IContextMenuCallback::AddItem メソッドは戻り値として E_INVALIDARG で失敗します。

要件

要件
サポートされている最小のクライアント Windows Vista
サポートされている最小のサーバー Windows Server 2008
Header mmc.h

こちらもご覧ください

IContextMenuCallback2

IContextMenuProvider

IExtendContextMenu

コンテキスト メニューの操作