Seite 1 von 1

Problem mit dem Schließen eines Fensters

Verfasst: 14.05.2009 17:14
von Mok
Tach zusammen!

Hab grade ein GUI-Programm mit Hilfeunterstützung. Das 'HelpWindow' hab ich als Sub-Routine eingefügt, da ich nicht in einer EventLoop eine zweite haben will.
Nun sieht der Code so aus:

Code: Alles auswählen

 [...]
Until Event = #PB_Event_CloseWindow

End
;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;-HelpWindow
HelpWindow:
  OpenWindow(4,1,1,340,280,"Window Title",#PB_Window_ScreenCentered | #PB_Window_SystemMenu,WindowID(#Window_1))
  
  Repeat
    
    SubEvent = WaitWindowEvent()
    
  Until SubEvent = #PB_Event_CloseWindow

Return
Dann muss ich 2x (wenn ich Pech habe öfters) auf das "Schließen"-Gadget klicken, warum 2x :?
Beim Hauptprogramm, das dieselbe Abbruchbedingung hat, gehts doch auch mit einem Mal... wusste garnicht, dass man eine einfache EventLoop mit nur einem Statement so falsch programmieren kann.

MfG, Mok

Verfasst: 14.05.2009 17:21
von Kaeru Gaman
löh?

äh...

machs gleich richtig.

http://www.purebasic.fr/english/viewtop ... 031#175031


ich halte es für müßig, dir dabei zu helfen, eine schlechte vorgehensweise zu einer zweifelhaften funktionalität zu bringen.

keine zwei eventloops!

keine Gosub:Return!

Verfasst: 14.05.2009 19:04
von ts-soft
Wenn beide Fenster nicht modal laufen, mußte die in einem Loop behandeln
und EventWindow() nutzen, um festzusellen welches Fenster geschlossen
wird. Ende normallerweise nur für das Hauptfenster, das andere nur
schliessen.

Bei einem modalem Fenster mußt Du die ParentID setzen, das Hauptfenster
disablen und kannste einen Extra-Loop verwenden.
Beim schließen nur das Fenster schließen und das Hauptfenster wieder
ent-disablen :mrgreen:

Verfasst: 14.05.2009 19:10
von X360 Andy

Code: Alles auswählen

If EventID = #PB_Event_CloseWindow
         If EventWindow()=#Window_0
          Quit = 1 ; Programm beenden
         ElseIf EventWindow()=#Window_1 
           ;Hide(#Window_1) ;Hiden
         ElseIf EventWindow()=#Window_2
           ;sonst was :D 
          CloseWindow(#Window_2)
        EndIf
      Until Quit=1 
//Code ergänzung zu dem Beitrag über mir

Verfasst: 14.05.2009 19:16
von Kaeru Gaman
war mein Beispiel, das ich verlinkt hab, nicht ausführlich genug? /:->

Verfasst: 14.05.2009 19:24
von X360 Andy
Hab auf den Link gar nicht draufgedrückt :lol:
Is natürlich passender ....

Verfasst: 14.05.2009 20:45
von Mok
Puuh, ist wirklich um vieles einfacher!

Verfasst: 15.05.2009 15:50
von Andesdaf
> Hab auf den Link gar nicht draufgedrückt
und einfach so nen ollen Code hingeklatscht :wink:

Gab's solch ein Beispiel nicht im CodeArchiv? Muss ich mal suchen.