Compartir a través de


Controladores de miniaturas

Windows Vista hace un uso mayor de imágenes en miniatura específicas del archivo que las versiones anteriores de Windows. Windows Vista los usa en todas las vistas, en cuadros de diálogo y para cualquier tipo de archivo que los proporcione. Otras aplicaciones también pueden consumir la miniatura. La presentación en miniatura también ha cambiado. Ahora, hay disponible un espectro continuo de tamaños seleccionables por el usuario en lugar de los tamaños discretos, como iconos y miniaturas proporcionados en Windows XP.

Nota

Es posible que escuche estas miniaturas denominadas Iconos dinámicos.

 

Las miniaturas de resolución de 32 bits y de hasta 256 x 256 píxeles se usan a menudo en la interfaz de usuario de Windows Vista. Los propietarios de formato de archivo deben estar preparados para mostrar sus miniaturas en ese tamaño. También deben proporcionar imágenes no estáticas para sus miniaturas que reflejen el contenido del archivo determinado. Por ejemplo, la miniatura de un archivo de texto debe mostrar una versión en miniatura del documento, incluido su texto.

La interfaz IThumbnailProvider se ha introducido para facilitar una miniatura y más sencilla que en el pasado, cuando IExtractImage se habría usado en su lugar. Tenga en cuenta que el código existente que usa IExtractImage sigue siendo válido en Windows Vista. Sin embargo, IExtractImage no se admite en el panel Detalles .

Este tema trata lo siguiente:

Procesos en miniatura

Los controladores, incluidos los controladores de miniaturas, se ejecutan de forma predeterminada en un proceso independiente. Puede forzar que el controlador se ejecute en proceso pasando un valor NULL como contexto de enlace en una llamada a IShellItem::BindToHandler como se muestra aquí:

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

También puede optar por no quedarse sin proceso de forma predeterminada estableciendo la entrada DisableProcessIsolation en el Registro, como se muestra en este ejemplo. El identificador de clase (CLSID) {E357FCCD-A995-4576-B01F-234630154E96} es el CLSID para las implementaciones de IThumbnailProvider .

HKEY_CLASSES_ROOT
   CLSID
      {E357FCCD-A995-4576-B01F-234630154E96}
         DisableProcessIsolation = 1

Tamaño y caché de miniaturas

Cuando se necesita una miniatura, Windows comprueba primero la memoria caché de miniaturas de la imagen. Se llama al extractor de miniaturas si la imagen no se encuentra en la memoria caché. También se llama cuando la hora de la última modificación de la imagen es posterior a la de la copia en la memoria caché.

Las imágenes en miniatura de esta caché se almacenan en un conjunto de tamaños discretos. Todos los tamaños se proporcionan en píxeles.

  • 32x32
  • 96x96
  • 256x256
  • 1024x1024

Nota

Estos valores están sujetos a cambios. El código no debe suponer que siempre se usará ningún tamaño determinado.

 

Si una imagen no es cuadrada, no debe rellenarla usted mismo. Windows es responsable de respetar la relación de aspecto original y rellenar la imagen a un tamaño cuadrado.

Cuando se solicita una imagen de un tamaño determinado, a menos que se encuentre una coincidencia exacta, Windows Vista siempre recupera la siguiente imagen más grande y la reduce verticalmente al tamaño solicitado. Una imagen nunca se escala verticalmente, como era el caso en versiones anteriores de Windows.

En la tabla siguiente se proporcionan algunos ejemplos de la relación entre el tamaño solicitado y el tamaño disponible.

Tamaño máximo de imagen que proporcione Tamaño solicitado por el extractor Proporcione
156 x 120 256x256 156x120 (No rellenar, mantener la relación de aspecto)
2048x1024 256x256 256x128 (No rellenar, mantener la relación de aspecto)

 

Puedes declarar un punto de interrupción como parte de la entrada de id. de programa de la aplicación asociada en el Registro. Debajo de este tamaño, no se usan miniaturas.

HKEY_CLASSES_ROOT
   .{ProgId}
      ThumbnailCutoff

La entrada ThumbnailCutoff es uno de estos valores de REG_DWORD.

Valor Corte HighDPI Sensitive
0 32x32
1 16x16
2 48x48
3 16x16 Yes

La sensibilidad de puntos altos por pulgada (ppp) significa que las dimensiones de píxeles de la miniatura se ajustan automáticamente para el mayor ppp. Por ejemplo, una imagen de 32 x 32 a 96 ppp sería una imagen de 40 x 40 ppp a 120 ppp.

Si no se especifica la entrada ThumbnailCutoff, el límite predeterminado es 20x20 (no distingue ppp).

Superposiciones en miniatura

Las superposiciones en miniatura, una imagen pequeña que se muestra en la esquina inferior derecha de la miniatura, proporcionan una oportunidad para que los desarrolladores apliquen la identificación de marca a sus miniaturas. Las superposiciones se declaran en el Registro como parte de la entrada de identificador de programa de la aplicación asociada, como se muestra aquí:

HKEY_CLASSES_ROOT
   .{ProgId}
      TypeOverlay

La entrada TypeOverlay contiene un valor de REG_SZ interpretado de la siguiente manera:

  • Si el valor es una referencia de recursos (un archivo .ico insertado en el archivo DLL), como ISVComponent.dll,-155, esa imagen se usa como superposición para los archivos con esa extensión de nombre de archivo. Tenga en cuenta que en este ejemplo, 155 es el identificador de recurso y si el archivo DLL no está presente en una ruta de acceso estándar (como C:/Windows/System32), la ruta de acceso completa es necesaria en lugar de solo el nombre de la DLL.
  • Si el valor es una cadena vacía, no se aplica ninguna superposición a la imagen.
  • Si el valor no está presente, se usa el icono predeterminado de la aplicación asociada.

Las superposiciones de las miniaturas solo deben proporcionarse a través de este mecanismo y aplicarlas por Windows. No aplique superposiciones usted mismo.

Adornos en miniatura

Los adornos, como las sombras de colocación, se aplican a miniaturas basadas en el tema seleccionado actualmente por el usuario. Los adornos son proporcionados por Windows; no los cree usted mismo. Windows podría cambiar el aspecto de adornos concretos en cualquier momento, por lo que si te proporcionaste tu propio, corres el riesgo de que no se sincronice con el sistema. Las miniaturas podrían acabar buscando descuado o fuera del lugar.

Los adornos potenciales se declaran en el Registro como parte de la entrada de identificador de programa de la aplicación asociada, como se muestra aquí:

HKEY_CLASSES_ROOT
   .{ProgId}
      Treatment

La entrada Tratamiento contiene uno de estos valores de REG_DWORD:

Valor Significado
0 Sin adorno
1 Sombra paralela
2 Borde de la foto
3 Video Sprockets

Una sombra de colocación se aplica a las imágenes de forma predeterminada.

Registro del controlador de miniaturas

El registro de un controlador de miniaturas se basa en asociaciones de archivos estándar.

El GUID de la extensión shell del controlador de miniaturas es E357FCCD-A995-4576-B01F-234630154E96.

IThumbnailProvider

Creación de controladores de miniaturas

Instrucciones del controlador de miniaturas