1

我有一个黑白 bmp 文件。它是 8 BPP 图片,大小为 2048 * 2048。我创建了一个新的 WTL 项目,转到“资源”-> 导入位图-> 选择我的 bmp 文件-> 给它MYBITMAPIDid

这是代码:

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 用于此操作。

如何从资源中加载位图?

4

2 回答 2

3

WTL 为您提供帮助:

CBitmap Bitmap = AtlLoadBitmap(MYBITMAPID);
SIZE Extent;
BOOL bGetSizeResult = Bitmap.GetSize(Extent);
于 2011-12-15T07:13:26.587 回答
3

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

于 2011-12-15T07:48:33.767 回答