Problem mit dem Schließen eines Fensters

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Problem mit dem Schließen eines Fensters

Beitrag 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
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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!
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag 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
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

war mein Beispiel, das ich verlinkt hab, nicht ausführlich genug? /:->
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag von X360 Andy »

Hab auf den Link gar nicht draufgedrückt :lol:
Is natürlich passender ....
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Beitrag von Mok »

Puuh, ist wirklich um vieles einfacher!
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag 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.
Win11 x64 | PB 6.20
Antworten