Partager via


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.

Capture d’écran montrant la miniature DED M visible lorsque vous pointez sur une application dans la barre des tâches.

L’image suivante illustre l’option Windows Vista Flip (ALT-TAB) activée par DWM.

capture d’écran de l’onglet alt activé pour 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;

Vue d’ensemble du Gestionnaire de fenêtres du Bureau

Activer et contrôler la composition du Gestionnaire de fenêtrage

Considérations relatives aux performances et bonnes pratiques