从VB6访问C ++ DLL中的位图资源

时间:2008-12-05 20:38:10

标签: c++ dll vb6 bitmap resources

我有一个C ++ DLL,包括由Visual Studio创建的位图资源。

虽然我可以使用LoadLibrary在VB6中加载DLL,但我无法使用LoadImage或使用LoadBitmap加载图像资源。当我尝试使用GetLastError()来获取错误时,它不会返回任何错误。

我尝试在另一个使用相同DLL的C ++程序中使用LoadImage和LoadBitmap,它们可以毫无问题地工作。

有没有其他方法可以使用VB6访问C ++ DLL中的资源位图?

3 个答案:

答案 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));

作品!

非常感谢