|
|
请好心人帮我找下里面的错误好吗?我就是不明白哪错了……
bool game: oadBmpFile(LPDIRECTDRAWSURFACE7 lpddSurface,LPCSTR MapFileName,int width,int height,COLORREF ColorKey)
{
//ddsd在ddraw初始化时已经初始化过了
ddsd.dwWidth =width;
ddsd.dwHeight=height;
BITMAP bm;
HDC hdc_image;
hdc_image=CreateCompatibleDC(NULL);
//载入位图
HBITMAP BMP=(HBITMAP)LoadImage(GetModuleHandle(NULL),MapFileName,IMAGE_BITMAP,width,height,LR_LOADFROMFILE);
if(BMP==NULL)
(HBITMAP)LoadImage(NULL, MapFileName, IMAGE_BITMAP, width, height, LR_LOADFROMFILE|LR_CREATEDIBSECTION);
if(BMP==NULL)
{
MessageBox(hwnd_window_main,"无法载入位图",NULL,MB_OK);
//OutputDebugString("无法载入位图");
return false;
}
//建立幕后内存区
GetObject(BMP,sizeof(bm),&bm);
width=width==0?bm.bmWidth:width;
height=height==0?bm.bmHeight:height;
ddsd.dwWidth=width;
ddsd.dwHeight=height;
if(lpDD->CreateSurface(&ddsd,&lpddSurface,NULL)!=DD_OK) //lpDD=ddraw对象的指针
{
MessageBox(hwnd_window_main,"读取图片时无法建立幕后缓存区域",NULL,MB_OK);
//OutputDebugString("读取图片时无法建立幕后缓存区域!\n");
return false;
}
//分配幕后内存区域
::SelectObject(hdc_image,BMP);
lpddSurface->GetDC(&hdc_buffer);
::BitBlt(hdc_buffer,0,0,width,height,hdc_image,0,0,SRCCOPY);
lpddSurface->ReleaseDC(hdc_buffer);
//设置颜色键
colorkey.dwColorSpaceHighValue=0x0;
colorkey.dwColorSpaceLowValue =0x0;
lpddSurface->SetColorKey(DDCKEY_SRCBLT,&colorkey);
DeleteObject(BMP);
DeleteDC(hdc_image);
return true;
} |
|