CBitmap :: LoadBitmap()拒绝加载资源

我正在处理一个包含位图资源的DLL。 我通过Visual Studio中的资源视图导入了该位图。 该DLL还会导出一个具有试图加载位图的函数的类:

BOOL CMyExportedClass::Create(CWnd* pParentWnd /*= NULL*/) { if (!m_bitmap.LoadBitmap(IDB_BITMAP1)) return FALSE; // ... } 

从MFC应用程序我加载DLL。 在应用程序InitInstance()函数内部,我调用一个最终调用CMyExportedClass::Create()的DLL的导出函数。

但是, LoadBitmap()总是返回0 ,根据文档指出内存不足(不是这种情况)或资源不存在。

位图文件是我的DLL项目的一部分, IDB_BITMAP1.rc文件中以及在resource.h中定义

MyDLL.rc:

 IDB_BITMAP1 BITMAP "res\\mybitmap.bmp" 

RESOURCE.H:

 #define IDB_BITMAP1 1034 

我已经检查过,ID只定义了一次。 FWIW:在调用LoadBitmap() ,DLL InitiInstance()函数已经成功返回。

LoadBitmap()拒绝加载资源的原因是什么?我该如何解决这个问题?


编辑:
我可以成功加载资源,而不是m_bitmap.LoadBitmap(IDB_BITMAP1)我做到以下几点:

 HBITMAP hBitmap = (HBITMAP)LoadImage(hCurrentModule, MAKEINTRESOURCE(IDB_BITMAP1), IMAGE_BITMAP, 0, 0, 0); if(hBitmap) m_bitmap.Attach((HBITMAP)hBitmap); 

那么CBitmap::LoadBitmap()LoadImage()函数在这里有什么LoadImage()呢?

Solutions Collecting From Web of "CBitmap :: LoadBitmap()拒绝加载资源"

最可能的解释是该进程中的某个其他模块具有该ID的资源。 而搜索资源的MFC代码正在调用LoadBitmap模块的其他模块。

我的建议是使用LoadImage ,因此可以精确地控制搜索哪个模块的资源。

其实,没有搜索执行。 MFC根据文档从可执行文件,而不是DLL加载位图:

从应用程序的可执行文件加载由lpszResourceName指定的或由nIDResource中的ID号标识的位图资源。

编辑(完成答案):

而是像你所做的那样使用这个(或LoadImage() ):

 m_bitmap.Attach(::LoadBitmap(hCurrentmodulee, MAKEINTRESOURCE(IDB_BITMAP1)));