DEFCONTEXTMENU 構造体 (shlobj_core.h)

SHCreateDefaultContextMenu によって使用されるコンテキスト メニュー情報が含まれます。

構文

typedef struct {
  HWND                  hwnd;
  IContextMenuCB        *pcmcb;
  PCIDLIST_ABSOLUTE     pidlFolder;
  IShellFolder          *psf;
  UINT                  cidl;
  PCUITEMID_CHILD_ARRAY apidl;
  IUnknown              *punkAssociationInfo;
  UINT                  cKeys;
  const HKEY            *aKeys;
} DEFCONTEXTMENU;

メンバー

hwnd

型: HWND

コンテキスト メニューへのハンドル。 このメンバーを CreateMenu から返されるハンドルに設定します。

pcmcb

型: IContextMenuCB*

コールバック オブジェクトでサポートされている IContextMenuCB インターフェイスへのポインター。 この値は省略可能であり、 NULL にすることができます。

pidlFolder

種類: PCIDLIST_ABSOLUTE

選択したファイル オブジェクトを含むフォルダーの PIDL、またはファイル オブジェクトが選択されていない場合はコンテキスト メニューのフォルダー。 この値は省略可能であり、 NULL にすることができます。この場合、PIDL は psf メンバーから計算されます。

psf

種類: IShellFolder*

選択したファイル オブジェクトを含むフォルダー オブジェクトの IShellFolder インターフェイスへのポインター、またはファイル オブジェクトが選択されていない場合はコンテキスト メニューを含むフォルダーへのポインター。

cidl

型: UINT

メンバー apidl 内の項目の数。

apidl

種類: PCUITEMID_CHILD_ARRAY

ITEMIDLIST 構造体の定数配列へのポインター。 配列内の各エントリは、コンテキスト メニューが適用される子項目 (たとえば、ユーザーが 開きたい選択したファイル) を記述します。

punkAssociationInfo

種類: IUnknown*

拡張機能を読み込むオブジェクトの IQueryAssociations インターフェイスへのポインター。 このパラメーターは省略可能であるため、 NULL にすることができます。 この値が NULL で、メンバー aKeys と cKeys も NULL である場合 (「解説」を参照)、punkAssociationInfo は、iShellFolder::GetUIObjectOf を介した IQueryAssociations の要求を介して apidl メンバーと cidl から計算されます。

IShellFolder::GetUIObjectOf がE_NOTIMPLを返す場合、IShellFolder::GetAttributesOf から返されるSFGAO_FOLDER属性とSFGAO_FILESYSTEM属性に基づいて既定の実装が提供されます。

cKeys

型: UINT

メンバー aKeys 内の項目の数。 この値はゼロの場合があります。 値が 0 の場合、拡張は、メンバー punkAssociationInfo で指定されたインターフェイス IQueryAssociations をサポートする オブジェクトに基づいて読み込まれます。 値が NULL 以外の場合、拡張機能はメンバー aKeys にのみ基づいて読み込まれ、メンバー punkAssociationInfo には基づいて読み込まれません。

メモ キーの最大数は 16 です。 API では適用されないため、呼び出し元はこの制限を適用する必要があります。 これを行わないと、メモリが破損する可能性があります。
 

aKeys

型: const HKEY*

拡張機能の読み込み元のレジストリ キーを指定する HKEY へのポインター。 このパラメーターは省略可能であり、 NULL にすることができます。 値が NULL の場合、拡張は punkAssociationInfo で指定されているインターフェイス IQueryAssociations をサポートする オブジェクトに基づいて読み込まれます。

解説

aKeys メンバーと cKeys メンバーが有効で、メンバー punkAssociationInfo も有効 (NULL ではない) の場合、システムは aKeys と cKeys の値を使用してメニューを構築し、メンバー punkAssociationInfo (IQueryAssociations) を無視します。

メンバー apidl と cidl は、IDataObject を取得する IShellFolder::GetUIObjectOf メソッドのパラメーターとして使用できます。

要件

   
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
Header shlobj_core.h (Shlobj.h を含む)