Compartir a través de


Función BufferedPaintRenderAnimation (uxtheme.h)

Pinta el siguiente marco de una animación de pintura almacenada en búfer.

Sintaxis

BOOL BufferedPaintRenderAnimation(
  HWND hwnd,
  HDC  hdcTarget
);

Parámetros

hwnd

Tipo: HWND

Controla la ventana en la que se reproducen las animaciones.

hdcTarget

Tipo: HDC

Identificador del controlador de dominio de destino en el que se anima el búfer.

Valor devuelto

Tipo: BOOL

Devuelve TRUE si el marco se ha pintado o FALSE en caso contrario.

Comentarios

Si esta función devuelve TRUE, la aplicación no debe seguir pintando. Si esta función devuelve FALSE, la aplicación debería pintar normalmente.

Una aplicación llama a esta función dentro de su controlador de WM_PAINT . Después de bufferedPaintRenderAnimation pinta un fotograma de animación, una aplicación normalmente continuará sin realizar sus operaciones de pintura habituales. Si procede, una aplicación puede optar por representar una interfaz de usuario (UI) adicional sobre la parte superior de la animación. En el ejemplo de código siguiente, que se va a incluir como parte de un cuerpo de código mayor, se muestra cómo usar las funciones de dibujo de animación.

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

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado uxtheme.h
Archivo DLL UxTheme.dll