尝试从资源加载位图返回 NULL,错误代码为 1813

Posted

技术标签:

【中文标题】尝试从资源加载位图返回 NULL,错误代码为 1813【英文标题】:Trying to load a Bitmap from Resources returns NULL with an error code of 1813 【发布时间】:2017-01-14 09:12:02 【问题描述】:

我一直在尝试从我的资源中加载位图,以便在我的一个程序控件中将其设置为图标,但完全没有成功。

到目前为止我做了什么:

首先,我进入了我的 .rc 文件的代码,并在相应的 BMP 部分中添加了像这样的所有位图。请注意,所有 .bmp 文件都保存为 256 色位图:

IDB_01d                 BMP                     "<path>"

之后,我进入我的 Resource.h 文件并为每个位图插入一个定义,如下所示:

#define IDB_01d                         2000

添加资源后,这是我迄今为止在代码中尝试过的:

HBITMAP hbmp = LoadBitmap(m_hInstance, MAKEINTRESOURCE(IDB_01d));
DWORD lastError = GetLastError();
m_weatherIcon.SetIcon(hbmp);

请注意,m_hInstance 是我从 _tWinMain 方法中获得的 HINSTANCE。

但是,这不起作用。目前的问题是,hbmp 为 NULL,因为 LoadBitmap 返回 NULL 值。

我添加了一个调用来获取最后一个错误,我得到的错误代码一直是 1813。我已经做了一些研究,似乎 HINSTANCE 可能是问题所在,但我不知道究竟是什么。

有什么建议吗?

【问题讨论】:

【参考方案1】:

你需要在 .rc 文件中声明

IDB_01d  BITMAP "<path>"

但是你使用了未知的资源类型BMP

【讨论】:

哇,我从没想过这是问题所在!不敢相信我错过了

以上是关于尝试从资源加载位图返回 NULL,错误代码为 1813的主要内容,如果未能解决你的问题,请参考以下文章

读取位图文件返回 null

位图始终在相机意图中返回null

无法从资源加载位图

从矢量图中获取位图

Android:临时位图的“尝试使用回收的位图”错误

如何从资源中设置位图