Condividi tramite


Funzione BufferedPaintRenderAnimation (uxtheme.h)

Disegna il fotogramma successivo di un'animazione di vernice memorizzata nel buffer.

Sintassi

BOOL BufferedPaintRenderAnimation(
  HWND hwnd,
  HDC  hdcTarget
);

Parametri

hwnd

Tipo: HWND

Gestire la finestra in cui vengono riprodotte le animazioni.

hdcTarget

Tipo: HDC

Handle del controller di dominio di destinazione in cui viene animato il buffer.

Valore restituito

Tipo: BOOL

Restituisce TRUE se il frame è stato disegnato o FALSE in caso contrario.

Commenti

Se questa funzione restituisce TRUE, l'applicazione non deve eseguire ulteriori dipinti. Se questa funzione restituisce FALSE, l'applicazione deve disegnare normalmente.

Un'applicazione chiama questa funzione all'interno del relativo gestore WM_PAINT . Dopo che BufferedPaintRenderAnimation disegna un frame di animazione, un'applicazione in genere continuerà senza eseguire le normali operazioni di disegno. Se appropriato, un'applicazione può scegliere di eseguire il rendering di un'interfaccia utente aggiuntiva nella parte superiore dell'animazione. Nell'esempio di codice seguente, da includere come parte di un corpo di codice più grande, viene illustrato come usare le funzioni di disegno dell'animazione.

    if (!_fBufferedPaintInit)
    {
        BufferedPaintInit();
        _fBufferedPaintInit = TRUE;
    }

    // Determine whether the paint message was generated by a softfade animation.
    if (!BufferedPaintRenderAnimation(hWnd, hdc))
    {
        // Initialize buffered paint parameters.
        BP_ANIMATIONPARAMS animParams = {sizeof(BP_ANIMATIONPARAMS)};
        animParams.style = BPAS_LINEAR; 
        animParams.dwDuration = 0;
        GetThemeTransitionDuration(hTheme, iPartId, iStateIdFrom, 
                iStateIdTo, TMT_TRANSITIONDURATIONS, &animParams.dwDuration);

        HDC hdcFrom, hdcTo;
        HANIMATIONBUFFER hbpAnimation = BeginBufferedAnimation(hWnd, hdc, &rc, 
                BPBF_COMPATIBLEBITMAP, NULL, &animParams, &hdcFrom, &hdcTo);
        if (hbpAnimation)
        {
            if (hdcFrom)
            {
                PaintImpl(hdcFrom, iPartId, iStateIdFrom /*, ...*/);
            }
            if (hdcTo)
            {
                PaintImpl(hdcTo, iPartId, iStateIdTo/*, ...*/);
            }

            EndBufferedAnimation(hbpAnimation, TRUE);
        }
        else
        {
            // Default to unbuffered paint
            PaintImpl(hdc, iPartId, iStateIdTo/*, ...*/);
       
        }
    }
    // Else do not paint because the BufferedPaintRenderAnimation function 
    // already did.
}

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione uxtheme.h
DLL UxTheme.dll