DirectX API

  1. DirectDrawCreate
  2. SetCooperativeLevel
  3. SetDisplayMode
  4. CreateSurface
  5. DDSURFACEDESC

DirectDrawCreate 创建 DirectDraw 对象

它是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  

SetCooperativeLevel 设置控制程度和显示模式

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  

SetDisplayMode 设置显示器的显示模式

if ( lpDD->SetDisplayMode( 640, 480, 8 ) != DD_OK) return FALSE;
 
参数 描述 示例
  屏幕宽度  
  屏幕高度  
  色深(位数)  
返回值 成功返回 DD_OK  

CreateSurface 创建页面对象

if ( lpDD->CreateSurface( &ddsd, &lpDDSPrimary, NULL ) != DD_OK) return FALSE;
 
参数 描述 示例
  页面信息的 DDSURFACEDESC 结构的地址  
  接收主页面指针的地址  
  保留  
返回值 成功返回 DD_OK  

DDSURFACEDESC 页面描述结构

参数 描述
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 : 换页链