/// <summary>Compatible bitmap. The number of bits per pixel is based on the color format of the device associated with the HDC specified with BeginBufferedPaint or BeginBufferedAnimation—typically, this is the display device.</summary>
/// <summary>Do not apply the clip region of the target DC to the double buffer. If this flag is not set and if the target DC is a window DC, then clipping due to overlapping windows is applied to the double buffer.</summary>
/// <summary>Begins a buffered animation operation. The animation consists of a cross-fade between the contents of two buffers over a specified period of time.</summary>
/// <param name="hwnd">A handle to the window in which the animations play.</param>
/// <param name="hdcTarget">A handle of the target DC on which the buffer is animated.</param>
/// <param name="rcTarget">A pointer to a structure that specifies the area of the target DC in which to draw.</param>
/// <param name="dwFormat">The format of the buffer.</param>
/// <param name="pPaintParams">A pointer to a structure that defines the paint operation parameters. This value can be NULL.</param>
/// <param name="pAnimationParams">A pointer to a structure that defines the animation operation parameters.</param>
/// <param name="phdcFrom">When this function returns, this value points to the handle of the DC where the application should paint the initial state of the animation, if not NULL.</param>
/// <param name="phdcTo">When this function returns, this value points to the handle of the DC where the application should paint the final state of the animation, if not NULL.</param>
/// <returns>A handle to the buffered paint animation.</returns>
/// <summary>Begins a buffered paint operation.</summary>
/// <param name="hdcTarget">The handle of the target DC on which the buffer will be painted.</param>
/// <param name="prcTarget">A pointer to a RECT structure that specifies the area of the target DC in which to paint.</param>
/// <param name="dwFormat">A member of the BP_BUFFERFORMAT enumeration that specifies the format of the buffer.</param>
/// <param name="pPaintParams">A pointer to a BP_PAINTPARAMS structure that defines the paint operation parameters. This value can be NULL.</param>
/// <param name="phdc">When this function returns, points to the handle of the new device context.</param>
/// <returns>A handle to the buffered paint context. If this function fails, the return value is NULL, and phdc is NULL. To get extended error information, call GetLastError.
/// <para>The returned handle is freed when EndBufferedPaint is called.</para>
/// <para>An application should call BufferedPaintInit on the calling thread before calling BeginBufferedPaint, and BufferedPaintUnInit before the thread is terminated.Failure to call BufferedPaintInit may result in degraded performance due to internal data being initialized and destroyed for each buffered paint operation.</para></returns>
/// <summary>Clears a specified rectangle in the buffer to ARGB = {0,0,0,0}.</summary>
/// <param name="hBufferedPaint">The handle of the buffered paint context, obtained through BeginBufferedPaint.</param>
/// <param name="prc">A pointer to a RECT structure that specifies the rectangle to clear. Set this parameter to NULL to specify the entire buffer.</param>
/// <returns>If this function succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>
/// <summary>Sets the alpha to a specified value in a given rectangle. The alpha controls the amount of transparency applied when blending with the buffer onto the destination target device context (DC).</summary>
/// <param name="hBufferedPaint">The handle of the buffered paint context, obtained through BeginBufferedPaint.</param>
/// <param name="prc">A pointer to a RECT structure that specifies the rectangle in which to set the alpha. Set this parameter to NULL to specify the entire buffer.</param>
/// <param name="alpha">The alpha value to set. The alpha value can range from zero (fully transparent) to 255 (fully opaque).</param>
/// <returns>If this function succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>
/// <summary>Closes down buffered painting for the current thread. Called once for each call to BufferedPaintInit after calls to BeginBufferedPaint are no longer needed.</summary>
/// <returns>If this function succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>
/// <summary>Renders the first frame of a buffered animation operation and starts the animation timer.</summary>
/// <param name="hbpAnimation">The handle to the buffered animation context that was returned by BeginBufferedAnimation.</param>
/// <param name="fUpdateTarget">If TRUE, updates the target DC with the animation. If FALSE, the animation is not started, the target DC is not updated, and the hbpAnimation parameter is freed.</param>
/// <returns>If this function succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>
/// <summary>Retrieves a pointer to the buffer bitmap if the buffer is a device-independent bitmap (DIB).</summary>
/// <param name="hBufferedPaint">The handle of the buffered paint context, obtained through BeginBufferedPaint.</param>
/// <param name="ppbBuffer">When this function returns, contains a pointer to the address of the buffer bitmap pixels.</param>
/// <param name="pcxRow">When this function returns, contains a pointer to the width, in pixels, of the buffer bitmap. This value is not necessarily equal to the buffer width. It may be larger.</param>
/// <returns>Returns S_OK if successful, or an error value otherwise. If an error occurs, ppbBuffer is set to NULL and pcxRow is set to zero.</returns>
/// <summary>A pointer to exclusion RECT structure. This rectangle is excluded from the clipping region. May be NULL for no exclusion rectangle.</summary>
/// <summary>A pointer to BLENDFUNCTION structure, which controls blending by specifying the blending functions for source and destination bitmaps. If NULL, the source buffer is copied to the destination with no blending.</summary>