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... :praise:

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 :bounce:


Danke schonmal im Vorraus :allright:

__________________________________________________
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 :oops:

ts-soft:
hm so klappts natürlich auch und ist viel einfacher :)
danke dir :mrgreen:

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 :cry:

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?

:mrgreen:

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 :cry:
Das kannst du wieder öffnen, das wird nicht wirklich geschlossen, nur versteckt.

Bild