доступ к растровым ресурсам в C++ DLL из VB6
Вопрос
У меня есть 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));
работает!
Большое спасибо