dll中加载位图返回1813
原创
©著作权归作者所有:来自51CTO博客作者wx6405b2c488d4e的原创作品,请联系作者获取转载授权,否则将追究法律责任
//这是MFC DLL中的自己写入的代码用于加载位图
HBITMAP _stdcall GetBitmapFromDll()
{
HBITMAP bit=LoadBitmap(GetModuleHandle(NULL),MAKEINTRESOURCE(IDB_BITMAP1));
if(bit!=NULL)
return bit;
else
{
int a=GetLastError();
char buf[100]={0};
sprintf(buf,"%d",a);
MessageBoxA(NULL,buf,0,0);
return NULL;
}
}
//这是客户端的调用代码,需要注意的是关于m_pic的picture控件的ID值,要自己转换一下,不能使用默认值
HINSTANCE hInst=::LoadLibraryW(L"D:\\project\\Skin\\Debug\\Skin.dll");
typedef HBITMAP (_stdcall *test)(void);
if(NULL==hInst)
{
MessageBox(L"加载动态链接库失败",0,0);
return;
}
test hehe=NULL;
hehe=(test)GetProcAddress(hInst,"GetBitmapFromDll");
if(NULL==hehe)
{
MessageBox(L"对不起,函数地址获取失败",0,0);
return ;
}
HBITMAP bit=hehe();
m_pic.SetBitmap(bit);
FreeLibrary(hInst);
这样的返回值是1813只需修改MFC DLL中的代码即可
HBITMAP _stdcall GetBitmapFromDll()
{
HBITMAP bit=LoadBitmap(GetModuleHandle(L"Skin"/*工程名即可*/),MAKEINTRESOURCE(IDB_BITMAP1));
if(bit!=NULL)
return bit;
else
{
int a=GetLastError();
char buf[100]={0};
sprintf(buf,"%d",a);
MessageBoxA(NULL,buf,0,0);
return NULL;
}
}