[创建一个DirectDraw对象]
LPDIRECTDRAW lpDD;
HRESULT ddrval;
ddrval = DirectDrawCreate( NULL, &lpDD, NULL );
if( ddrval != DD_OK )
{
// 在这里输出一些错误检测代码
}
[设置协作级别]
ddrval = lpDD-SetCooperativeLevel( hWnd, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN );
if( ddrval != DD_OK)
{
// 在这里输出一些错误检测代码
}
[设置视频模式]
ddrval = lpDD-SetDisplayMode( 640, 480, 8);
if( ddrval != DD_OK)
{
// 在这里输出一些错误检测代码
}
[创建主表面]
LPDIRECTDRAWSURFACE lpDDSPrimary;
DDURFACEDESC ddsd;
HRESULT ddrval;
// 清除结构中所有的数据
memset( &&ddsd, 0, sizeof(ddsd) );
// 设置标记
ddsd.dwSize = sizeof( ddsd );
ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_FLIP | DDSCAPS_COMPLEX;
ddsd.dwBackBufferCount = 1;
// 创建表面
ddrval = lpDD-CreateSurface( &ddsd, &lpDDSPrimary, NULL );
if( ddrval != DD_OK )
{
// 在这里输出一些错误检测代码
}
[创建后表面]
DDSCAPS ddscaps;
LPDIRECTDRAWSURFACE lpDDSBack; ddscaps.dwCaps = DDSCAPS_BACKBUFFER;
ddrval = lpDDSPrimary-GetAttachedSurface( &ddscaps, &lpDDSBack );
if( ddrval != DD_OK )
{
// 在这里输出一些错误检测代码
}
[创建离屏表面]
LPDIRECTDRAWSURFACE lpDDSOffscreen;
DDSURFACEDESC ddsd;
HRESULT ddrval;
ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
ddsd.dwHeight = 480;
ddsd.dwWidth = 640;
ddrval = lpDD-CreateSurface( &ddsd, &lpDDSOffscreen, NULL );
if( ddrval != DD_OK )
{
// 在这里输出一些错误检测代码
}