Función DwmSetIconicThumbnail (dwmapi.h)

Establece un mapa de bits estático y emblemático en una ventana o pestaña para usarlo como representación en miniatura. La barra de tareas puede usar este mapa de bits como destino de conmutador de miniatura para la ventana o pestaña.

Sintaxis

HRESULT DwmSetIconicThumbnail(
  [in] HWND    hwnd,
  [in] HBITMAP hbmp,
  [in] DWORD   dwSITFlags
);

Parámetros

[in] hwnd

Identificador de la ventana o pestaña. Esta ventana debe pertenecer al proceso de llamada.

[in] hbmp

Identificador del mapa de bits que representa la ventana que especifica hwnd .

[in] dwSITFlags

Las opciones de presentación de la miniatura. Uno de los siguientes valores:

0 (0x00000000)

No se muestra ningún marco alrededor de la miniatura proporcionada.

DWM_SIT_DISPLAYFRAME (0x00000001)

Muestra un marco alrededor de la miniatura proporcionada.

Valor devuelto

Si esta función se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT.

Comentarios

Normalmente, una aplicación llama a la función DwmSetIconicThumbnail después de recibir un mensaje de WM_DWMSENDICONICTHUMBNAIL para su ventana. La miniatura no debe superar el número máximo de coordenadas x e y que se especifican en ese mensaje. La miniatura también debe tener una profundidad de color de 32 bits.

La aplicación llama a DwmInvalidateIconicBitmaps para indicar al Administrador de ventanas de escritorio (DWM) que las miniaturas icónicas y los mapas de bits de vista previa dinámica están obsoletos y deben actualizarse. A continuación, DWM solicita nuevas versiones desde la ventana cuando se necesitan. Sin embargo, si la memoria caché del mapa de bits dwm está llena, DWM no solicitará versiones actualizadas.

DwM usa una copia del mapa de bits, pero la aplicación puede liberar esta copia en cualquier momento debido a restricciones de memoria. Si se libera la copia, no se notifica la ventana, pero puede recibir una solicitud de WM_DWMSENDICONICTHUMBNAIL posterior cuando se vuelva a necesitar su miniatura. El autor de la llamada conserva la propiedad del mapa de bits original y es responsable de liberar los recursos que usa cuando ya no es necesario.

Ejemplos

Antes de llamar a DwmSetIconicThumbnail, la aplicación primero debe llamar a la función DwmSetWindowAttribute para establecer los atributos DWMWA_FORCE_ICONIC_REPRESENTATION y DWMWA_HAS_ICONIC_BITMAP , como se muestra en el ejemplo siguiente.

            // Set DWM window attributes to provide the iconic bitmap, and 
            // to always render the thumbnail using the iconic bitmap.
            BOOL fForceIconic = TRUE;
            BOOL fHasIconicBitmap = TRUE;

            DwmSetWindowAttribute(
                hwnd,
                DWMWA_FORCE_ICONIC_REPRESENTATION,
                &fForceIconic,
                sizeof(fForceIconic));

            DwmSetWindowAttribute(
                hwnd,
                DWMWA_HAS_ICONIC_BITMAP,
                &fHasIconicBitmap,
                sizeof(fHasIconicBitmap));

A continuación, la aplicación llama a la función DwmSetIconicThumbnail en respuesta a un mensaje de WM_DWMSENDICONICTHUMBNAIL , como se muestra en el ejemplo siguiente.

        case WM_DWMSENDICONICTHUMBNAIL:
        {    
            // This window is being asked to provide its iconic bitmap. This indicates
            // a thumbnail is being drawn.
            hbm = CreateDIB(HIWORD(lParam), LOWORD(lParam)); 
            if (hbm)
            {
                hr = DwmSetIconicThumbnail(hwnd, hbm, 0);
                DeleteObject(hbm);
            }
        }
        break;

Para obtener el código de ejemplo completo, consulta el ejemplo Personalizar una miniatura icónica y un mapa de bits de vista previa dinámica .

Requisitos

   
Cliente mínimo compatible Windows 7 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 R2 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado dwmapi.h
Library Dwmapi.lib
Archivo DLL Dwmapi.dll; Uxtheme.dll