Accéder aux ressources bitmap dans une DLL C ++ à partir de VB6
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?
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