Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

В VB6:

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

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

DLLHandle = LoadLibrary("Mydll.dll")

myimage = LoadBitmap(DLLHandle, "101")

поставляется с myimage как 0, даже если DLLHandle не равен нулю. Однако в C++:

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

работает!

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top