Does this code do it right?
Code:
HRESULT r;
r = DirectDrawCreateEx (0,(void**)&ddMain,IID_IDirectDraw7,0);
if FAILED(r) return false;
r = ddMain->SetCooperativeLevel( m_hWnd, DDSCL_NORMAL );
if FAILED(r) return false;
// Create the primary surface
DDSURFACEDESC2 ddsd;
ZeroMemory( &ddsd, sizeof( ddsd ) );
ddsd.dwSize = sizeof( ddsd );
ddsd.dwFlags = DDSD_CAPS;
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
r = ddMain->CreateSurface(&ddsd,&dsFront,NULL);
if FAILED(r) return false;
//---------------------------
// Create the backbuffer surface
ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_3DDEVICE;
ddsd.dwWidth = dwWidth;
ddsd.dwHeight = dwHeight;
r = ddMain->CreateSurface(&ddsd,&dsBack,NULL);
if FAILED(r) return false;
//------------------------------