很奇怪,这些代码直接写好用,放在函数中就不好用了
大家帮忙看一下吧,我正在学习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);以后在倒数第二行出现错误,但是同样一段代码,不做任何修改,放到主函数中,可以成功,没有错误。这是一个在屏幕上贴图的代码段。