dll에서 비트맵 불러오기 1813 (회전)

환경: win7 32비트, vs 2010, 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

좋은 웹페이지 즐겨찾기