用GetCaps时,为什么报无效参数?

Anon 2003-09-29 12:43:17
下面这段代码有什么问题吗?为什么执行到这里会报错0x80070057,我查了下这个错误号的意思是无效参数(DDERR_INVALIDPARAMS)?
m_lpDD是LPDIRECTDRAW类型的变量.

DDCAPS ddcaps;
ddcaps.dwSize=sizeof(ddcaps);
ddrval=m_lpDD->GetCaps(&ddcaps,NULL);
if(ddrval!=DD_OK)
{
Msg("GetCaps failed.\r\nerr=0x%08X", ddrval);
return FALSE;
}


...全文
119 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Anon 2003-09-30
  • 打赏
  • 举报
回复
请求帮助.自己顶一下.
qwedcxza 2003-09-29
  • 打赏
  • 举报
回复
那么代码没问题了
你的 m_lpDD 可疑
Anon 2003-09-29
  • 打赏
  • 举报
回复
没用,清零后还是报这个错。
qwedcxza 2003-09-29
  • 打赏
  • 举报
回复
试试

DDCAPS ddcaps;
memset( &ddcaps, 0, sizeof(ddcaps ) );
ddcaps.dwSize=sizeof(ddcaps);
ddrval=m_lpDD->GetCaps(&ddcaps,NULL);
Anon 2003-09-29
  • 打赏
  • 举报
回复
ddrval=m_lpDD->GetCaps(&ddcaps,&ddcaps);

我试过了,也没用.
qwedcxza 2003-09-29
  • 打赏
  • 举报
回复
ddrval=m_lpDD->GetCaps(&ddcaps,&ddcaps);

从代码,我看不出别的了
Anon 2003-09-29
  • 打赏
  • 举报
回复
只有一块显卡.和硬件有关吗?报的是无效参数?
qwedcxza 2003-09-29
  • 打赏
  • 举报
回复
你的系统有几个显卡
Anon 2003-09-29
  • 打赏
  • 举报
回复
没有DirectDrawCreateEx这个函数啊?(我用的VC6.0)

把GetCaps放到DirectDrawCreate之后也报同样的错。
qwedcxza 2003-09-29
  • 打赏
  • 举报
回复
以下几点可以再试试
使用 DirectDrawCreateEx
在建立后首先 GetCaps ( 设置合作级别之前 )
Anon 2003-09-29
  • 打赏
  • 举报
回复
这是前面的代码,如果m_lpDD有问题,前面应该会报错啊。

HRESULT ddrval;
ddrval = DirectDrawCreate(NULL, &m_lpDD, NULL);
if(ddrval!=DD_OK)
{
Msg("DirectDrawCreate failed.\r\nerr=0x%08X", ddrval);
return FALSE;
}
ddrval = m_lpDD->SetCooperativeLevel(m_hWnd, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
if(ddrval!=DD_OK)
{
Msg("SetCooperativeLevel failed.\r\nerr=0x%08X", ddrval);
return FALSE;
}
ddrval = m_lpDD->SetDisplayMode(GModeX, GModeY, GBPP);
if(ddrval!=DD_OK)
{
Msg("SetDisplayMode failed.\r\nerr=0x%08X", ddrval);
return FALSE;
}

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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