环境:win7 32位,vs2010,window appliction dll
//这是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;
}
}
转自:http://blog.youkuaiyun.com/dasgk/article/details/9080843
DLL加载位图问题解决

本文介绍了一个关于在Windows应用程序中从DLL加载位图的问题及其解决方案。通过调整加载函数中的参数,成功解决了错误代码1813的问题,并展示了如何在客户端正确调用DLL中的函数。
6125

被折叠的 条评论
为什么被折叠?



