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

标签 c++ winapi bitmap wtl

我有一个黑白 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);

关于c++ - 无法使用 winapi 获取资源位图大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8516166/

相关文章:

C++ 在运行时修改资源

c# - 生成带有一些透明部分的图像

android - 如何构建 Android NDK 示例 : "bitmap-plasma"

c++ - 为什么 "void operator delete(void* ptr, std::size_t size) noexcept;"没有在 gcc 4.9.0 中定义?

c++ - VPATH 中的递归搜索?

c++ - 抽象类和静态方法

c++ - my_thread_global_end 线程没有退出,错误?

c# - Linux 上 Mono 中的 Windows kernel32 函数

c++ - 为什么当我调用 UpdateData(FALSE) 时我的对话框没有立即更新?

android - 从安卓图库中选择缩略图