游戏编程SDK-打开位图时出错请求帮助!!!

来源:百度知道 编辑:UC知道 时间:2024/05/14 12:41:31
int Load_Bitmap_File(BITMAP_FILE_PTR bitmap,char *filename) //读取位图函数;
{
int file_handle,index;
UCHAR *temp_buffer=NULL;
OFSTRUCT file_data;
if((file_handle=OpenFile(filename,&file_data,OF_READ))==-1)
{ return 0;})//如果读取到文件末尾就返回到主函数。
_lread(file_handle,&bitmap->bitmapfileheader,sizeof(BITMAPFILEHEADER));
if(bitmap->bitmapfileheader.bfType!=0x4D42)
{
_lclose(file_handle);

return 0;
}
_lread(file_handle,&bitmap->bitmapinfoheader,sizeof(BITMAPINFOHEADER));
if(bitmap->bitmapinfoheader.biBitCount==8)
{
_lread(file_handle,&bitmap->palette,256*sizeof(PALETTEENTRY));
for(index=0;index<256;index++)
{
int temp_color=bitmap->palette[index].peRed;
bitmap->palette[index].peRed=bitmap->palette[index].peBlue;
bitmap->palette[index].peBlue=temp_color;
bitmap->palette[index].peFlags=PC_NOCOLLAPSE;

大部分的代码都没有问题,但是:

if((file_handle=OpenFile(filename,&file_data,OF_READ))==-1)
{ return 0;})//如果读取到文件末尾就返回到主函数。

return 0后面的注释前多了个")",我估计是你把它包含进条件内了。
我写了一下代码测试过,没问题,test,bmp是一个24位色的位图。

#include <windows.h>
#include <io.h>

typedef struct BITMAP_FILE
{
BITMAPFILEHEADER bitmapfileheader;
BITMAPINFOHEADER bitmapinfoheader;
PALETTEENTRY palette[256];
UCHAR *buffer;
} *BITMAP_FILE_PTR;

int Load_Bitmap_File(BITMAP_FILE_PTR bitmap,char *filename) //读取位图函数;
{
int file_handle,index;
UCHAR *temp_buffer=NULL;
OFSTRUCT file_data;
if((file_handle=OpenFile(filename,&file_data,OF_READ))==-1)
{ return 0;}//如果读取到文件末尾就返回到主函数。
_lread(file_handle,&bitmap->bitmapfileheader,sizeof(BITMAPFILEHEADER));
if(bitmap->bitmapfileheader.bfType!=0x4D42)
{
_lclose(file_handle);
return 0;
}
_lread(file_handle,&b