## IDirectDraw2

Applications use the methods of the IDirectDraw2 interface to create DirectDraw objects and work with system-level variables. This section is a reference to the methods of this interface. For a conceptual overview, see The DirectDraw Object.

The methods of the IDirectDraw2 interface can be organized into the following groups:

Allocating memory | Compact
| Initialize
Creating objects | CreateClipper
| CreatePalette
| CreateSurface
Device capabilities | GetCaps
Display modes | EnumDisplayModes
| GetDisplayMode
| GetMonitorFrequency
| RestoreDisplayMode
| SetDisplayMode
| WaitForVerticalBlank
Display status | GetScanLine
| GetVerticalBlankStatus
Miscellaneous | GetAvailableVidMem
| GetFourCCCodes
Setting behavior | SetCooperativeLevel
Surfaces | DuplicateSurface
| EnumSurfaces
| FlipToGDISurface
| GetGDISurface

The IDirectDraw2 interface, like all COM interfaces, inherits the IUnknown interface methods. The IUnknown interface supports the following three methods:

AddRef |
QueryInterface |
Release |

You can use the LPDIRECTDRAW or LPDIRECTDRAW data types to declare a variable that contains a pointer to an IDirectDraw or IDirectDraw2 interface. The Ddraw.h header file declares these data types with the following code:

typedef struct IDirectDraw FAR *LPDIRECTDRAW;

typedef struct IDirectDraw2 FAR *LPDIRECTDRAW2;