繁体   English   中英

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

[英]Can't get resource bitmap sizes using winapi

我有一个黑白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用于此操作。

如何从资源加载位图?

WTL为此提供了帮助者:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM