Domanda

Ho una DLL C ++ che include risorse bitmap create da Visual Studio.

Sebbene sia possibile caricare la DLL in VB6 utilizzando LoadLibrary, non è possibile caricare le risorse di immagine utilizzando LoadImage o LoadBitmap. Quando provo a ottenere l'errore utilizzando GetLastError (), non restituisce alcun errore.

Ho provato a utilizzare LoadImage e LoadBitmap in un altro programma C ++ con la stessa DLL e funzionano senza problemi.

Esiste un altro modo per accedere alle bitmap delle risorse nelle DLL C ++ usando VB6?

È stato utile?

Soluzione

Dato che stai usando l'ID numerico della bitmap come stringa, devi aggiungere un " # " di fronte:

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

In C ++ puoi anche usare la macro MAKEINTRESOURCE, che è semplicemente un cast di LPCTSTR:

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

Altri suggerimenti

Hai l'idea giusta. Probabilmente hai sbagliato chiamata. Forse potresti mostrare un po 'di codice dato che non riesco a immaginare cosa stai passando.

In VB6:

Funzione di dichiarazione privata LoadLibrary Lib " kernel32 " Alias ??"LoadLibraryA" (ByVal lpLibFileName As String) As Long

Funzione di dichiarazione privata LoadBitmap Lib "quot32 utente32" Alias ??"LoadBitmapA" " (ByVal hInstance As Long, ByVal lpBitmapName As String) As Long

DLLHandle = LoadLibrary (" Mydll.dll ")

myimage = LoadBitmap (DLLHandle, " 101 ")

viene fornito con myimage come 0 anche se DLLHandle è diverso da zero, tuttavia, in C ++:

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

opere!

Grazie mille

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top