Partager via


Fonction BufferedPaintRenderAnimation (uxtheme.h)

Peint le cadre suivant d’une animation de peinture mise en mémoire tampon.

Syntaxe

BOOL BufferedPaintRenderAnimation(
  HWND hwnd,
  HDC  hdcTarget
);

Paramètres

hwnd

Type : HWND

Gérez la fenêtre dans laquelle les animations sont lues.

hdcTarget

Type : HDC

Handle du contrôleur de domaine cible sur lequel la mémoire tampon est animée.

Valeur retournée

Type : BOOL

Retourne TRUE si le cadre a été peint, ou FALSE dans le cas contraire.

Remarques

Si cette fonction retourne TRUE, l’application ne doit pas effectuer de peinture supplémentaire. Si cette fonction retourne FALSE, l’application doit peindre normalement.

Une application appelle cette fonction dans son gestionnaire de WM_PAINT . Une fois que BufferedPaintRenderAnimation a peint un cadre d’animation, une application continue généralement sans effectuer ses opérations de peinture habituelles. Le cas échéant, une application peut choisir d’afficher une interface utilisateur supplémentaire au-dessus de l’animation. L’exemple de code suivant, à inclure dans un ensemble plus large de code, montre comment utiliser les fonctions de peinture d’animation.

    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.
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau uniquement]
Plateforme cible Windows
En-tête uxtheme.h
DLL UxTheme.dll