问题1:
我写了个dll,里面有HBITMAP GetHandle(UNIT id)方法获得位图的句柄(插入一个位图,id为103)。在另一个工程用这个dll,调用GetHandle(103),返回的句柄为NULL,这是为什么?问题2:
如何把位图的二进制插入到dll中?
我写了个dll,里面有HBITMAP GetHandle(UNIT id)方法获得位图的句柄(插入一个位图,id为103)。在另一个工程用这个dll,调用GetHandle(103),返回的句柄为NULL,这是为什么?问题2:
如何把位图的二进制插入到dll中?
我创建的是MFC DLL,位图资源在DLL中,所以在程序这端只能传ID来获取句柄。你说的位图的IP是什么啊?位图插入的本地文件
我知道一种方法,把位图二进制存在dll文件中,通过ID调用dll可以获得句柄
但是这个方法dll就太大了,我想通过路径来获取图片,有这种方法吗?
LoadLibrary(_T("Direct3d_lib"));
HINSTANCE hInst = GetModuleHandle(_T("Direct3d_lib"));
HRSRC hRsrc=::FindResource(hInst,MAKEINTRESOURCE(uIDB),_T("PNG"));
if(hRsrc!=NULL)
{
HGLOBAL hImgData=::LoadResource(hInst,hRsrc);
if(hImgData==NULL)
{
::FreeResource(hImgData);
}
else
{
LPVOID lpVoid = ::LockResource(hImgData);
DWORD dwSize = ::SizeofResource(hInst, hRsrc); ......
::FreeResource(hImgData);
}
}
这是调用其他DLL等资源图片的一个例子,只能读出数据流
最主要是我有个程序是直接通过ID获取dll中的位图资源的句柄,但是我不知道他的dll是怎么写的,我写完就出现获取不到句柄的问题了
最主要是我有个程序是直接通过ID获取dll中的位图资源的句柄,但是我不知道他的dll是怎么写的,我写完就出现获取不到句柄的问题了不需要知道DLL是怎么写的,你只需要知道DLL的名字和位图资源的类型,ID就可以了
最主要是我有个程序是直接通过ID获取dll中的位图资源的句柄,但是我不知道他的dll是怎么写的,我写完就出现获取不到句柄的问题了不需要知道DLL是怎么写的,你只需要知道DLL的名字和位图资源的类型,ID就可以了
我明白你说的意思,那个dll也是别人写的,版本太老了准备废弃了,现在要自己写一个
AfxSetResourceHnadle 设置资源句柄为DLL中资源的句柄,
获取并使用位图
用完设置回来---恢复为保存的句柄 。