Share via


Funzione DwmSetIconicLivePreviewBitmap (dwmapi.h)

Imposta una bitmap statica e iconica per visualizzare un'anteprima in tempo reale (nota anche come anteprima Anteprima rapida) di una finestra o di una scheda. La barra delle applicazioni può usare questa bitmap per visualizzare un'anteprima di dimensioni intere di una finestra o di una scheda.

Sintassi

HRESULT DwmSetIconicLivePreviewBitmap(
                 HWND    hwnd,
                 HBITMAP hbmp,
  [in, optional] POINT   *pptClient,
                 DWORD   dwSITFlags
);

Parametri

hwnd

Handle per la finestra. Questa finestra deve appartenere al processo chiamante.

hbmp

Handle della bitmap per rappresentare la finestra specificata da hwnd .

[in, optional] pptClient

Offset dell'area client di una finestra della scheda (l'area del contenuto all'interno del frame della finestra client) dal frame della finestra host. Questo offset consente di disegnare correttamente il contenuto della finestra di tabulazione in un'anteprima dinamica quando viene disegnato senza la cornice.

dwSITFlags

Opzioni di visualizzazione per l'anteprima in tempo reale. Questo parametro può essere 0 o il valore seguente.

DWM_SIT_DISPLAYFRAME (0x00000001)

0x00000001. Visualizza un frame intorno alla bitmap fornita.

Valore restituito

Restituisce S_OK se la funzione ha esito positivo o un valore di errore in caso contrario. Si noti che poiché questa bitmap non viene memorizzata nella cache, se la finestra non viene visualizzata in anteprima quando un'applicazione chiama questa funzione, la funzione restituisce un codice di operazione riuscita, ma la bitmap viene eliminata e non usata.

Commenti

Viene visualizzata un'anteprima dinamica (nota anche come anteprima Anteprima rapida) di una finestra quando un utente sposta il puntatore del mouse sull'anteprima della finestra nella barra delle applicazioni o assegna lo stato attivo all'anteprima nella finestra ALT+TAB. Questa vista è una visualizzazione a dimensione intera della finestra e può essere uno snapshot o una rappresentazione iconica.

Una finestra chiama in genere la funzione DwmSetIconicLivePreviewBitmap in risposta a un messaggio WM_DWMSENDICONICLIVEPREVIEWBITMAP . La bitmap restituita non deve essere più grande dell'area client della finestra o del frame e deve avere una profondità di colore a 32 bit.

Desktop Window Manager (DWM) usa una copia della bitmap, ma il chiamante mantiene la proprietà della bitmap originale ed è responsabile della liberazione delle risorse usate quando non è più necessario. DWM non mantiene la copia della bitmap quando il DWM smette di visualizzare la rappresentazione dell'anteprima in tempo reale.

Esempio

Per impostare una bitmap statica e iconica da usare come anteprima dinamica per la finestra dell'applicazione, un'applicazione chiama la funzione DwmSetIconicLivePreviewBitmap . Per impostare questa bitmap, l'applicazione deve chiamare DwmSetWindowAttribute per impostare gli attributi della finestra per il rendering non client su DWMWA_FORCE_ICONIC_REPRESENTATION e DWMWA_HAS_ICONIC_BITMAP, come illustrato nel codice seguente.

            // Set DWM window attributes to provide the iconic bitmap, and 
            // to always render the thumbnail using the iconic bitmap.
            BOOL fForceIconic = TRUE;
            BOOL fHasIconicBitmap = TRUE;

            DwmSetWindowAttribute(
                hwnd,
                DWMWA_FORCE_ICONIC_REPRESENTATION,
                &fForceIconic,
                sizeof(fForceIconic));

            DwmSetWindowAttribute(
                hwnd,
                DWMWA_HAS_ICONIC_BITMAP,
                &fHasIconicBitmap,
                sizeof(fHasIconicBitmap));

L'applicazione chiama quindi DwmSetIconicLivePreviewBitmap per rispondere al messaggio WM_DWMSENDICONICLIVEPREVIEWBITMAP , come illustrato nel codice seguente.

        case WM_DWMSENDICONICLIVEPREVIEWBITMAP:
        {
            // This window is being asked to provide a bitmap to show in Peek preview.
            // This indicates the thumbnail in the taskbar is being previewed.
            RECT rectWindow = {0, 0, 0, 0};
            if (GetClientRect(hwnd, &rectWindow))
            {
                nWidth = rectWindow.right - rectWindow.left;
                nHeight = rectWindow.bottom - rectWindow.top;
            }

            hbm = CreateDIB(nWidth, nHeight);
            if (hbm)
            {
                hr = DwmSetIconicLivePreviewBitmap(hwnd, hbm, NULL, DWM_SIT_DISPLAYFRAME);
                DeleteObject(hbm);
            }
        }
        break;

Per l'esempio completo, vedere l'esempio Personalizzare un'anteprima iconica e un'anteprima dinamica bitmap .

Requisiti

Requisito Valore
Client minimo supportato Windows 7 [solo app desktop]
Server minimo supportato Windows Server 2008 R2 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione dwmapi.h
Libreria Dwmapi.lib
DLL Dwmapi.dll; Uxtheme.dll