Important:
This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.
A version of this page is also available for
4/8/2010

In order to fill all or part of a surface with a single color, you can use the IDirectDrawSurface::Bltmethod with the DDBLT_COLORFILL flag. This technique allows you to quickly erase an area or draw a solid-colored background.

Code Example

The following code example fills an entire surface with the color blue, after obtaining the numerical value for blue from the pixel format.

Note:
To make the following code example easier to read, security checking and error handling are not included. This code example should not be used in a release configuration unless it has been modified to include them.
Copy Code
/* It is assumed that lpDDS is a valid pointer to 
   an IDirectDrawSurface interface. */
 
HRESULT ddrval;
DDPIXELFORMAT ddpf;
 
ddpf.dwSize = sizeof(ddpf);
if (SUCCEEDED(lpDSS->GetPixelFormat(&ddpf))
{
	DDBLTFX ddbltfx; 
 
	ddbltfx.dwSize = sizeof(ddbltfx); 
	ddbltfx.dwFillColor = ddpf.dwBBitMask; // Pure blue
 
	ddrval = lpDDS->Blt( 
		NULL, 	// Destination is entire surface
		NULL, 	// No source surface
		NULL, 	// No source rectangle
		DDBLT_COLORFILL, &ddbltfx); 
 
	switch(ddrval) 
	{ 
		case DDERR_WASSTILLDRAWING: 
			. 
			. 
			. 
		case DDERR_SURFACELOST: 
			. 
			. 
			. 
		case DD_OK: 
			. 
			. 
			. 
		default: 
} 
}