dll中加载位图返回1813 (转)

来源:互联网 发布:昆吾九鼎投资知乎 编辑:程序博客网 时间:2024/06/05 17:47

环境: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.csdn.net/dasgk/article/details/9080843

0 0
原创粉丝点击