Pregunta

Tengo una DLL de C ++ que incluye recursos de mapas de bits creados por Visual Studio.

Aunque puedo cargar la DLL en VB6 usando LoadLibrary, no puedo cargar los recursos de imagen usando LoadImage o usando LoadBitmap. Cuando intento obtener el error usando GetLastError (), no devuelve ningún error.

He intentado usar LoadImage y LoadBitmap en otro programa C ++ con la misma DLL y funcionan sin ningún problema.

¿Hay alguna otra forma de acceder a los mapas de bits de recursos en las DLL de C ++ usando VB6?

¿Fue útil?

Solución

Dado que está utilizando el ID numérico del mapa de bits como una cadena, debe agregar un " # " delante de ella:

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

En C ++ también puede usar la macro MAKEINTRESOURCE, que es simplemente una conversión a LPCTSTR:

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

Otros consejos

Tienes la idea correcta. Probablemente tienes la llamada equivocada. Tal vez podría mostrar un poco de código, ya que no puedo adivinar lo que está pasando.

En VB6:

Función de declaración privada LoadLibrary Lib '' kernel32 '' Alias ??" LoadLibraryA & " (ByVal lpLibFileName como cadena) Tan largo

Función de declaración privada LoadBitmap Lib " user32 " Alias ??" LoadBitmapA & " (ByVal hInstance As Long, ByVal lpBitmapName As String) Tan largo

DLLHandle = LoadLibrary (" Mydll.dll ")

myimage = LoadBitmap (DLLHandle, " 101 ")

viene con myimage como 0 aunque DLLHandle no es cero, sin embargo, en C ++:

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

funciona!

Muchas gracias

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top