Seite 1 von 2
2 Fenster gleichzeitig via CreateThread()
Verfasst: 26.10.2012 13:24
von Moxl
Hallo zusammen,
wie kann ich 2 Fenster gleichzeitig in einem Code erstellen und steuern?
ich hab das mal mit CreateThread() ausprobiert aber sobald ich das 2. Fenster vom 1. Fenster aus starte, kann ich zwar im 2. Fenster die Gadgets benutzen usw aber im 1. Fenster geht dann gar nichts mehr...
Hab für beide fenster jeweils eine Repeat schleife benutzt.
Vielleicht könntet ihr mir ja einen kleinen Code zusammen basteln damit ich es verstehe
Danke schonmal im Vorraus
__________________________________________________
Thread verschoben
Allgemein>Anfänger
26.10.2012
RSBasic
Re: 2 Fenster gleichzeitig via CreateThread()
Verfasst: 26.10.2012 13:29
von RSBasic
Sowas?
Code: Alles auswählen
EnableExplicit
Define EventID
Procedure Window1_Info()
If OpenWindow(1, 650, 100, 400, 300, "Window 2", #PB_Window_SystemMenu)
ButtonGadget(2, 10, 10, 100, 20, "Button 2", 0)
EndIf
EndProcedure
If OpenWindow(0, 100, 100, 500, 400, "Window 1", #PB_Window_SystemMenu)
ButtonGadget(1, 10, 10, 100, 20, "Button 1", 0)
Window1_Info()
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget
Select EventGadget()
Case 1
Debug "Button 1"
Case 2
Debug "Button 2"
EndSelect
EndIf
If EventID = #PB_Event_CloseWindow
End
EndIf
ForEver
EndIf
Re: 2 Fenster gleichzeitig via CreateThread()
Verfasst: 26.10.2012 13:30
von ts-soft
Du solltest beide Fenster ohne Threads erstellen und in einem Event-Loop (unterscheiden mit EventWindow()) abarbeiten!
Alles andere wird offiziell nicht unterstützt und funktioniert nur unter Windows.
Re: 2 Fenster gleichzeitig via CreateThread()
Verfasst: 26.10.2012 13:46
von Moxl
RSBasic:
Ja genau sowas

aber wenn ich bei dem code jetzt button 2 drücke kommt leider nichts
ts-soft:
hm so klappts natürlich auch und ist viel einfacher
danke dir
jetzt hab ich nur ein problem,
wenn ich jetzt beide fenster offen habe und dann nochmal den button drücke zum öffnen des 2. fenster dann schließt sich das 2. fenster und es wird ein neues 2. fenster aufgemacht
also das ein neues fenster aufgemacht wird hab ich ja erwartet aber warum schließt sich das alte 2. fenster?
Re: 2 Fenster gleichzeitig via CreateThread()
Verfasst: 26.10.2012 13:48
von RSBasic
@Moxl
Hast du zufällig, nachdem du auf den ersten Button gedrückt hast, das Debug-Fenster geschlossen?
Lass dieses Debug-Fenster einfach offen und drücke anschließend auf den zweiten Button.
Wie ts-soft bereits schrieb, musst du beim Event "#PB_Event_CloseWindow" mit EventWindow() arbeiten, damit du darauf reagieren kannst.
Re: 2 Fenster gleichzeitig via CreateThread()
Verfasst: 26.10.2012 13:51
von Moxl
jo stimmt dann gehts, aber nur doof das wenn man einmal das debug fenster geschlossen hat, es nichtmehr auf geht

Re: 2 Fenster gleichzeitig via CreateThread()
Verfasst: 26.10.2012 13:53
von RSBasic
Hier noch ein Beispielcode für EventWindow():
Code: Alles auswählen
EnableExplicit
Define EventID
Define EventWindowID
Procedure Window1_Info()
If OpenWindow(1, 650, 100, 400, 300, "Window 2", #PB_Window_SystemMenu)
ButtonGadget(2, 10, 10, 100, 20, "Button 2", 0)
EndIf
EndProcedure
If OpenWindow(0, 100, 100, 500, 400, "Window 1", #PB_Window_SystemMenu)
ButtonGadget(1, 10, 10, 100, 20, "Button 1", 0)
Window1_Info()
Repeat
EventID = WaitWindowEvent()
EventWindowID = EventWindow()
If EventID = #PB_Event_Gadget
Select EventGadget()
Case 1
Debug "Button 1"
Case 2
Debug "Button 2"
EndSelect
EndIf
If EventID = #PB_Event_CloseWindow
If EventWindowID = 0
End
Else
CloseWindow(EventWindowID)
EndIf
EndIf
ForEver
EndIf
Re: 2 Fenster gleichzeitig via CreateThread()
Verfasst: 26.10.2012 17:05
von Moxl
bräuchte noch ne antwort auf meine frage:
jetzt hab ich nur ein problem,
wenn ich jetzt beide fenster offen habe und dann nochmal den button drücke zum öffnen des 2. fenster dann schließt sich das 2. fenster und es wird ein neues 2. fenster aufgemacht

also das ein neues fenster aufgemacht wird hab ich ja erwartet aber warum schließt sich das alte 2. fenster?

Re: 2 Fenster gleichzeitig via CreateThread()
Verfasst: 26.10.2012 17:09
von RSBasic
Weil das zweite Fenster mit der Nummer "1" bereits existiert und ersetzt wird. Ist genauso, wenn du versuchst, zwei Buttons mit derselben Nummer zu erstellen. Zum Schluss siehst du nur den zweiten zuletzt erstellten Button.
Wenn du beliebige Fenster erstellen möchtest, kannst du #PB_Any statt einer statischen Fensternummer nutzen.
Re: 2 Fenster gleichzeitig via CreateThread()
Verfasst: 26.10.2012 17:47
von HeX0R
Moxl hat geschrieben:jo stimmt dann gehts, aber nur doof das wenn man einmal das debug fenster geschlossen hat, es nichtmehr auf geht

Das kannst du wieder öffnen, das wird nicht wirklich geschlossen, nur versteckt.
