HBITMAP hBitmap = (HBITMAP)::LoadImage(NULL,MAKEINTRESOURCE(IDB_BITMAP1),
IMAGE_BITMAP,0,0,LR_LOADMAP3DCOLORS);
hBitmap返回值为空。。。
用GetLastError查看错误代码为1814:指定的映像文件不包含资源区域。
可是资源里明明有IDB_BITMAP1位图资源啊。
还有,这个代码在exe中执行没问题:
HBITMAP hBitmap = (HBITMAP)::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP1),IMAGE_BITMAP,0,0,LR_LOADMAP3DCOLORS);
或:
wndclass.hIcon = (HICON)LoadImage(g_hModule, MAKEINTRESOURCE(IDI_ICON_XRED), IMAGE_ICON, 0, 0 , LR_SHARED);
请高手指教。。
========================================================================================
HBITMAP hBitmap = (HBITMAP)::LoadImage(NULL,MAKEINTRESOURCE(IDB_BITMAP1),
IMAGE_BITMAP,0,0,LR_LOADMAP3DCOLORS);
关键就在第一个参数,如果为NULL,,则LoadImage会试图从加载此DLL的进程中找位图IDB_BITMAP1,
如找到则反返回有效的句柄,否则为NULL。试着下面的方法
//Define a global variable to save handle of dll
HMODULE g_hModule = NULL;
BOOL DllMain(HMODULE hModule,DWORD dwReason,LPVOID lpReserved)
{
case DLL_PROCESS_ATTACH:
g_hModule = hModule;
break;
case DLL_PROCESS_DETACH:
g_hModule = NULL;
break;
return TRUE;
}
VOID YourFunc()
{
ASSERT(g_hModule != NULL);
HBITMAP hBitmap = (HBITMAP)::LoadImage(g_hModule,MAKEINTRESOURCE (IDB_BITMAP1),IMAGE_BITMAP,0,0,LR_LOADMAP3DCOLORS);
//Other.......
}