|
|
发表于 2005-4-7 12:45:00
|
显示全部楼层
Re:请教一个关于DIRECTDRAW初始化的问题
// 全局对象
LPDIRECTDRAW7 lpDD; // DirectDraw object defined in DDRAW.H
LPDIRECTDRAWSURFACE7 lpDDSPrimary; // DirectDraw primary surface
LPDIRECTDRAWSURFACE7 lpDDSBack; // DirectDraw back surface
DDSURFACEDESC2 ddsd; // DirectDraw 表面描述结构
// 初始化DirectDraw 对象 协同等级 显示模式 主表面 后表面
bool CDxDraw::InitDxDraw(HWND hWnd)
{
HRESULT ddrval ;
ddrval = DirectDrawCreateEx(NULL, (LPVOID *)&lpDD, IID_IDirectDraw7, NULL);
if(ddrval != DD_OK)
return false;
ddrval = lpDD->SetCooperativeLevel(hWnd, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
if(ddrval != DD_OK)
return false;
ddrval = lpDD->SetDisplayMode(640, 480, 16, 0, 0);
if(ddrval != DD_OK)
return false;
// Create the primary surface with one back buffer.
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)
return false;
ddsd.ddsCaps.dwCaps = DDSCAPS_BACKBUFFER;
ddrval = lpDDSPrimary->GetAttachedSurface(&ddsd.ddsCaps, &lpDDSBack);
if(ddrval != DD_OK)
return false;
return true;
} |
|