我在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有效,而且是。
答案 0 :(得分:4)
将0
作为实例传递是错误的。 documentation说:
应用程序可以使用LoadBitmap函数访问预定义的位图。为此,应用程序必须将hInstance参数设置为NULL,并将lpBitmapName参数设置为以下值之一。
...... 表已删除 ......
您没有加载预定义的位图,因此需要传递包含该资源的实例句柄。
答案 1 :(得分:1)
事实证明,实例句柄是必需的,它在我将其更改为:
之后才起作用hBMP = LoadBitmap(GetModuleHandle(0), MAKEINTRESOURCE(IDB_BITMAP1));