如何用 IPicture 类 来显示图片呢?
我这个图片是一个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);
...全文
相关推荐
用 IPicture 显示图片
使用 Windows IPicture 接口显示图片的类。谁用谁知道!要记得评价哦!
CPicture_src-使用IPicture接口的类显示图片
CPicture_src-使用IPicture接口的类显示
ipicture图片播放程序
一个很好的COM组件IPICTURE应用程序。有兴趣的朋友可以参考参考。<br>工程名345
MFC使用IPicture显示多种格式的图像
代码实现了用IPicture显示多种格式的图片,可以在此基础上添加自己的图像处理功能。
ipicture接口方式实现图片显示
ipicture方式实现图片显示,测试了bmp格式、gif格式和jpg格式均成功


