尝试从资源加载位图返回 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的主要内容,如果未能解决你的问题,请参考以下文章