我这个图片是一个Bitmap,以资源的形式保存在工程中。
并且它是一个BMP类型。假设ID号是 IDB_BITMAP1。我在加载的时候,使用的方法为:1、FindResource
2、LoadResource
3、LockResource我在用SizeofResource 的时候发现一个很奇怪的问题,
返回的大小,始终是比 真正的图片大小小 14个字节。这14个字节正好是 BITMAP 的首部。
typedef struct tagBITMAPFILEHEADER {
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER;
而且返回的缓冲区也是 从 这14个字节后开始的,
这时候用 OleLoadPicture 肯定会失败。这个是不是微软函数的BUG呢??我后来将图片转成了JPG,然后再加载,图片能加载成功。没有仔细分析为什么,但为什么BMP类型的就不行呢??有没有网友发现过这样的问题的???hInst = GetModuleHandle(NULL);
lpName = MAKEINTRESOURCE(IDB_BITMAP2);
lpType = RT_BITMAP; hResInfo = FindResource(hInst, lpName, lpType); if (hResInfo == NULL)
return false; // Load the resource
hRes = LoadResource(hInst, hResInfo); if (hRes == NULL)
return false; // Lock the resource
lpRes = (char*)LockResource(hRes);
并且它是一个BMP类型。假设ID号是 IDB_BITMAP1。我在加载的时候,使用的方法为:1、FindResource
2、LoadResource
3、LockResource我在用SizeofResource 的时候发现一个很奇怪的问题,
返回的大小,始终是比 真正的图片大小小 14个字节。这14个字节正好是 BITMAP 的首部。
typedef struct tagBITMAPFILEHEADER {
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER;
而且返回的缓冲区也是 从 这14个字节后开始的,
这时候用 OleLoadPicture 肯定会失败。这个是不是微软函数的BUG呢??我后来将图片转成了JPG,然后再加载,图片能加载成功。没有仔细分析为什么,但为什么BMP类型的就不行呢??有没有网友发现过这样的问题的???hInst = GetModuleHandle(NULL);
lpName = MAKEINTRESOURCE(IDB_BITMAP2);
lpType = RT_BITMAP; hResInfo = FindResource(hInst, lpName, lpType); if (hResInfo == NULL)
return false; // Load the resource
hRes = LoadResource(hInst, hResInfo); if (hRes == NULL)
return false; // Lock the resource
lpRes = (char*)LockResource(hRes);
解决方案 »
- 窗口管理方法的切换有什么重要性?
- 子对话框 概念
- 我的ActiveX控件
- 创建一个窗口,用线条绘制一个图形,图形可以调整,要求窗口调整后图形一起成比例放大
- 请问vs2005中的这个"fatal error C1902: 程序数据库管理器不匹配;请检查安装"错误到底该怎么解决?
- 如何让一个函数比另一个函数晚30秒执行!
- 怎样定义自己写的类的类名?
- 高手请入 我有两个menu 和 相对应的两个toolbar 怎么做到 menu 换的时候toolbar也相对应换
- SHFileOperation奇诡的返回值
- MFC中用CFtpFileFind去遍历目录出现问题
- 如何创建定一个位图?
- 使用CFtpFileFind怎样判断网络中断?
可以!
因为这时候,获取到的缓冲区中包含了BMP的头部。
Open Binary Data是系统加了BITMAPFILEHEADER