IDirectDraw7在使用CreateSurface出错.

yanjinbin 2011-10-15 05:57:10
IDirectDraw7在使用CreateSurface出错.
出错提示和位置如下代码:



LPDIRECTDRAW7 lpDD7; // DirectDraw7 接口
LPDIRECTDRAWSURFACE7 lpDDSPrimary7; //IDirectDrawSurface7显示页

BOOL InitDDraw(void)
{
DDSURFACEDESC2 ddsd; //页面描述
HRESULT ddrval = 0; //获取函数返回值
HDC hdc; //设备环境句柄

const WCHAR* strHRESULT; //获得错误消息
const WCHAR* strDescription;

DWORD dWidth = 640,dHeight = 480; //页面的宽和高
DWORD dDepth = 8; //像素位:8, 16, 32,

ddrval = DirectDrawCreateEx(NULL,(VOID**)&lpDD7,IID_IDirectDraw7,NULL);
if (ddrval != DD_OK ) return FALSE; //创建DirectCraw对象

// 取得独占和全屏模式
ddrval = lpDD7->SetCooperativeLevel(GetActiveWindow(),DDSCL_EXCLUSIVE|DDSCL_FULLSCREEN);
if(ddrval != DD_OK){
return FALSE;
}

//设置显示模式
ddrval = lpDD7->SetDisplayMode( dWidth, dHeight, dDepth, 0, 0); //1440*900
if ( ddrval != DD_OK){
return FALSE;
}
//填充主页面信息
ddsd.dwSize = sizeof( ddsd );
ddsd.dwFlags = DDSD_CAPS|DDSD_BACKBUFFERCOUNT;

//表明ddsd所具有的属性
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE|DDSCAPS_FLIP|DDSCAPS_COMPLEX;
ddsd.dwBackBufferCount = 1;

//创建主页面对象
ddrval = lpDD7->CreateSurface( &ddsd,&lpDDSPrimary7,NULL);
if ( ddrval != DD_OK){
strHRESULT = DXGetErrorString( ddrval);
strDescription = DXGetErrorDescription( ddrval);
MessageBox(GetActiveWindow(),strDescription, strHRESULT, MB_OK );
//提示错误:Err:DDERR_INVALIDCAPS;Description:One or more of the caps bits passed to the callback are incorrect.
return FALSE;
}
/*
.....省略.........
*/
}


我是按照:http://www.mscto.com/game/2009021646202.html 这篇文章来写的,但为什么就卡在那过不去.
...全文
92 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanjinbin 2011-10-16
  • 打赏
  • 举报
回复
求解。。。。

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧