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

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 точек на дюйм будет изображением 40 x 40 с разрешением 120 точек на дюйм.

Если запись ThumbnailCutoff не указана, вырезание по умолчанию — 20x20 (без 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

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

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

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

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

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

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

IThumbnailProvider

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

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