доступ к растровым ресурсам в C ++ DLL из VB6 - PullRequest
1 голос
/ 05 декабря 2008

У меня есть C ++ DLL, включая растровые ресурсы, созданные Visual Studio.

Хотя я могу загрузить DLL в VB6 с помощью LoadLibrary, я не могу загрузить ресурсы изображения ни с помощью LoadImage, ни с помощью LoadBitmap. Когда я пытаюсь получить ошибку, используя GetLastError (), он не возвращает никаких ошибок.

Я пытался использовать LoadImage и LoadBitmap в другой программе C ++ с той же DLL, и они работают без проблем.

Есть ли другой способ получить доступ к растровым изображениям ресурсов в библиотеках C ++ с помощью VB6?

Ответы [ 3 ]

1 голос
/ 06 декабря 2008

Поскольку вы используете числовой идентификатор растрового изображения в качестве строки, вы должны добавить «#» перед ним:

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

В C ++ вы также можете использовать макрос MAKEINTRESOURCE, который просто приведен к LPCTSTR:

imagehandle = LoadBitmap(DLLHandle, MAKEINTRESOURCE(101));
0 голосов
/ 06 декабря 2008

В VB6:

Закрытое Объявление функции LoadLibrary Lib "kernel32" Псевдоним "LoadLibraryA" (ByVal lpLibFileName As String) как длинный

Закрытое Объявление функции LoadBitmap Lib "user32" Псевдоним "LoadBitmapA" (ByVal hInstance As Long, ByVal lpBitmapName As String) Как Long

DLLHandle = LoadLibrary ("Mydll.dll")

myimage = LoadBitmap (DLLHandle, "101")

поставляется с myimage как 0, хотя DLLHandle отличен от нуля, однако в C ++:

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

работает!

Большое спасибо

0 голосов
/ 05 декабря 2008

У вас правильная идея. Вы, вероятно, неправильно позвонили. Возможно, вы могли бы показать немного кода, поскольку я не могу угадать, что вы передаете.

...