Vue d’ensemble des miniatures DWM
Desktop Window Manager (DWM) permet d’afficher des représentations miniatures des fenêtres d’application. Il ne s’agit pas d’instantanés statiques d’une fenêtre, mais de connexions dynamiques et constantes entre une fenêtre source de miniatures et un emplacement sur une fenêtre de destination qui reçoit le rendu de miniatures en direct. Cela permet d’afficher rapidement les applications en cours d’exécution en pointant sur l’application dans la barre des tâches ou en utilisant le mouvement de touche ALT-TAB pour afficher et basculer rapidement vers une application.
L’image suivante illustre la miniature en direct de Windows Vista que vous voyez lorsque vous pointez sur l’application dans la barre des tâches.
L’image suivante illustre l’option Windows Vista Flip (ALT-TAB) activée par DWM.
Notes
Les miniatures DWM ne permettent pas aux développeurs de créer des applications telles que la fonctionnalité Windows Vista Flip3D (WINKEY-TAB). Les miniatures sont rendues directement dans la fenêtre de destination en 2D.
Relations de miniatures DWM
Pour afficher des miniatures dans votre application, vous devez d’abord établir une relation entre une fenêtre source et une fenêtre de destination. Pour ce faire, appelez la fonction DwmRegisterThumbnail .
DwmRegisterThumbnail n’affiche pas de miniature dans la fenêtre de destination, mais crée simplement la relation et fournit le handle de miniature. La miniature est rendue après que les DWM_THUMBNAIL_PROPERTIES ont été définies et que la fonction DwmUpdateThumbnailProperties a été appelée. Les appels suivants à DwmUpdateThumbnailProperties mettent à jour la miniature avec un nouvel ensemble de propriétés. Le DWM fournit également la fonction d’assistance DwmQueryThumbnailSourceSize pour obtenir la taille de la fenêtre source à partir de la miniature.
Pour mettre fin à une relation de miniatures, appelez la fonction DwmUnregisterThumbnail .
L’exemple suivant montre comment créer une réléationship avec le bureau Windows et l’afficher dans une application.
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;
Rubriques connexes
-
Activer et contrôler la composition du Gestionnaire de fenêtrage
-
Considérations relatives aux performances et bonnes pratiques