现在的位置: 首页 > 综合 > 正文

dll中加载位图返回1813

2013年12月02日 ⁄ 综合 ⁄ 共 921字 ⁄ 字号 评论关闭
//这是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;
	}

}

抱歉!评论已关闭.