Zugriff auf Bitmap-Ressourcen in einer C++-DLL aus VB6
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?
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