1

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

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

我曾尝试在另一个具有相同 DLL 的 C++ 程序中使用 LoadImage 和 LoadBitmap,它们可以正常工作。

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

4

3 回答 3

1

由于您使用位图的数字 ID 作为字符串,因此必须在其前面添加一个“#”:

DLLHandle = LoadLibrary("Mydll.dll")
myimage = LoadBitmap(DLLHandle, "#101")  ' note the "#"

在 C++ 中,您还可以使用 MAKEINTRESOURCE 宏,它只是对 LPCTSTR 的强制转换:

imagehandle = LoadBitmap(DLLHandle, MAKEINTRESOURCE(101));
于 2008-12-05T21:30:14.250 回答
0

你有正确的想法。你可能打错电话了。也许您可以显示一些代码,因为我无法猜测您传递的是什么。

于 2008-12-05T20:56:51.603 回答
0

在 VB6 中:

Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long

Private Declare Function LoadBitmap Lib "user32" Alias "LoadBitmapA" (ByVal hInstance As Long, ByVal lpBitmapName As String) As Long

DLLHandle = LoadLibrary("Mydll.dll")

myimage = LoadBitmap(DLLHandle, "101")

附带即使myimage是非零的,但是,在 C++ 中:0DLLHandle

imagehandle = LoadBitmap(DLLHandle,LPCSTR(101));

作品!

非常感谢

于 2008-12-05T21:02:10.593 回答