Seite 1 von 1

IsWindow() defekt?

Verfasst: 02.02.2015 01:22
von stevie1401
Im folgenden Beispiel hatte ich erwartet, dass die Variable Win2 nach einem Closewindow(win2) wieder auf 0 ist und ich mit IsWindow(win2) herausfinden kann, ob das Fenster existiert.
Dem ist leider nicht so.
Getestet mit Linux 5.24/31 x86,64 und Windows 5.24/31 x86,64

Code: Alles auswählen


EnableExplicit

Define win1,win2,quit,event


;: Mal schnell ein Fenster gezimmert....
win1=OpenWindow(#PB_Any, 0, 0, 640, 480, "Test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)

;: noch ein "Button" drauf...
ButtonGadget(1, 20, 20, 200, 25, "Fenster 2 öffnen")

;: und nun die Abfragerei
Repeat
  
  Event = WaitWindowEvent() ; <- Hier das WindowEvent einer Variablen zugewiesen
  
  Select Event ; > <- Hier wird dann sozusagen "verzweigt"
      
    Case #PB_Event_CloseWindow ; Hier wird ein Fenster Schliess Button gedrückt
      Quit = 1 ; Hier um die Repeat Schleife zu verlassen....

    Case #PB_Event_Gadget ; Hier kam ein "Event" von einem Gadget
      
      If EventGadget() = 1 ; Wenn es unser Button war dann Text raus
        If IsWindow(win2)=0
          win2=OpenWindow(#PB_Any, 0, 0, 640, 480, "Fenster 2  (ID:"+Str(win2)+")", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
          SetGadgetText(1,"Fenster2 schliessen")
        Else
          CloseWindow(win2)  ;hier sollte win2 wieder 0 werden
          SetGadgetText(1,"Fenster2 erneut öffnen (Win2 ID: "+Str(win2)+")")
        EndIf
        
      EndIf
      
  EndSelect
  
Until Quit > 0

Re: IsWindow() defekt?

Verfasst: 02.02.2015 01:48
von Kiffi
Dein Code funktioniert wie erwartet.

win2 wird durch Dein CloseWindow(win2) natürlich nicht verändert.

Und IsWindow(win2) liefert nach dem Schliessen des Fensters auch das richtige Ergebnis (=0).

Grüße ... Peter

Re: IsWindow() defekt?

Verfasst: 02.02.2015 09:15
von stevie1401
Stimmt, da hab ich mich verschrieben, win2 bleibt win2, auch wenn das Fenster geschlossen ist.
Allerdings kann ich das NICHT bestätigen, was du schreibst.
Nachdem ich win2 mit Closewindow(win2) geschlossen habe, gibt mir ein IsWindow(win2) die alte ID von Fenster 2, NICHT 0, wie es eigentlich sein sollte.

Unter welchem Betriebssystem und welchem PB funktioniert es denn?

Re: IsWindow() defekt?

Verfasst: 02.02.2015 09:21
von NicTheQuick
Unter Ubuntu Gnome 14.04 x64 funktioniert alles korrekt mit PB V 5.30 x64.

Re: IsWindow() defekt?

Verfasst: 02.02.2015 09:25
von Kiffi
stevie1401 hat geschrieben:Unter welchem Betriebssystem und welchem PB funktioniert es denn?
Windows 7 prof. / PB5.31 (32 und 64bit)

Grüße ... Peter

Re: IsWindow() defekt?

Verfasst: 02.02.2015 09:52
von Bisonte
stevie1401 hat geschrieben:Unter welchem Betriebssystem und welchem PB funktioniert es denn?
Unter jedem. IsWindow(win2) ist gleich 0, wenn das Fenster aktuell nicht vorhanden ist.
Es spielt keine Rolle was win2 für einen Wert hat. Solange die Variable KEIN GÜLTIGES Fenster
repräsentiert, gibt die Funktion IsWindow() ein #False (oder 0) zurück. Die Variable wird dadurch
nicht geändert und hat nach wie vor den gleichen Wert !

Also Kiffi's Aussage mit anderen (oder doch nicht anderen) Worten.... ;)

Re: IsWindow() defekt?

Verfasst: 02.02.2015 14:10
von stevie1401
Hm, wenn es bei euch allen funktioniert und bei mir nicht, kann es eigentlich nur ein Hardwarefehler bei mir sein.
Fehlende Pakete unter Linux schließe ich aus, da es bei mir ja auch nicht unter Windows geht.
Ich habe mir nun so beholfen, dass ich bei jedem CloseWindow(WinX) die dazugehörende Variable WinX nulle und dann nicht mehr nach IsWindow() abfrage, sondern, ob die Variable WinX NULL ist. Das wiederum funktioniert wunderbar.
Danke euch für eure Hilfe. :allright:

Re: IsWindow() defekt?

Verfasst: 02.02.2015 14:20
von NicTheQuick
Ich kann das immer noch nicht so richtig nachvollziehen. 'IsWindow()' ist ein so uralter Befehl. Das wäre komisch, wenn es da einen Bug gäbe in irgendeiner Konfiguration. Das hat auch nichts mit Hardware zu tun. Das ist reine Softwaresache. Verhalten sich Befehle wie 'IsGadget()' oder 'IsImage()', usw. auch so komisch bei dir?

Re: IsWindow() defekt?

Verfasst: 02.02.2015 18:13
von stevie1401
Verhalten sich Befehle wie 'IsGadget()' oder 'IsImage()', usw. auch so komisch bei dir?
Ja, manchmal zumindest, Mal werden die Abragen korrekt gemacht, manchmal werden diese Abragen schlicht ignoriert.
Und ich wunderte mich, warum meine PB-Clients alle so wackelig laufen. Nun weiß ich es.
Die bei mir compilierte Software läuft übrigens auch bei anderen auf deren Rechnern dann "wackelig".
Nachvollziehbar ist das alles für mich nicht.
Da ich jetzt die Variablen NULLE, und die Variablen abfrage, geht es jetzt aber alles wie geschmiert.