Información general sobre la miniatura de DWM
El Administrador de ventanas de escritorio (DWM) habilita la visualización de representaciones en miniatura de las ventanas de la aplicación. Estas no son instantáneas estáticas de una ventana, sino que son dinámicas, conexiones constantes entre una ventana de origen en miniatura y una ubicación en una ventana de destino que recibe la representación en miniatura activa. Esto permite una vista rápida de las aplicaciones en ejecución al mantener el puntero sobre la aplicación en la barra de tareas o mediante el gesto de tecla ALT-TAB para ver y cambiar rápidamente a una aplicación.
En la imagen siguiente se muestra la miniatura activa de Windows Vista al mantener el puntero sobre la aplicación en la barra de tareas.
En la imagen siguiente se muestra el Volteo de Windows Vista (ALT-TAB) habilitado por DWM.
Nota
Las miniaturas de DWM no permiten a los desarrolladores crear aplicaciones como la característica Flip3D de Windows Vista (WINKEY-TAB). Las miniaturas se representan directamente en la ventana de destino en 2D.
Relaciones de miniaturas de DWM
Para mostrar miniaturas en la aplicación, primero debe establecer una relación entre una ventana de origen y una ventana de destino. Para ello, llame a la función DwmRegisterThumbnail .
DwmRegisterThumbnail no representa una miniatura en la ventana de destino, sino que simplemente crea la relación y proporciona el identificador de miniatura. La miniatura se representa después de establecer el DWM_THUMBNAIL_PROPERTIES y se ha llamado a la función DwmUpdateThumbnailProperties . Las llamadas posteriores a DwmUpdateThumbnailProperties actualizan la miniatura con un nuevo conjunto de propiedades. DwM también proporciona la función auxiliar DwmQueryThumbnailSourceSize para obtener el tamaño de la ventana de origen de la miniatura.
Para finalizar una relación en miniatura, llame a la función DwmUnregisterThumbnail .
En el ejemplo siguiente se muestra cómo crear una releación con el escritorio de Windows y mostrarla en una aplicación.
HRESULT hr = S_OK;
HTHUMBNAIL thumbnail = NULL;
// Register the thumbnail
hr = DwmRegisterThumbnail(hwnd, FindWindow(_T("Progman"), NULL), &thumbnail);
if (SUCCEEDED(hr))
{
// Specify the destination rectangle size
RECT dest = {0,50,100,150};
// Set the thumbnail properties for use
DWM_THUMBNAIL_PROPERTIES dskThumbProps;
dskThumbProps.dwFlags = DWM_TNP_SOURCECLIENTAREAONLY | DWM_TNP_VISIBLE | DWM_TNP_OPACITY | DWM_TNP_RECTDESTINATION;
dskThumbProps.fSourceClientAreaOnly = FALSE;
dskThumbProps.fVisible = TRUE;
dskThumbProps.opacity = (255 * 70)/100;
dskThumbProps.rcDestination = dest;
// Display the thumbnail
hr = DwmUpdateThumbnailProperties(thumbnail,&dskThumbProps);
if (SUCCEEDED(hr))
{
// ...
}
}
return hr;
Temas relacionados
-
Desktop Window Manager Overview (Administrador de ventanas de escritorio)
-
Consideraciones de rendimiento y procedimientos recomendados