Обработчики эскизов

Windows Vista использует эскизы файлов в большей степени, чем в более ранних версиях Windows. Windows Vista использует их во всех представлениях, в диалоговых окнах и для любого типа файлов, которые их предоставляют. Другие приложения также могут использовать эскиз. Отображение эскизов также изменилось. Теперь доступен непрерывный спектр размеров, доступных для выбора пользователем, а не дискретных размеров, таких как значки и эскизы, предоставляемые в Windows XP.

Примечание

Вы можете услышать эти эскизы, называемые динамическими значками.

 

Эскизы с 32-разрядным разрешением и размером до 256 x 256 пикселей часто используются в пользовательском интерфейсе Windows Vista. Владельцы форматов файлов должны быть готовы к отображению эскизов в этом размере. Они также должны предоставлять нестатические изображения для своих эскизов, которые отражают содержимое конкретного файла. Например, в эскизе текстового файла должна отображаться миниатюрная версия документа, включая его текст.

Интерфейс IThumbnailProvider был представлен для упрощения и простоты предоставления эскиза, чем в прошлом, когда вместо него использовался бы IExtractImage . Обратите внимание, что существующий код, использующий IExtractImage , по-прежнему действителен в Windows Vista. Однако IExtractImage не поддерживается в области Сведений .

В этом разделе обсуждается следующее.

Процессы эскизов

Обработчики, включая обработчики эскизов, запускаются по умолчанию в отдельном процессе. Вы можете принудительно запустить обработчик в процессе, передав значение NULL в качестве контекста привязки в вызове IShellItem::BindToHandler , как показано ниже:

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

Вы также можете отказаться от завершения процесса по умолчанию, задав запись DisableProcessIsolation в реестре, как показано в этом примере. Идентификатор класса (CLSID) {E357FCCD-A995-4576-B01F-234630154E96} — это ИДЕНТИФИКАТОР CLSID для реализаций IThumbnailProvider .

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

Кэш эскизов и изменение размера

Когда требуется эскиз, Windows сначала проверяет кэш эскизов для изображения. Средство извлечения эскизов вызывается, если изображение не найдено в кэше. Он также вызывается, когда время последнего изменения образа позже времени копирования в кэше.

Эскизы в этом кэше хранятся в наборе дискретных размеров. Все размеры задаются в пикселях.

  • 32 x 32
  • 96x96
  • 256x256
  • 1024 x 1024

Примечание

Эти значения могут быть изменены. В коде не следует предполагать, что любой конкретный размер будет использоваться всегда.

 

Если изображение не является квадратным, не следует заполнять его самостоятельно. Windows отвечает за соблюдение исходных пропорций и заполнение изображения до квадратного размера.

При запросе изображения определенного размера, если не найдено точное совпадение, Windows Vista всегда получает следующее изображение по величине и масштабирует его до запрошенного размера. Размер образа никогда не масштабируется, как в предыдущих версиях Windows.

В следующей таблице приведены некоторые примеры связи между запрошенным и доступным размером.

Максимальный размер изображения, который вы предоставляете Размер, запрошенный средством извлечения Вы предоставляете
156x120 256x256 156x120 (не заполняйте, поддерживайте пропорции)
2048x1024 256x256 256x128 (не заполняйте, поддерживайте пропорции)

 

Вы можете объявить точку отсечения как часть записи идентификатора программы связанного приложения в реестре. Ниже этого размера эскизы не используются.

HKEY_CLASSES_ROOT
   .{ProgId}
      ThumbnailCutoff

Запись ThumbnailCutoff является одним из этих REG_DWORD значений.

Значение Cutoff Высокий уровень конфиденциальности
0 32 x 32 Да
1 16 x 16 Да
2 48x48 Да
3 16 x 16 Да

Высокая чувствительность точек на дюйм (точек на дюйм) означает, что размеры эскиза в пикселях автоматически корректируются в соответствии с большим разрешением на дюйм. Например, изображение 32x32 с разрешением 96 точек на дюйм будет 40x40 с разрешением 120 точек на дюйм.

Если запись ThumbnailCutoff не указана, значение по умолчанию — 20 x 20 (без dpi).

Наложения эскизов

Наложения эскизов , небольшое изображение, отображаемое в правом нижнем углу эскиза, предоставляют разработчикам возможность применять идентификацию торговой марки к своим эскизам. Наложения объявляются в реестре как часть записи идентификатора программы связанного приложения, как показано ниже:

HKEY_CLASSES_ROOT
   .{ProgId}
      TypeOverlay

Запись TypeOverlay содержит значение REG_SZ, интерпретируемое следующим образом:

  • Если значением является ссылка на ресурс ( ICO-файл , внедренный в библиотеку DLL), например ISVComponent.dll,-155, это изображение используется в качестве наложения для файлов с таким расширением имени файла. Обратите внимание, что в этом примере 155 — это идентификатор ресурса, и если библиотека DLL отсутствует в стандартном пути (например , C:/Windows/System32), то вместо имени библиотеки DLL требуется полный путь.
  • Если значение является пустой строкой, наложение не применяется к изображению.
  • Если значение отсутствует, используется значок связанного приложения по умолчанию.

Наложения для эскизов должны предоставляться только с помощью этого механизма и применяться Windows. Не применяйте наложения самостоятельно.

Графические элементы эскизов

Такие декоративные элементы, как тени, применяются к эскизам на основе выбранной пользователем темы. Декоративные элементы предоставляются Windows; не создавать их самостоятельно. Windows может изменить внешний вид определенных украшений в любое время, поэтому, если у вас есть собственные, вы рискуете выпасть из-за синхронизации с системой. Ваши эскизы могут оказаться устаревшими или неуместно.

Потенциальные декоративные элементы объявляются в реестре как часть записи идентификатора программы связанного приложения, как показано ниже:

HKEY_CLASSES_ROOT
   .{ProgId}
      Treatment

Запись Treatment содержит одно из следующих REG_DWORD значений:

Значение Значение
0 Без украшений
1 Тень
2 Граница фотографии
3 Звездочки видео

По умолчанию к изображениям применяется тень.

Регистрация обработчика эскизов

Регистрация обработчика эскизов основана на стандартных сопоставлениях файлов.

Идентификатор GUID для расширения оболочки обработчика эскизов — E357FCCD-A995-4576-B01F-234630154E96.

IThumbnailProvider

Создание обработчиков эскизов

Рекомендации по обработчику эскизов