Das stimmt, so klappt das ja auch Danilo. Aber nur weil das Image noch bei Purebasic selbst verfügbar(Initialisiert) ist.
Nicht aber, wenn mein Image nach der übergabe an das ImageGadget freigegeben wurde oder verändert zb ResizeImage
das Imagegadget hat aber ein eigenes Image angelegt, sonst würde ja keine Id zurückkommen nach der Freigabe
Code: Alles auswählen
EnableExplicit
Import ""
PB_Image_Objects
PB_Object_EnumerateAll(*object,*callback,*d)
PB_Object_EnumerateStart(*object)
PB_Object_EnumerateNext(*object,*id.Integer)
PB_Object_EnumerateAbort(*object)
PB_Object_Count(*object)
EndImport
Procedure ImageFromImageID(ImageID)
Protected id, result = -1
PB_Object_EnumerateStart(PB_Image_Objects)
While PB_Object_EnumerateNext(PB_Image_Objects,@id)
If ImageID = ImageID(id)
result = id
PB_Object_EnumerateAbort(PB_Image_Objects)
Break
EndIf
Wend
ProcedureReturn result
EndProcedure
Enumeration
#My_Window
#My_ImageGadget
#My_Image=10
EndEnumeration
Define Event,Quit,TestImageID
CreateImage(#My_Image,200,300,32)
If OpenWindow(#My_Window, 0, 0, 855, 600, "Test Window Event ", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If ImageGadget(#My_ImageGadget,0,0,855,600,ImageID(#My_Image))
FreeImage(#My_Image)
CreateImage(#My_Image,400,300,32)
TestImageID=GetGadgetState(#My_ImageGadget)
Debug TestImageID
Debug ImageFromImageID(TestImageID)
EndIf
EndIf
Repeat
Event=WaitWindowEvent()
Select event
Case #PB_Event_CloseWindow
Quit=#True
Case #PB_Event_Gadget
Select EventGadget()
EndSelect
EndSelect
Until Quit=#True