如何用 IPicture 类 来显示图片呢?

alphagx alphagx 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我这个图片是一个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);
...全文
评论 8
收藏 已收藏
分享
返回顶部
alphagx
VC/MFC 16,550 成员 421,606 内容