Compartilhar via


Manipuladores de miniaturas

O Windows Vista faz uso maior de imagens em miniatura específicas do arquivo do que as versões anteriores do Windows. O Windows Vista os usa em todos os modos de exibição, em caixas de diálogo e para qualquer tipo de arquivo que os forneça. Outros aplicativos também podem consumir sua miniatura. A exibição em miniatura 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 conhecidas como Ícones dinâmicos.

 

Miniaturas de resolução de 32 bits e de até 256 x 256 pixels geralmente são usadas na interface do usuário do Windows Vista. Os proprietários de formato 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 simples 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, não há suporte para IExtractImage no painel Detalhes .

Este tópico aborda o seguinte:

Processos em miniatura

Manipuladores, incluindo manipuladores de miniaturas, são executados por padrão em um processo separado. Você pode forçar o manipulador a ser executado em processo passando um valor NULL como o contexto de associação em uma chamada para IShellItem::BindToHandler , conforme mostrado aqui:

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

Você também pode recusar a execução fora do processo por padrão definindo a entrada DisableProcessIsolation no registro, conforme mostrado neste exemplo. O CLSID (identificador de classe) {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 em miniatura

Quando uma miniatura é necessária, o Windows verifica primeiro o cache de miniaturas da imagem. O extrator de miniatura será chamado se a imagem não for encontrada no cache. Ele também é chamado quando a hora da última modificação da imagem é posterior à da cópia no cache.

As imagens em miniatura nesse cache são armazenadas em um conjunto de tamanhos discretos. Todos os tamanhos são dados em pixels.

  • 32x32
  • 96x96
  • 256x256
  • 1\.024 x 1.024

Observação

Esses valores estão sujeitos a alterações. O código não deve pressupor que qualquer tamanho específico sempre será usado.

 

Se uma imagem não for quadrada, você não deverá apadrê-la por conta própria. O Windows é responsável por respeitar a taxa de 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 dimensiona para o tamanho solicitado. Uma imagem nunca é expandida em tamanho, como foi 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 da imagem que você fornece Tamanho solicitado pelo extrator Você fornece
156x120 256x256 156x120 (não preencher, manter taxa de proporção)
2048x1024 256x256 256x128 (não preencher, manter taxa de proporção)

 

Você pode declarar um ponto de corte como parte da entrada de ID do programa do aplicativo associado no registro. Abaixo desse tamanho, as miniaturas não são usadas.

HKEY_CLASSES_ROOT
   .{ProgId}
      ThumbnailCutoff

A entrada ThumbnailCutoff é um desses valores REG_DWORD.

Valor Corte Diferenciação de HighDPI
0 32x32 Sim
1 16x16 Sim
2 48 x 48 Sim
3 16x16 Yes

Pontos altos por polegada (dpi) sensibilidade significa que as dimensões de pixel da miniatura se ajustam automaticamente para o dpi maior. Por exemplo, uma imagem 32x32 em 96 dpi seria uma imagem 40x40 em 120 dpi.

Se a entrada ThumbnailCutoff não for especificada, o corte padrão será 20x20 (não diferencia dpi).

Sobreposições em miniatura

As sobreposições em miniatura, 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 maneira:

  • Se o valor for uma referência de recurso (um arquivo .ico inserido na DLL), como ISVComponent.dll,-155, essa imagem será usada como a 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 suas miniaturas só devem ser fornecidas por meio desse mecanismo e aplicadas pelo Windows. Não aplique sobreposições por conta própria.

Adornos em miniatura

Adornos como sombras são aplicados a miniaturas com base no tema selecionado no momento do usuário. Os adornos são fornecidos pelo Windows; não os crie por conta própria. O Windows pode alterar a aparência de adornos específicos a qualquer momento, portanto, se você for o proprietário, correrá o risco de ficar fora de sincronia com o sistema. Suas miniaturas podem acabar parecendo datadas ou fora do lugar.

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 valores REG_DWORD:

Valor Significado
0 Sem adorno
1 Sombra de Soltar
2 Borda da Foto
3 Sprockets de vídeo

Uma sombra de soltar é aplicada a 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.

IThumbnailProvider

Criando manipuladores de miniaturas

Diretrizes do manipulador de miniaturas