Question

J'ai une DLL C ++ comprenant des ressources bitmap créées par Visual Studio.

Bien que je puisse charger la DLL dans VB6 à l'aide de LoadLibrary, je ne peux pas charger les ressources d'image en utilisant LoadImage ou en utilisant LoadBitmap. Lorsque j'essaie d'obtenir l'erreur à l'aide de GetLastError (), il ne renvoie aucune erreur.

J'ai essayé d'utiliser LoadImage et LoadBitmap dans un autre programme C ++ avec la même DLL et ils fonctionnent sans aucun problème.

Existe-t-il un autre moyen d'accéder aux bitmaps des ressources dans les DLL C ++ à l'aide de VB6?

Était-ce utile?

La solution

Puisque vous utilisez l'ID numérique du bitmap en tant que chaîne, vous devez ajouter un " # " devant lui:

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

En C ++, vous pouvez également utiliser la macro MAKEINTRESOURCE, qui est simplement un transtypage vers LPCTSTR:

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

Autres conseils

Vous avez la bonne idée. Vous avez probablement l'appel mal compris. Peut-être pourriez-vous montrer un peu de code car je ne peux pas deviner ce que vous passez.

Dans VB6:

Fonction de déclaration privée LoadLibrary Lib " kernel32 " Alias ??" LoadLibraryA " (ByVal lpLibFileName As String) As Long

Fonction de déclaration privée LoadBitmap Lib " user32 " Alias ??" LoadBitmapA " (ByVal hInstance As Long, ByVal lpBitmapName As String) As Long

DLLHandle = LoadLibrary ("Mydll.dll")

myimage = LoadBitmap (DLLHandle, "101")

est fourni avec myimage à 0 même si DLLHandle est différent de zéro. Cependant, en C ++:

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

fonctionne!

Merci beaucoup

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top