Seite 1 von 1

ImageID() gibt negativen Wert zurück

Verfasst: 22.09.2018 17:30
von fabulouspaul
Hallo Gemeinde,

kurze Frage: wie ist der Datentype den die Funktion ImageID() zurück gibt?

Hintergrund: ich habe eine DLL gebastelt, die Image-Manipulationen durchführt. Ein Fehler in der Funktion wird als negativer Wert zurück gegeben, ansonsten soll das aufrufende Programm den Betriebsystem-Handle (ImageID()) des Images zurück bekommen.

Ich arbeite mit PB 5.62/32-Bit und habe nun schon diverse Datentypen probiert (.L, .I, .D) , aber ab und zu liefert ImageID() einfach einen negativen Wert zurück?!

Code: Alles auswählen

EnableExplicit

Enumeration 
  #img_nummer
EndEnumeration

Global i
Global img_handle.i

For i = 1 To 100
  If LoadImage(#img_nummer, "D:\test.bmp")
    img_handle = ImageID(#img_nummer)
    Debug img_handle
    FreeImage(#img_nummer)
  Else
    Debug "Fehler!"
  EndIf
Next

End
Wieso ist das so und was kann man dagegen machen?

Re: ImageID() gibt negativen Wert zurück

Verfasst: 22.09.2018 17:53
von ccode_new
fabulouspaul hat geschrieben:wie ist der Datentype den die Funktion ImageID() zurück gibt?
Ein Pointer-Typ (Denke Ich) , also 64 Bit fähig.

Als Speicherpointer sind diese negativen Werte normal.
Das einzige falsche Handle dürfte "0" (NULL) sein.

Beispiel (Benutze @ und bekomme die ID):

Code: Alles auswählen

Bild1 = LoadImage(#PB_Any, "D:\test.bmp")
Bild2 = LoadImage(#PB_Any, "D:\test2.bmp")
img_handle1 = ImageID(Bild1)
img_handle2 = ImageID(Bild2)
Debug @img_handle1
Debug @img_handle2