它是DirectDraw接口的核心
LPDIRECTDRAW lpDD; if( DirectDrawCreate( NULL, &lpDD, NULL ) != DD_OK ) return FALSE; |
HRESULT DirectDrawCreate(GUID FAR * lpGUID, LPDIRECTDRAW FAR * lplpDD, IUnknown FAR * pUnkOuter) |
参数 | 描述 | 示例 |
---|---|---|
lpGUID | 指向DirectDraw接口的全局唯一标志符 | NULL |
lplpDD | 接受初始化成功的DirectDraw对象的地址 | &lpDD |
pUnkOuter | 备用 | NULL |
返回值 | 成功返回 DD_OK |
if ( lpDD->SetCooperativeLevel( GetActiveWindow(),DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN ) != DD_OK) return FALSE; |
HRESULT SetCooperativeLevel( HWND hWnd, DWORD dwFlags ) |
参数 | 描述 | 示例 |
---|---|---|
hWnd | 主窗口句柄 | GetActiveWindow() |
dwFlags | 控制级的标志符 | DDSCL_EXCLUSIVE : 独占 DDSCL_FULLSCREEN : 全屏
|
返回值 | 成功返回 DD_OK |
if ( lpDD->SetDisplayMode( 640, 480, 8 ) != DD_OK) return FALSE; |
参数 | 描述 | 示例 |
---|---|---|
屏幕宽度 | ||
屏幕高度 | ||
色深(位数) | ||
返回值 | 成功返回 DD_OK |
if ( lpDD->CreateSurface( &ddsd, &lpDDSPrimary, NULL ) != DD_OK) return FALSE; |
参数 | 描述 | 示例 |
---|---|---|
页面信息的 DDSURFACEDESC 结构的地址 | ||
接收主页面指针的地址 | ||
保留 | ||
返回值 | 成功返回 DD_OK |
参数 | 描述 |
---|---|
dwSize | 结构本身大小 |
dwFlags | DDSD_CAPS : 结构有效(总是需要) DDSD_WIDTH : 指定了宽度 DDSD_HEIGHT : 指定了高度 DDSD_PIXELFORMAT : 指定了色深 DDSD_BACKBUFFERCOUNT : 指定了附加页数 |
dwHeight | 高度 |
dwWidth | 宽度 |
lPitch / dwLinearSize | |
dwBackBufferCount | 附加页数 |
dwMipMapCount / dwZBufferBitDepth / dwRefreshRate | |
dwAlphaBitDepth | |
dwReserved | |
lpSurface | |
ddckCKDestOverlay | |
ddckCKDestBlt | |
ddckCKSrcOverlay | |
ddckCKSrcBlt | |
ddpfPixelFormat.dwSize | 点格式结构本身大小 |
ddpfPixelFormat.dwRGBBitCount | 色深 |
ddpfPixelFormat.dwFlags | DDPF_RGB :
DDPF_PALETTEINDEXED8 : 8位调色板 |
ddsCaps.dwCaps | DDSCAPS_PRIMARYSURFACE : 主页面 DDSCAPS_OFFSCREENPLAIN : 离屏页面 DDSCAPS_COMPLEX : 复杂页面 DDSCAPS_FLIP : 换页链 |