共用方式為


縮圖處理常式

Windows Vista 使用比舊版 Windows 更強大的檔案特定縮圖影像。 Windows Vista 會在所有檢視、對話方塊和提供這些檢視的任何檔案類型中使用它們。 其他應用程式也可以取用您的縮圖。 縮圖顯示也已變更。 現在,可以使用使用者可選取大小的連續範圍,而不是 Windows XP 中提供的圖示和縮圖等離散大小。

注意

您可能會聽到這些縮圖稱為「即時圖示」。

 

Windows Vista UI 通常會使用 32 位解析度和 256x256 圖元的縮圖。 檔案格式擁有者應該準備好以該大小顯示其縮圖。 他們也應該為其縮圖提供非靜態影像,以反映特定檔案的內容。 例如,文字檔的縮圖應該會顯示檔的縮圖版本,包括其文字。

已引進 IThumbnailProvider 介面,讓提供縮圖比過去更容易且更直接的方式,當 IExtractImage 已改用時。 請注意,使用 IExtractImage 的現有程式碼在 Windows Vista 下仍然有效。 不過,[詳細資料] 窗格中不支援IExtractImage

本主題將討論下列內容:

縮圖進程

處理常式,包括縮圖處理常式,預設會在個別進程中執行。 您可以藉由將 Null 值當做IShellItem::BindToHandler呼叫中的結內容傳遞,以強制處理常式執行同進程,如下所示:

IShellItem::BindToHandler(NULL, BHID_ThumbnailHandler,..)

您也可以藉由在登錄中設定 DisableProcessIsolation 專案,退出宣告不使用進程,如此範例所示。 類別識別碼 (CLSID) {E357FCCD-A995-4576-B01F-234630154E96} 是 IThumbnailProvider 實作的 CLSID。

HKEY_CLASSES_ROOT
   CLSID
      {E357FCCD-A995-4576-B01F-234630154E96}
         DisableProcessIsolation = 1

縮圖快取和調整大小

需要縮圖時,Windows 會先檢查影像的縮圖快取。 如果快取中找不到影像,則會呼叫縮圖擷取器。 當影像上次修改時間晚于快取中複本的時間時,也會呼叫它。

此快取中的縮圖影像會儲存在一組離散大小中。 所有大小都會以圖元為單位。

  • 32x32
  • 96x96
  • 256 x 256
  • 1024x1024

注意

這些值可能會變更。 您不應該假設一律會使用任何特定大小。

 

如果影像不是正方形,您就不應該自行填補。 Windows 負責遵守原始外觀比例,並將影像填補成平方大小。

當要求特定大小的影像時,除非找到完全相符的專案,否則 Windows Vista 一律會擷取下一個最大的影像,並將其相應減少為所要求的大小。 映射的大小永遠不會相應增加,如同舊版 Windows 的情況一樣。

下表提供要求大小與可用大小之間關聯性的一些範例。

您提供的影像大小上限 擷取器所要求的大小 您提供
156x120 256 x 256 156x120 (請勿填補,請維持外觀比例)
2048x1024 256 x 256 256x128 (請勿填補,請維持外觀比例)

 

您可以將截中斷點宣告為登錄中相關聯應用程式之程式識別碼專案的一部分。 在此大小下方,不會使用縮圖。

HKEY_CLASSES_ROOT
   .{ProgId}
      ThumbnailCutoff

ThumbnailCutoff 專案是下列其中一個REG_DWORD值。

Cutoff HighDPI 敏感度
0 32x32
1 16x16 Yes
2 48x48 Yes
3 16x16

每英吋的高點數 (DPI) 敏感度,表示縮圖的圖元尺寸會自動調整為更高的 DPI。 例如,96 DPI 的 32x32 影像會是 40x40 的 120 DPI 影像。

如果未指定 ThumbnailCutoff 專案,則預設截斷為 20x20 (不區分 DPI) 。

縮圖重迭

縮圖重迭,縮圖會顯示在縮圖右下角的小型影像,為開發人員提供將品牌識別套用至其縮圖的機會。 重迭會在登錄中宣告為相關聯應用程式之程式識別碼專案的一部分,如下所示:

HKEY_CLASSES_ROOT
   .{ProgId}
      TypeOverlay

TypeOverlay 專案包含REG_SZ值,解譯如下:

  • 如果值是資源參考, (內嵌在 DLL) 中的 .ico 檔案,例如 ISVComponent.dll,-155 ,該影像會當做副檔名為檔案的重迭。 請注意,在此範例中, 155 是資源識別碼,如果 DLL 不存在於標準路徑中, (例如 C:/Windows/System32) ,則需要完整路徑,而不只是 DLL 名稱。
  • 如果值是空字串,則不會將重迭套用至影像。
  • 如果值不存在,則會使用相關聯應用程式的預設圖示。

縮圖的重迭應該只透過此機制提供,並由 Windows 套用。 請勿自行套用重迭。

縮圖裝飾

陰影之類的裝飾會根據使用者目前選取的主題套用至縮圖。 裝飾是由 Windows 提供;請勿自行建立。 Windows 可以隨時變更特定裝飾的外觀,因此如果您提供您自己,可能會有與系統同步的風險。 您的縮圖可能會讓查閱日期或就地不足。

潛在的裝飾會在登錄中宣告為相關聯應用程式之程式識別碼專案的一部分,如下所示:

HKEY_CLASSES_ROOT
   .{ProgId}
      Treatment

[處理] 專案包含下列其中一個REG_DWORD值:

意義
0 無裝飾
1 陰影
2 相片框線
3 影片 Sprockets

根據預設,陰影會套用至影像。

註冊縮圖處理常式

縮圖處理常式的註冊是以標準檔案關聯為基礎。

縮圖處理常式殼層延伸模組的 GUID 為 E357FCCD-A995-4576-B01F-234630154E96

IThumbnailProvider

建置縮圖處理常式

縮圖處理常式指導方針