Manipuladores de miniaturas
O Windows Vista faz maior uso de imagens em miniatura específicas do arquivo do que as versões anteriores do Windows. O Windows Vista utiliza-os em todas as vistas, em caixas de diálogo e para qualquer tipo de ficheiro que as forneça. Outros aplicativos também podem consumir sua miniatura. A exibição de miniaturas também foi alterada. Agora, um espectro contínuo de tamanhos selecionáveis pelo usuário está disponível em vez dos tamanhos discretos, como ícones e miniaturas fornecidos no Windows XP.
Observação
Você pode ouvir essas miniaturas chamadas de ícones dinâmicos.
Miniaturas de resolução de 32 bits e até 256x256 pixels são frequentemente usadas na interface do usuário do Windows Vista. Os proprietários de formatos de arquivo devem estar preparados para exibir suas miniaturas nesse tamanho. Eles também devem fornecer imagens não estáticas para suas miniaturas que refletem o conteúdo do arquivo específico. Por exemplo, a miniatura de um arquivo de texto deve mostrar uma versão em miniatura do documento, incluindo seu texto.
A interface IThumbnailProvider foi introduzida para tornar o fornecimento de uma miniatura mais fácil e direto do que no passado, quando IExtractImage teria sido usado. Observe que o código existente que usa IExtractImage ainda é válido no Windows Vista. No entanto, IExtractImage não é suportado no painel Detalhes.
Este tópico aborda o seguinte:
- processos de miniatura
- cache de miniaturas e dimensionamento
- sobreposições de miniaturas
- Adornos em miniatura
- Registrando seu manipulador de miniaturas
- Tópicos relacionados
Processos de miniatura
Os manipuladores, incluindo manipuladores de miniaturas, são executados por padrão em um processo separado. Você pode forçar o manipulador a executar em processo passando um valor de NULL como o contexto de ligação em uma chamada para IShellItem::BindToHandler, conforme mostrado aqui:
IShellItem::BindToHandler(NULL, BHID_ThumbnailHandler,..)
Você também pode optar por não executar o processo por padrão definindo a entrada DisableProcessIsolation no Registro, conforme mostrado neste exemplo. O identificador de classe (CLSID) {E357FCCD-A995-4576-B01F-234630154E96} é o CLSID para implementações de IThumbnailProvider.
HKEY_CLASSES_ROOT
CLSID
{E357FCCD-A995-4576-B01F-234630154E96}
DisableProcessIsolation = 1
Cache e dimensionamento de miniaturas
Quando uma miniatura é necessária, o Windows primeiro verifica o cache de miniaturas da imagem. O extrator de miniaturas é chamado se a imagem não for encontrada no cache. Também é chamado quando a última hora modificada da imagem é posterior à da cópia no cache.
As imagens em miniatura neste cache são armazenadas em um conjunto de tamanhos discretos. Todos os tamanhos são dados em pixels.
- 32x32
- 96x96
- 256x256
- 1024x1024
Observação
Estes valores estão sujeitos a alterações. O código não deve assumir que qualquer tamanho específico será sempre usado.
Se uma imagem não é quadrada, você não deve preenchê-la sozinho. O Windows é responsável por respeitar a proporção original e preencher a imagem para um tamanho quadrado.
Quando uma imagem de um tamanho específico é solicitada, a menos que uma correspondência exata seja encontrada, o Windows Vista sempre recupera a próxima imagem maior e a reduz para o tamanho solicitado. Uma imagem nunca é dimensionada como era o caso em versões anteriores do Windows.
A tabela a seguir fornece alguns exemplos da relação entre o tamanho solicitado e o tamanho disponível.
Tamanho máximo de imagem fornecido | Tamanho solicitado pelo extrator | Você fornece |
---|---|---|
156x120 | 256x256 | 156x120 (Não preencher, manter a proporção) |
2048x1024 | 256x256 | 256x128 (Não preencher, manter a proporção) |
Você pode declarar um ponto de corte como parte da entrada de ID do programa do aplicativo associado no registro. Abaixo deste tamanho, as miniaturas não são usadas.
HKEY_CLASSES_ROOT
.{ProgId}
ThumbnailCutoff
A entrada ThumbnailCutoff é um desses valores REG_DWORD.
Valor | Ponto de corte | Sensível a HighDPI |
---|---|---|
0 | 32x32 | Sim |
1 | 16x16 | Sim |
2 | 48x48 | Sim |
3 | 16x16 | Sim |
Alta sensibilidade de pontos por polegada (dpi) significa que as dimensões em pixels da miniatura se ajustam automaticamente para o dpi maior. Por exemplo, uma imagem 32x32 a 96 dpi seria uma imagem 40x40 a 120 dpi.
Se a entrada ThumbnailCutoff não for especificada, o ponto de corte padrão será 20x20 (não sensível ao dpi).
Sobreposições de miniaturas
As sobreposições de miniaturas, uma pequena imagem exibida no canto inferior direito da miniatura, oferecem uma oportunidade para os desenvolvedores aplicarem a identificação da marca às miniaturas. As sobreposições são declaradas no Registro como parte da entrada de ID do programa do aplicativo associado, conforme mostrado aqui:
HKEY_CLASSES_ROOT
.{ProgId}
TypeOverlay
A entrada TypeOverlay contém um valor REG_SZ interpretado da seguinte forma:
- Se o valor for uma referência de recurso (um arquivo .ico incorporado na DLL), como
ISVComponent.dll,-155
, essa imagem será usada como sobreposição para arquivos com essa extensão de nome de arquivo. Observe que, neste exemplo, 155 é a ID do recurso e, se a DLL não estiver presente em um caminho padrão (como C:/Windows/System32), o caminho completo será necessário em vez de apenas o nome da DLL. - Se o valor for uma cadeia de caracteres vazia, nenhuma sobreposição será aplicada à imagem.
- Se o valor não estiver presente, o ícone padrão do aplicativo associado será usado.
As sobreposições para as suas miniaturas só devem ser fornecidas através deste mecanismo e aplicadas pelo Windows. Não aplique sobreposições.
Adornos em miniatura
Adornos como sombras são aplicados a miniaturas com base no tema selecionado pelo usuário no momento. Os adornos são fornecidos pelo Windows; não os crie você mesmo. O Windows pode alterar a aparência de adornos específicos a qualquer momento, portanto, se você fornecesse o seu próprio, correria o risco de ficar fora de sincronia com o sistema. Suas miniaturas podem acabar parecendo datadas ou fora do lugar.
Os adornos potenciais são declarados no registro como parte da entrada de ID do programa do aplicativo associado, conforme mostrado aqui:
HKEY_CLASSES_ROOT
.{ProgId}
Treatment
A entrada Tratamento contém um destes REG_DWORD valores:
Valor | Significado |
---|---|
0 | Sem adorno |
1 | Sombra projetada |
2 | Borda da foto |
3 | Rodas dentadas de vídeo |
Uma sombra projetada é aplicada às imagens por padrão.
Registrando seu manipulador de miniaturas
O registro de um manipulador de miniaturas é baseado em associações de arquivo padrão.
O GUID para a extensão Shell do manipulador de miniaturas é E357FCCD-A995-4576-B01F-234630154E96
.
Tópicos relacionados