尝试从Resources加载Bitmap返回NULL,错误代码为1813

时间:2017-01-14 09:12:02

标签: c++ winapi resources

我一直在尝试从我的资源中加载一个位图,以便在我的一个程序控件中将其设置为一个图标,现在很长一段时间没有成功。

到目前为止我做了什么:

首先,我进入了我的.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。

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

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

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

你需要在.rc文件中声明

BMP

但您使用的是未知资源类型#include <iostream> using namespace std; struct abc { int c : 4; char x : 1; int y : 1; } v; int main() { cout << sizeof v; // it prints 12 . why? }