LoadBitmap失败ERROR_RESOURCE_NAME_NOT_FOUND

时间:2014-06-27 07:10:29

标签: c++ winapi

我在resource.h和.rc文件中定义了一个位图:

#define IDB_BITMAP1                     130
IDB_BITMAP1             BITMAP  DISCARDABLE     "bitmap1.bmp"

当我尝试用

加载它时
hBMP = LoadBitmap(0, MAKEINTRESOURCE(IDB_BITMAP1));

失败,GetLastError()返回1814(或十六进制的0x716),代表ERROR_RESOURCE_NAME_NOT_FOUND。但位图就在那里。是因为hInstance吗?我认为如果资源在.exe中,则0有效,而且是。

2 个答案:

答案 0 :(得分:4)

0作为实例传递是错误的。 documentation说:

  

应用程序可以使用LoadBitmap函数访问预定义的位图。为此,应用程序必须将hInstance参数设置为NULL,并将lpBitmapName参数设置为以下值之一。

     

...... 表已删除 ......

您没有加载预定义的位图,因此需要传递包含该资源的实例句柄。

答案 1 :(得分:1)

事实证明,实例句柄是必需的,它在我将其更改为:

之后才起作用
hBMP = LoadBitmap(GetModuleHandle(0), MAKEINTRESOURCE(IDB_BITMAP1));