Platform SDK: DirectX

Creating the Primary Surface

The primary surface is the surface currently visible on the monitor and is identified by the DDSCAPS_PRIMARYSURFACE flag. You can only have one primary surface for each DirectDraw object.

When you create a primary surface, remember that the dimensions and pixel format implicitly match the current display mode. Therefore, this is the one time you don't need to declare a surface's dimensions or pixel format. If you do specify them, the call will fail and return DDERR_INVALIDPARAMS—even if the information you used matches the current display mode.

[C++]

The following example shows how to prepare the DDSURFACEDESC2 structure members relevant for creating the primary surface.

DDSURFACEDESC2 ddsd; 
ddsd.dwSize = sizeof(ddsd); 
 
// Tell DirectDraw which members are valid. 
ddsd.dwFlags = DDSD_CAPS; 
 
// Request a primary surface. 
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE; 

After creating the primary surface, you can retrieve information about its dimensions and pixel format by calling its IDirectDrawSurface7::GetSurfaceDesc method.

[Visual Basic]

The following example shows how to prepare the DDSURFACEDESC2 type members relevant for creating the primary surface.

Dim ddsd As DDSURFACEDESC2
 
' Tell DirectDraw which members are valid.
ddsd.lFlags = DDSD_CAPS
 
' Request a primary surface.
ddsd.ddsCaps.lCaps = DDSCAPS_PRIMARYSURFACE

After creating the primary surface, you can retrieve information about its dimensions and pixel format by calling its DirectDrawSurface7.GetSurfaceDesc method.

See also Display Modes.