Frage

Ich habe eine C++-DLL mit Bitmap-Ressourcen, die von Visual Studio erstellt wurde.

Obwohl ich die DLL in VB6 mit LoadLibrary laden kann, kann ich die Bildressourcen weder mit LoadImage noch mit LoadBitmap laden.Wenn ich versuche, den Fehler mit GetLastError() abzurufen, werden keine Fehler zurückgegeben.

Ich habe versucht, LoadImage und LoadBitmap in einem anderen C++-Programm mit derselben DLL zu verwenden, und sie funktionieren ohne Probleme.

Gibt es eine andere Möglichkeit, mit VB6 auf die Ressourcenbitmaps in C++-DLLs zuzugreifen?

War es hilfreich?

Lösung

Da Sie die numerische ID der Bitmap als Zeichenkette verwenden, haben Sie einen „#“ vor, um es hinzuzufügen:

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

In C ++ Sie auch die MAKEINTRESOURCE Makro verwenden könnten, die einfach eine Umwandlung in LPCTSTR:

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

Andere Tipps

Sie haben die richtige Idee. Sie haben wahrscheinlich den Anruf falsch. Vielleicht könnten Sie ein Stück Code zeigen, wie ich nicht erraten, was Sie vorbei.

In VB6:

Private Deklarationsfunktion LoadLibrary Lib „kernel32“ Alias ​​„LoadLibraryA“ (ByVal lpLibFileName As String) As Long

Private Deklarationsfunktion LoadBitmap Lib „user32“ Alias ​​„LoadBitmapA“ (ByVal hInstance As Long, ByVal lpBitmapName As String) As Long

DLLHandle = LoadLibrary("Mydll.dll")

myimage = LoadBitmap(DLLHandle, "101")

kommt mit myimage als 0, obwohl DLLHandle ungleich Null ist, jedoch in C++:

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

funktioniert!

Vielen Dank

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top