Übersicht über DWM-Miniaturansichten
Desktop Window Manager (DWM) ermöglicht die Anzeige von Miniaturansichten von Anwendungsfenstern. Dabei handelt es sich nicht um statische Momentaufnahmen eines Fensters, sondern um dynamische, konstante Verbindungen zwischen einem Miniaturansichtsquellfenster und einer Position in einem Zielfenster, das das Live-Miniaturansichtsrendering empfängt. Dies ermöglicht eine schnelle Ansicht der ausgeführten Anwendungen, indem Sie auf der Taskleiste mit dem Mauszeiger auf die Anwendung zeigen oder die ALT-TAB-Tastengeste verwenden, um eine Anwendung anzuzeigen und schnell zu einer Anwendung zu wechseln.
Die folgende Abbildung veranschaulicht die Windows Vista-Liveminiaturansicht, die angezeigt wird, wenn Sie auf der Taskleiste mit dem Mauszeiger auf die Anwendung zeigen.
Die folgende Abbildung veranschaulicht die von DWM aktivierte Windows Vista-Flip (ALT-TAB).
Hinweis
DWM-Miniaturansichten ermöglichen es Entwicklern nicht, Anwendungen wie das Feature Windows Vista Flip3D (WINKEY-TAB) zu erstellen. Miniaturansichten werden direkt in das Zielfenster in 2D gerendert.
Um Miniaturansichten in Ihrer Anwendung anzuzeigen, müssen Sie zunächst eine Beziehung zwischen einem Quellfenster und einem Zielfenster einrichten. Hierzu wird die DwmRegisterThumbnail-Funktion aufgerufen.
DwmRegisterThumbnail rendert keine Miniaturansicht im Zielfenster, sondern erstellt lediglich die Beziehung und stellt das Miniaturansichtshandle bereit. Die Miniaturansicht wird gerendert, nachdem die DWM_THUMBNAIL_PROPERTIES festgelegt und die DwmUpdateThumbnailProperties-Funktion aufgerufen wurde. Nachfolgende Aufrufe von DwmUpdateThumbnailProperties aktualisieren die Miniaturansicht mit einem neuen Satz von Eigenschaften. Der DWM stellt auch die Hilfsfunktion DwmQueryThumbnailSourceSize bereit, um die Größe des Quellfensters aus der Miniaturansicht abzurufen.
Um eine Miniaturansichtsbeziehung zu beenden, rufen Sie die DwmUnregisterThumbnail-Funktion auf.
Im folgenden Beispiel wird veranschaulicht, wie Sie ein Releationship mit dem Windows-Desktop erstellen und in einer Anwendung anzeigen.
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;