Panoramica dell'anteprima di DWM

Desktop Window Manager (DWM) consente la visualizzazione delle rappresentazioni di anteprima delle finestre dell'applicazione. Questi non sono snapshot statici di una finestra, ma sono invece connessioni costanti dinamiche tra una finestra di origine dell'anteprima e una posizione in una finestra di destinazione che riceve il rendering delle anteprime dinamiche. In questo modo è possibile visualizzare rapidamente le applicazioni in esecuzione passando il puntatore del mouse sull'applicazione sulla barra delle applicazioni o usando il movimento del tasto ALT-TAB per visualizzare e passare rapidamente a un'applicazione.

L'immagine seguente illustra l'anteprima live di Windows Vista visualizzata quando si passa il puntatore del mouse sull'applicazione sulla barra delle applicazioni.

Screenshot che mostra l'anteprima di D W M visualizzata quando si passa il puntatore del mouse su un'app nella barra delle applicazioni.

L'immagine seguente illustra l'opzione Flip (ALT-TAB) di Windows Vista abilitata da DWM.

screenshot della scheda alt-tab abilitata per dwm

Nota

Le anteprime DWM non consentono agli sviluppatori di creare applicazioni come la funzionalità Windows Vista Flip3D (WINKEY-TAB). Il rendering delle anteprime viene eseguito direttamente nella finestra di destinazione in 2D.

 

Relazioni di anteprima DWM

Per visualizzare le anteprime nell'applicazione, è prima necessario stabilire una relazione tra una finestra di origine e una finestra di destinazione. Questa operazione viene eseguita chiamando la funzione DwmRegisterThumbnail .

DwmRegisterThumbnail non esegue il rendering di un'anteprima nella finestra di destinazione, ma crea semplicemente la relazione e fornisce l'handle di anteprima. Il rendering dell'anteprima viene eseguito dopo che il DWM_THUMBNAIL_PROPERTIES è stato impostato e la funzione DwmUpdateThumbnailProperties è stata chiamata. Le chiamate successive a DwmUpdateThumbnailProperties aggiornano l'anteprima con un nuovo set di proprietà. DWM fornisce anche la funzione helper DwmQueryThumbnailSourceSize per ottenere le dimensioni della finestra di origine dall'anteprima.

Per terminare una relazione di anteprima, chiamare la funzione DwmUnregisterThumbnail .

Nell'esempio seguente viene illustrato come creare una rileationship con il desktop di Windows e visualizzarla in un'applicazione.

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;

Cenni preliminari di Gestione finestre desktop

Abilitare e controllare la composizione DWM

Considerazioni sulle prestazioni e procedure consigliate