Dela via


Översikt över DWM-miniatyrer

Med Desktop Window Manager (DWM) kan du visa miniatyrrepresentationer av programfönster. Det här är inte statiska ögonblicksbilder av ett fönster, utan i stället dynamiska, konstanta anslutningar mellan ett källfönster för miniatyrbilder och en plats i ett målfönster som tar emot liveminiatyråtergivningen. På så sätt kan du snabbt visa program som körs genom att hovra över programmet i aktivitetsfältet eller använda ALT-TAB nyckelgest för att se och snabbt växla till ett program.

Följande bild illustrerar windows Vista live-miniatyrbilden som visas när du hovrar över programmet i aktivitetsfältet.

Skärmbild som visar den D W M-miniatyrbild som visas när du hovrar över en app i aktivitetsfältet.

Följande bild illustrerar Windows Vista Flip (ALT-TAB) som aktiveras av DWM.

skärmbild av den aktiverade alt-tab-funktion i dwm

Not

DWM-miniatyrer gör det inte möjligt för utvecklare att skapa program som Windows Vista Flip3D (WINKEY-TAB) funktionen. Miniatyrbilder återges direkt till målfönstret i 2D.

 

DWM-miniatyrbildförhållanden

Om du vill visa miniatyrbilder i ditt program måste du först upprätta en relation mellan ett källfönster och ett målfönster. Detta görs genom att anropa funktionen DwmRegisterThumbnail.

DwmRegisterThumbnail renderar inte en miniatyrbild i målfönstret utan skapar bara relationen och ger ett handtag till miniatyren. Miniatyrbilden återges efter att DWM_THUMBNAIL_PROPERTIES har angetts och funktionen DwmUpdateThumbnailProperties har anropats. Efterföljande anrop till DwmUpdateThumbnailProperties uppdaterar miniatyrbilden med en ny uppsättning egenskaper. DWM tillhandahåller också hjälpfunktionen DwmQueryThumbnailSourceSize för att hämta storleken på källfönstret från miniatyrbilden.

Avsluta en miniatyrrelation genom att anropa funktionen DwmUnregisterThumbnail.

I följande exempel visas hur du skapar en relation med Windows-skrivbordet och visar det i ett program.

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;

Översikt över Desktop Window Manager

Aktivera och kontrollera DWM-sammansättning

prestandaöverväganden och bästa praxis