IShellFolder::GetUIObjectOf メソッド (shobjidl_core.h)
指定したファイル オブジェクトまたはフォルダーに対してアクションを実行するために使用できるオブジェクトを取得します。
構文
HRESULT GetUIObjectOf(
[in] HWND hwndOwner,
[in] UINT cidl,
[in] PCUITEMID_CHILD_ARRAY apidl,
[in] REFIID riid,
[in, out] UINT *rgfReserved,
[out] void **ppv
);
パラメーター
[in] hwndOwner
型: HWND
ダイアログ ボックスまたはメッセージ ボックスを表示するかどうかをクライアントが指定する必要がある所有者ウィンドウへのハンドル。
[in] cidl
型: UINT
apidl パラメーターで指定されたファイル オブジェクトまたはサブフォルダーの数。
[in] apidl
種類: PCUITEMID_CHILD_ARRAY
ITEMIDLIST 構造体へのポインターの配列のアドレス。それぞれのアドレスは、親フォルダーを基準にしてファイル オブジェクトまたはサブフォルダーを一意に識別します。 各項目 ID リストには、1 つの SHITEMID 構造体の後に終了ゼロが続く必要があります。
[in] riid
種類: REFIID
ppv を介して取得するインターフェイスの IID への参照。 これは、アイテムに対して作成できる任意の有効なインターフェイス識別子です。 シェルで使用される最も一般的な識別子は、この参照の最後にあるコメントに一覧表示されます。
[in, out] rgfReserved
種類: UINT*
予約済み。
[out] ppv
型: void**
このメソッドが正常に返されると、 には riid で要求されたインターフェイス ポインターが含まれます。
戻り値
種類: HRESULT
このメソッドは、成功すると S_OK を返します。 そうでない場合は、HRESULT エラー コードを返します。
注釈
cidl が 1 より大きい場合、IShellFolder::GetUIObjectOf の実装は、apidl で指定されたすべての項目に対して 1 つのオブジェクトを作成できる場合にのみ成功する必要があります。 実装ですべての項目に対して 1 つのオブジェクトを作成できない場合、このメソッドは失敗します。
シェルがこのメソッドからインターフェイスを要求するときに使用する最も一般的なインターフェイス識別子を次に示します。 また、要求されたインターフェイスに 対して cidl を 1 より大きくできるかどうかを示します。
インターフェイス識別子 | 使用できる cidl 値 |
---|---|
IContextMenu | cidl パラメーターは、1 以上にすることができます。 |
IContextMenu2 | cidl パラメーターは、1 以上にすることができます。 |
Idataobject | cidl パラメーターは、1 以上にすることができます。 |
IDropTarget | cidl パラメーターは 1 つだけ指定できます。 |
IExtractIcon | cidl パラメーターは 1 つだけ指定できます。 |
IQueryInfo | cidl パラメーターは 1 つだけ指定できます。 |
riid パラメーターと ppv パラメーターをパッケージ化するには、Objbase.h で定義されている IID_PPV_ARGS マクロを使用することをお勧めします。 このマクロは 、ppv の値によって指されるインターフェイスに基づいて正しい IID を提供します。これにより、 riid でコーディング エラーが発生し、予期しない結果が発生する可能性がなくなります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | shobjidl_core.h (Shobjidl.h を含む) |
[DLL] | Shell32.dll (バージョン 4.0 以降) |