2008-12-05 4 views
1

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

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

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

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

ответ

1

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

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

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

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

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

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, как 0, даже если DLLHandle не равен нулю, однако, в C++:

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

работает!

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

Смежные вопросы