共用方式為


IShellItemImageFactory::GetImage 方法 (shobjidl_core.h)

取得代表 IShellItemHBITMAP。 默認行為是載入縮圖。 如果目前 IShellItem沒有縮圖,它會擷取專案的圖示 HBITMAP。 如果目前尚未快取縮圖或圖示,則會擷取縮圖或圖示。

語法

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

參數

[in] size

類型:SIZE

結構,指定要接收之影像的大小。

[in] flags

類型:SIIGBF

下列其中一或多個專案:

SIIGBF_RESIZETOFIT (0x00000000)

視需要壓縮位圖以符合,保留其外觀比例。

SIIGBF_BIGGERSIZEOK (0x00000001)

如果呼叫端想要延伸傳回的影像本身,則由來電者傳遞。 例如,如果呼叫端傳遞圖示大小為80x80,則可能會傳回96x96縮圖。 如果呼叫端預期需要延展影像,此動作就可作為效能優化。 請注意,IShellItemImageFactory 的 Shell 實作會執行 GDI 延展式 blit。 如果呼叫端想要比透過該機制提供的更高品質的影像延展,則應該傳遞此旗標並自行執行延展。

SIIGBF_MEMORYONLY (0x00000002)

只有在專案已經在記憶體中時,才會傳回專案。 即使快取專案,也請勿存取磁碟。 請注意,這隻會傳回已經快取的圖示,而且如果某個專案有尚未快取的個別實例圖示,則可以回復為個別類別圖示。 即使快取縮圖,擷取縮圖一律需要存取磁碟,因此不應該從UI線程呼叫 getImage,而不傳遞 SIIGBF_MEMORYONLY

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)