看到书上有用下面的代码读取位图文件头,调试运行也正确。但我把bf换成指针pbf进行操作,调试时弹出Unhandled exception in Bitmap.exe access violation,指向最后一行,而且pbf中的数据都是错误呢DWORD WriteNum;
BITMAPFILEHEADER bf;
ReadFile(m_hFile, &bf, 14, &WriteNum, NULL);
int bfsize = bf.bfSize;
BITMAPFILEHEADER bf;
ReadFile(m_hFile, &bf, 14, &WriteNum, NULL);
int bfsize = bf.bfSize;
解决方案 »
- 写的软件加载bho的问题
- VS 2005 复选框 设置为只读 如果不能 就设置为不显示
- 使用vc.net 2003 怎么重载OnTimer()呢?请教各位
- 我的程序安装在win98上时,提示“链接文件 mydll.dll 到不存在的输出 MFC42.dll”,怎么回事??
- CArray型的变量怎么当参数传入另外一个函数呢?
- 为什么我的类在执行线程时总是会有0xC0000005Access Violation错误?
- 在Button上画上位图或图标??在线...
- 请问怎么读取数据的前12位。
- 100分求Windows 2000 内部揭密中文电子版下载(英文名为Inside Microsoft Windows 2000)
- 局部键盘钩子的问题
- 输入网址后提交的数据包,能否截获后修改再进行转发?
- 咨询关于文件的存储问题,谢谢大家啦
BITMAPFILEHEADER *pbf = new BITMAPFILEHEADER();
pbf->bfSize = sizeof(BITMAPFILEHEADER);
ReadFile(m_hFile, pbf, sizeof(BITMAPFILEHEADER), &WriteNum, NULL);
楼主基本的指针使用看来还不过关呀,可以参阅C++ Primer学习下。
你可以去搜 C\C++文件操作,里面有讲C语言文件操作的
回传的bitmap就是图片
图片长宽由参数获得
要引入wingdi.h
unsigned char* Game_LoadBMP( char *FileName, int *width, int *height )
{
FILE *fp = NULL;
BITMAPFILEHEADER bitmapFileHeader; // Bitmap file header
BITMAPINFOHEADER bitmapInfo; // Bitmap information
DWORD infoSize; // Size of information
DWORD bitSize; // Size of bitmap
unsigned char *bitmap = NULL;
fread( &bitmapFileHeader, sizeof(BITMAPFILEHEADER), 1, fp );
infoSize = bitmapFileHeader.bfOffBits - sizeof(BITMAPFILEHEADER);
fread( &bitmapInfo, infoSize, 1, fp ); // 读取bitmap info
*width = bitmapInfo.biWidth; // 得知图片的宽
*height = bitmapInfo.biHeight; // 图片的高
bitSize = bitmapInfo.biSizeImage; // 影像档的位元数目(bitSize = pixel*3)
bitmap = (unsigned char*)malloc( bitSize );
fread( bitmap, bitSize, 1, fp ); // 到这里已经取得图片档了
fclose( fp );
return bitmap;
}