次の方法で共有


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 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー shobjidl_core.h (Shobjidl.h を含む)