LoadBitmap()一段时间以来我一直在努力上班。它返回错误 1814 ERROR_RESOURCE_NAME_NOT_FOUND,。下面的代码,但到目前为止我已经尝试过:
(HBITMAP)LoadImage()代替LoadBitmap()MAKEINTRESOURCE('ICON.BMP')而不是资源标识符GetModuleHandle(NULL)而不是将实例句柄传递给函数MAKEINTRESOURCE并放在自己的错误检查后面只是为了确保问题不存在(它不存在)我还浏览了我能找到的关于此问题、其他网站、MSDN 文档的每个 SO 问题,并尝试应用我在那里找到的内容,但无济于事。我缺少什么?
在 Eclipse 上使用 MinGW
资源文件
#include "resource.h"
IDBMP_TREEICON BITMAP "icon.bmp"
Run Code Online (Sandbox Code Playgroud)
资源.h
#ifndef __RESOURCE_H_INCLUDED__
#define __RESOURCE_H_INCLUDED__
#define IDBMP_TREEICON 101
#endif
Run Code Online (Sandbox Code Playgroud)
主程序
#include <windows.h>
#include <stdio.h>
#include <commctrl.h>
#include <string>
#include "resource.h"
BOOL InitTreeViewImage(HINSTANCE hInstance, HWND hWnd){
HBITMAP hbmp = NULL;
HIMAGELIST hImgList;
if((hImgList = ImageList_Create(10, 10, FALSE, 1, 0)) == NULL){
MessageBox(NULL, "Failed to create ImageList!", "Eror", MB_OK);
return false;
}
LPCSTR theBitmap = NULL;
theBitmap = MAKEINTRESOURCE(IDBMP_TREEICON);
if(theBitmap == NULL){
//GetLastError(), output to console, messagebox - removed for brevity in this example
return false;
}
hbmp = LoadBitmap(hInstance, theBitmap);
if(hbmp == NULL){
//GetLastError(), output to console, messagebox - removed for brevity in this example
return false;
}
treeIcon = ImageList_Add(hImgList, hbmp, NULL);
if(treeIcon == 1){
MessageBox(NULL, "Failed to add icon to image list!", "Eror", MB_OK);
return false;
}
DeleteObject(hbmp);
TreeView_SetImageList(hWnd, hImgList, TVSIL_NORMAL);
return true;
}
Run Code Online (Sandbox Code Playgroud)
如果LoadBitmap失败并显示ERROR_RESOURCE_NAME_NOT_FOUND,则意味着您指定的模块没有具有RT_BITMAP您提供的资源 ID 类型的资源。绝对就是这么简单。
有多种可能的故障模式:
您提供了错误的模块。检查是否hInstance确实识别了您将资源链接到的正确模块。
您链接的资源类型错误或 ID 错误。鉴于您在问题中提出的内容,这似乎不太可能。
您未能将编译的资源文件传递给链接器,并且没有资源实际链接到可执行文件。
顺便说一句,是一个简单的宏,期望返回与 相关的任何内容MAKEINTRESOURCE是错误的。作为一条硬性规则,只有在文档明确说明这样做有意义时才使用。GetLastError()MAKEINTRESOURCEGetLastError()
| 归档时间: |
|
| 查看次数: |
2124 次 |
| 最近记录: |