次の方法で共有


IShellItemImageFactory::GetImage メソッド (shobjidl_core.h)

IShellItemを表す HBITMAP を取得します。 既定の動作では、サムネイルを読み込みます。 現在の IShellItemのサムネイルがない場合は、アイテムのアイコンの HBITMAP を取得します。 サムネイルまたはアイコンは、現在キャッシュされていない場合に抽出されます。

構文

HRESULT GetImage(
  [in]  SIZE    size,
  [in]  SIIGBF  flags,
  [out] HBITMAP *phbm
);

パラメーター

[in] size

型: SIZE

受信するイメージのサイズを指定する構造体。

[in] flags

型: SIIGBF

次の 1 つ以上:

SIIGBF_RESIZETOFIT (0x00000000)

必要に応じてビットマップを縮小し、縦横比を維持します。

SIIGBF_BIGGERSIZEOK (0x00000001)

返されたイメージ自体を拡張する場合は、呼び出し元によって渡されます。 たとえば、呼び出し元が 80 x 80 のアイコン サイズを渡すと、96 x 96 のサムネイルが返される可能性があります。 このアクションは、呼び出し元がイメージを拡張する必要があると予想される場合に、パフォーマンスの最適化として使用できます。 IShellItemImageFactory のシェル実装では GDI ストレッチ blit が実行されることに注意してください。 呼び出し元が、そのメカニズムを通じて提供されるよりも高品質のイメージ ストレッチを必要とする場合は、このフラグを渡し、ストレッチ自体を実行する必要があります。

SIIGBF_MEMORYONLY (0x00000002)

既にメモリ内にある場合にのみ、項目を返します。 項目がキャッシュされている場合でも、ディスクにアクセスしないでください。 これは既にキャッシュされているアイコンのみを返し、項目にキャッシュされていないインスタンスごとのアイコンがある場合は、クラスごとのアイコンにフォールバックできることに注意してください。 サムネイルを取得するには、キャッシュされている場合でも常にディスクにアクセスする必要があるため、GetImage は、SIIGBF_MEMORYONLYを渡さずに UI スレッドから呼び出すべきではありません。

SIIGBF_ICONONLY (0x00000004)

アイコンのみを返し、サムネイルは返しません。

SIIGBF_THUMBNAILONLY (0x00000008)

サムネイルのみを返します。アイコンは返しません。 すべてのアイテムにサムネイルが含まれているわけではないため、SIIGBF_THUMBNAILONLY はこのような場合にメソッドが失敗します。

SIIGBF_INCACHEONLY (0x00000010)

ディスクへのアクセスを許可しますが、キャッシュされた項目のみを取得します。 使用可能な場合は、キャッシュされたサムネイルが返されます。 キャッシュされたサムネイルが使用できない場合は、キャッシュされたインスタンスごとのアイコンが返されますが、サムネイルやアイコンは抽出されません。

SIIGBF_CROPTOSQUARE (0x00000020)

Windows 8で導入されました。 必要に応じて、ビットマップを四角形にトリミングします。

SIIGBF_WIDETHUMBNAILS (0x00000040)

Windows 8で導入されました。 ビットマップを 0.7 の縦横比に拡大してトリミングします。

SIIGBF_ICONBACKGROUND (0x00000080)

Windows 8で導入されました。 アイコンを返す場合は、関連付けられているアプリの登録済みの背景色を使用して背景を描画します。

SIIGBF_SCALEUP (0x00000100)

Windows 8で導入されました。 必要に応じて、高さと幅が指定したサイズに合うようにビットマップを拡大します。

[out] phbm

型: HBITMAP*

このメソッドが正常に返されるときに、取得したビットマップのハンドルを受け取る値へのポインター。 呼び出し元は、不要になったときに、DeleteObject を使用して、この取得したリソースを解放する必要があります。

戻り値

型: HRESULT

このメソッドが成功した場合は、S_OKを返します。 それ以外の場合は、HRESULT エラー コードが返されます。

備考

アイコンの抽出には時間がかかる場合があります。 通常、このメソッドは、そのスレッドが応答しなくなることを回避するために UI スレッドから呼び出すべきではありません。 SIIGBF_INCACHEONLY フラグ 設定すると、UI スレッドで IShellItemImageFactory::GetImage を呼び出すことができます。 ただし、イメージがキャッシュに見つからない場合は、呼び出し元のアプリケーションがバックグラウンド スレッドを起動してイメージを抽出できるように準備する必要があります。 UI スレッドで抽出を実行しないでください。

このメソッドの使用方法の完全な例については、Image Factory サンプルの使用に関する を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows Vista [デスクトップ アプリのみ]
サポートされる最小サーバー Windows Server 2008 [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー shobjidl_core.h (Shobjidl.h を含む)