Bagikan melalui


Fungsi BufferedPaintRenderAnimation (uxtheme.h)

Melukis bingkai berikutnya dari animasi cat buffer.

Sintaks

BOOL BufferedPaintRenderAnimation(
  HWND hwnd,
  HDC  hdcTarget
);

Parameter

hwnd

Jenis: HWND

Tangani ke jendela tempat animasi diputar.

hdcTarget

Jenis: HDC

Menangani DC target tempat buffer dianimasikan.

Nilai kembali

Jenis: BOOL

Mengembalikan TRUE jika bingkai telah dicat, atau FALSE sebaliknya.

Keterangan

Jika fungsi ini mengembalikan TRUE, aplikasi tidak boleh melakukan lukisan lebih lanjut. Jika fungsi ini mengembalikan FALSE, aplikasi harus melukis secara normal.

Aplikasi memanggil fungsi ini dalam handler WM_PAINT . Setelah BufferedPaintRenderAnimation melukis bingkai animasi, aplikasi biasanya akan berlanjut tanpa melakukan operasi pengecatan yang biasa. Jika sesuai, aplikasi dapat memilih untuk merender antarmuka pengguna (UI) tambahan di atas animasi. Contoh kode berikut, untuk disertakan sebagai bagian dari isi kode yang lebih besar, menunjukkan cara menggunakan fungsi lukisan animasi.

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

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 [hanya aplikasi desktop]
Target Platform Windows
Header uxtheme.h
DLL UxTheme.dll