很奇怪,这些代码直接写好用,放在函数中就不好用了

kevinmartin 2005-01-17 05:23:17
大家帮忙看一下吧,我正在学习DirectDraw的一些内容,但是下面的问题很奇怪啊!

void UDrawer::putImage(HBITMAP bmp1, CRect rect)
{
HBITMAP bmp = (HBITMAP)::LoadImage(NULL,"bg.bmp",IMAGE_BITMAP,800,600,LR_LOADFROMFILE);
HDC hdc = CreateCompatibleDC(NULL);
HDC hdc1;
SelectObject(hdc,bmp);
HRESULT result = pOPla->GetDC(&hdc1);
if(result != DD_OK)
{
MessageBox(NULL,"取得幕后暂存区DC失败!","错误",MB_OK);
return;
}
BitBlt(hdc1,0,0,800,600,hdc,0,0,SRCCOPY);
pOPla->ReleaseDC(hdc1);

pBBuf->BltFast(0,0,pOPla,CRect(0,0,800,600),DDBLTFAST_WAIT);
pPSur->Flip(NULL,DDFLIP_WAIT);
}
这一段代码没有使用到参数的内容,我在外面调用putImage(NULL,NULL);以后在倒数第二行出现错误,但是同样一段代码,不做任何修改,放到主函数中,可以成功,没有错误。这是一个在屏幕上贴图的代码段。
...全文
189 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjh1982 2005-01-19
  • 打赏
  • 举报
回复
楼主解决了就给个话么....
kevinmartin 2005-01-18
  • 打赏
  • 举报
回复
dongyuanzhang(阿林) 提醒得有道理


putImage(NULL,NULL);
........
CRect 没有接受NULL的构造吧!
-------------------------------------------

I'm sure 不是这个的问题,能够调试到函数里面,只是在那一行出问题。
yjh1982 2005-01-18
  • 打赏
  • 举报
回复
hdc1没初始化
yjh1982 2005-01-18
  • 打赏
  • 举报
回复
dongyuanzhang(阿林) 提醒得有道理


putImage(NULL,NULL);
........
CRect 没有接受NULL的构造吧!
dongyuanzhang 2005-01-18
  • 打赏
  • 举报
回复
应该是调用参数有问题。
well2008202 2005-01-18
  • 打赏
  • 举报
回复
我是刚学这个我还不知道
我是来看看看有什么可以学的吗
是真的很好哦
有好 多可学的哦/
C好学吗?
kevinmartin 2005-01-18
  • 打赏
  • 举报
回复
hdc1没初始化

------------------------
你确定吗?
pOPla->GetDC(&hdc1);
这个不就是初始化hdc1的吗?
xue23 2005-01-17
  • 打赏
  • 举报
回复
pOpla已经被释放了,怎么还在倒数第二行用呢。

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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