Обработчики эскизов
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
.
Связанные темы