Método IShellItemImageFactory::GetImage (shobjidl_core.h)

Obtiene un HBITMAP que representa un objeto IShellItem. El comportamiento predeterminado es cargar una miniatura. Si no hay ninguna miniatura para el objeto IShellItem actual, recupera un HBITMAP para el icono del elemento. La miniatura o el icono se extrae si no se almacena en caché actualmente.

Sintaxis

HRESULT GetImage(
  [in]  SIZE    size,
  [in]  SIIGBF  flags,
  [out] HBITMAP *phbm
);

Parámetros

[in] size

Tipo: SIZE

Estructura que especifica el tamaño de la imagen que se va a recibir.

[in] flags

Tipo: SIIGBF

Uno o varios de los elementos siguientes:

SIIGBF_RESIZETOFIT (0x00000000)

Reduzca el mapa de bits según sea necesario para ajustarse, conservando su relación de aspecto.

SIIGBF_BIGGERSIZEOK (0x00000001)

Pasados por autores de llamadas si quieren estirar la imagen devuelta. Por ejemplo, si el autor de la llamada pasa un tamaño de icono de 80x80, se podría devolver una miniatura de 96x96. Esta acción se puede usar como optimización del rendimiento si el autor de la llamada espera que necesite ampliar la imagen. Tenga en cuenta que la implementación de Shell de IShellItemImageFactory realiza una blit de GDI stretch. Si el autor de la llamada quiere una extensión de imagen de mayor calidad que la proporcionada a través de ese mecanismo, debe pasar esta marca y realizar el ajuste.

SIIGBF_MEMORYONLY (0x00000002)

Devuelve el elemento solo si ya está en memoria. No acceda al disco aunque el elemento esté almacenado en caché. Tenga en cuenta que esto solo devuelve un icono ya almacenado en caché y puede revertir a un icono por clase si un elemento tiene un icono por instancia que no se ha almacenado en caché. Recuperar una miniatura, incluso si se almacena en caché, siempre requiere que se tenga acceso al disco, por lo que No se debe llamar a GetImage desde el subproceso de interfaz de usuario sin pasar SIIGBF_MEMORYONLY.

SIIGBF_ICONONLY (0x00000004)

Devuelve solo el icono, nunca la miniatura.

SIIGBF_THUMBNAILONLY (0x00000008)

Devuelve solo la miniatura, nunca el icono. Tenga en cuenta que no todos los elementos tienen miniaturas, por lo que SIIGBF_THUMBNAILONLY hará que se produzca un error en el método en estos casos.

SIIGBF_INCACHEONLY (0x00000010)

Permite el acceso al disco, pero solo para recuperar un elemento almacenado en caché. Esto devuelve una miniatura almacenada en caché si está disponible. Si no hay ninguna miniatura almacenada en caché, devuelve un icono por instancia almacenado en caché, pero no extrae una miniatura ni un icono.

SIIGBF_CROPTOSQUARE (0x00000020)

Introducido en Windows 8. Si es necesario, recorte el mapa de bits en un cuadrado.

SIIGBF_WIDETHUMBNAILS (0x00000040)

Introducido en Windows 8. Estirar y recortar el mapa de bits a una relación de aspecto de 0,7.

SIIGBF_ICONBACKGROUND (0x00000080)

Introducido en Windows 8. Si devuelve un icono, pinta un fondo con el color de fondo registrado de la aplicación asociada.

SIIGBF_SCALEUP (0x00000100)

Introducido en Windows 8. Si es necesario, ajuste el mapa de bits para que el alto y el ancho se ajusten al tamaño especificado.

[out] phbm

Tipo: HBITMAP*

Puntero a un valor que, cuando este método devuelve correctamente, recibe el identificador del mapa de bits recuperado. Es responsabilidad del autor de la llamada liberar este recurso recuperado a través de DeleteObject cuando ya no es necesario.

Valor devuelto

Tipo: HRESULT

Si este método se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT.

Comentarios

La extracción de iconos puede llevar mucho tiempo. Por lo general, no se debe llamar a este método desde un subproceso de interfaz de usuario para evitar que ese subproceso deje de responder. Puede llamar a IShellItemImageFactory::GetImage en un subproceso de interfaz de usuario si establece la marca de SIIGBF_INCACHEONLY . Sin embargo, si la imagen no se encuentra en la memoria caché, la aplicación que realiza la llamada debe estar preparada para iniciar un subproceso en segundo plano para extraer la imagen. Una extracción nunca debe realizarse en un subproceso de interfaz de usuario.

Consulte el ejemplo Using Image Factory (Uso de Image Factory ) para obtener un ejemplo completo de cómo usar este método.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado shobjidl_core.h (incluya Shobjidl.h)