CloseWindow aus Threads funktioniert nicht. Dieses wird NICHT entfernt.
Änderungen an Windows, Gadget, etc (GUI Objekte) aus Threads funktionieren bei Windows nicht immer
und bei Linux und macOS sind diese nicht erlaubt. (Führt zu Absturz des Programmes)
Use PostEvent ...
Zwei Möglichkeiten
- Mit Eigenenden definieren Event Konstanten
- Mit vordefinierten Event Konstanten
So funktioniert es auch mit Linux oder macOS ...
Update
Code: Alles auswählen
;-TOP
Enumeration #PB_Event_FirstCustomValue
#MyEvent_CloseWindow_1
EndEnumeration
Procedure windows1(time)
Delay(time)
Debug "Close"
; Own Event
;PostEvent(#MyEvent_CloseWindow_1)
; Default Event
PostEvent(#PB_Event_CloseWindow, 1,0)
EndProcedure
OpenWindow(1, 0, 0, 500, 70, "windows1", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreateThread(@windows1(),5000)
If OpenWindow(0, 100, 200, 195, 260, "Test", #PB_Window_SystemMenu); | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Select EventWindow()
Case 0
Break
Case 1
SetActiveWindow(0)
CloseWindow(1)
EndSelect
Case #MyEvent_CloseWindow_1
CloseWindow(1)
EndSelect
ForEver
EndIf
P.S.
Ich habe eine Module bereitgestellt um Windows und Gadget aus Threads zu ändern.
Siehe Signatur ThreadToGUI