Обработчики эскизов
Windows Vista делает большее использование изображений эскизов для определенных файлов, чем более ранние версии Windows. Windows Vista использует их во всех представлениях, в диалоговых окнах и для любого типа файла, который предоставляет их. Другие приложения также могут использовать эскиз. Отображение эскизов также изменилось. Теперь доступны непрерывный спектр пользовательских размеров, а не дискретных размеров, таких как значки и эскизы, предоставляемые в Windows XP.
Заметка
Вы можете услышать эти эскизы, называемые динамическими значками.
Эскизы 32-разрядного разрешения и размером до 256x256 пикселей часто используются в пользовательском интерфейсе 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 сначала проверяет кэш эскизов для изображения. Средство извлечения эскизов вызывается, если изображение не найдено в кэше. Он также вызывается, когда последнее измененное время изображения позже, чем копия в кэше.
Эскизы в этом кэше хранятся в наборе дискретных размеров. Все размеры задаются в пикселях.
- 32x32
- 96x96
- 256x256
- 1024x1024
Заметка
Эти значения подлежат изменению. Код не должен предполагать, что любой конкретный размер всегда будет использоваться.
Если изображение не квадратное, вы не должны заполнения его самостоятельно. Windows отвечает за уважение исходного пропорции и заполнение изображения на квадратный размер.
Если требуется изображение определенного размера, если не найдено точное совпадение, Windows Vista всегда получает следующий самый большой образ и масштабирует его до запрошенного размера. Изображение никогда не масштабируется по размеру, как и в предыдущих версиях Windows.
В следующей таблице приведены некоторые примеры связи между запрошенным размером и доступным размером.
Максимальный размер изображения, который вы предоставляете | Размер, запрошенный методом извлечения | Вы предоставляете |
---|---|---|
156x120 | 256x256 | 156x120 (не заполнять, поддерживать пропорции) |
2048x1024 | 256x256 | 256x128 (не заполнять, поддерживать пропорции) |
Вы можете объявить точку отсечения как часть записи идентификатора программы связанного приложения в реестре. Ниже этого размера эскизы не используются.
HKEY_CLASSES_ROOT
.{ProgId}
ThumbnailCutoff
Запись ThumbnailCutoff является одним из этих значений REG_DWORD.
Ценность | Отсечка | Высокий уровень конфиденциальности |
---|---|---|
0 | 32x32 | Да |
1 | 16x16 | Да |
2 | 48x48 | Да |
3 | 16x16 | Да |
Высокая точка на дюйм (dpi) конфиденциальности означает, что размеры пикселей эскиза автоматически настраиваются на большее значение dpi. Например, изображение 32x32 с 96 dpi будет изображением 40x40 в 120 dpi.
Если запись 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 | Видео Sprockets |
Тени удаления применяются к изображениям по умолчанию.
Регистрация обработчика эскизов
Регистрация обработчика эскизов основана на стандартных сопоставлениях файлов.
Guid для расширения оболочки обработчика эскизов — E357FCCD-A995-4576-B01F-234630154E96
.
Связанные разделы