无法使用winapi获取资源位图大小

时间:2011-12-15 06:53:17

标签: c++ winapi bitmap wtl

我有一个b / w bmp文件。这是8 BPP图片,大小是2048 * 2048.我创建了一个新的WTL项目,转到“资源” - >导入位图 - >选择我的bmp文件 - >给它MYBITMAPID id

以下是代码:

HBITMAP bm = ::LoadBitmap( _Module.GetModuleInstance(), MAKEINTRESOURCE(MYBITMAPID));
ATLASSERT(bm); // <--- Ok

SIZE sz;
BOOL res = ::GetBitmapDimensionEx(bm, &sz);
ATLASSERT(res); // <--- Ok

ATLASSERT(sz.cx && sz.cy); // <--- Not Ok

调试器说这两个大小都是0。

我试过

HBITMAP bm = (HBITMAP)::LoadImage( _Module.GetModuleInstance(), MAKEINTRESOURCE(MYBITMAPID), IMAGE_BITMAP, 0, 0, LR_SHARED | LR_MONOCHROME);

得到了相同的结果。

我可以使用CBitmap类获取大小,但我想仅使用winapi进行此操作。

如何从资源加载位图?

2 个答案:

答案 0 :(得分:3)

您需要使用GetObject()函数并将其传递给BITMAP结构以获取资源位图的大小。

答案 1 :(得分:2)

WTL为您提供帮助:

CBitmap Bitmap = AtlLoadBitmap(MYBITMAPID);
SIZE Extent;
BOOL bGetSizeResult = Bitmap.GetSize(Extent);