我有一个C ++ DLL,包括由Visual Studio创建的位图资源。
虽然我可以使用LoadLibrary在VB6中加载DLL,但我无法使用LoadImage或使用LoadBitmap加载图像资源。当我尝试使用GetLastError()来获取错误时,它不会返回任何错误。
我尝试在另一个使用相同DLL的C ++程序中使用LoadImage和LoadBitmap,它们可以毫无问题地工作。
有没有其他方法可以使用VB6访问C ++ DLL中的资源位图?
答案 0 :(得分:1)
由于您使用位图的数字ID作为字符串,您必须在其前面添加“#”:
DLLHandle = LoadLibrary("Mydll.dll")
myimage = LoadBitmap(DLLHandle, "#101") ' note the "#"
在C ++中你也可以使用MAKEINTRESOURCE宏,它只是对LPCTSTR的强制转换:
imagehandle = LoadBitmap(DLLHandle, MAKEINTRESOURCE(101));
答案 1 :(得分:0)
你有正确的想法。你可能有错误的电话。也许你可以展示一些代码,因为我无法猜测你传递的是什么。
答案 2 :(得分:0)
在VB6中:
私有声明函数LoadLibrary Lib“kernel32”别名“LoadLibraryA”(ByVal lpLibFileName As String)As Long
私有声明函数LoadBitmap Lib“user32”别名“LoadBitmapA”(ByVal hInstance As Long,ByVal lpBitmapName As String)As Long
DLLHandle = LoadLibrary(“Mydll.dll”)
myimage = LoadBitmap(DLLHandle,“101”)
即使DLLHandle非零,myimage为0,但是,在C ++中:
imagehandle = LoadBitmap(DLLHandle,LPCSTR(101));
作品!
非常感谢