环境: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