MaxGUI ... Viele Window's

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

Mathias-Kwiatkowski

Betreff: MaxGUI ... Viele Window's

BeitragMo, Feb 26, 2007 4:13
Antworten mit Zitat
Benutzer-Profile anzeigen
hi wie bekomme ich raus welches fenster aktiv ist?

hier der codeCode: [AUSKLAPPEN]
Global GUIWindowList:TList = New TList
Global GUIWindow:TGUIWindow
Type TGUIWindow
   Field window:TGadget
   Field htmlview
   Field url:String
      
   Function Create(url:String)
      GUIWindow:TGUIWindow= New TGUIWindow
      GUIWindow.url= url
      GUIWindow.window:TGadget = CreateWindow("HTML",0,0,808,634,Desktop(),3)
      GUIWindow.htmlview = CreateHTMLView(0,0,800,600,GUIWindow.window,0)
      HtmlViewGo GUIWindow.htmlview,GUIWindow.url
      
      GUIWindowList.Addlast GUIWindow
   End Function
EndType


 TGUIWindow.Create("www.web.de")
  TGUIWindow.Create("www.web.de")
    TGUIWindow.Create("www.web.de")
Repeat
   event=WaitEvent()
   For GUIWindow:TGUIWindow = EachIn GUIWindowList
      If event=EVENT_WINDOWCLOSE Then FreeGadget EVENT_WINDOWACTIVATE FlushMouse()   
   Next
Forever


also sobald man ein fenster schliesst soll diese auch weggehen Very Happy irgendwie bin ich zu dumm, habe auch schon mit ActivateWindow gespielt aber das ist ja nur dazu da um ein fenster wieder zu aktivieren.

ich weiss einfach keine möglichkeit mehr.

FOODy

BeitragMo, Feb 26, 2007 10:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Repeat
   WaitEvent()
   Select EventID()
      Case EVENT_WINDOWCLOSE
         FreeGadget(TGadget(EventSource()))
   EndSelect
Forever


Guck dir die Event-Module an. (BRL.EventQueue, BRL.Event)


Gruß,
FOODy


PS:
FlushMouse() ist hier für den Arsch.
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB

Mathias-Kwiatkowski

BeitragMo, Feb 26, 2007 10:32
Antworten mit Zitat
Benutzer-Profile anzeigen
jo die hatte ich schon mal gesehen^^ aber wie bekomme ich den namen heraus vom derzeit geöffnetem fenster? oder besser vom aktiven?

FOODy

BeitragMo, Feb 26, 2007 11:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du dir die Event Module wirklich angeschaut hättest, müsstest du jetzt nicht fragen.

Ich werd dir jetzt keinen Code geben, sondern nur ein Tipp.
Schau dir mal die Konstante EVENT_WINDOWACTIVATE an.
Wofür sie steht, sollte in BRL.Event stehen.

Wie du von einem Gadget den Text bekommst solltest du im BRL.MaxGUI Module finden.
Außerdem gibt es da noch eine Funktion die das Aktivierte Gadget(!!! nicht unbedingt ein Window) zurückgibt.
Auch diese Funktion findest du unter BRL.MaxGUI


Gruß,
FOODy
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB

Mathias-Kwiatkowski

BeitragMo, Feb 26, 2007 12:29
Antworten mit Zitat
Benutzer-Profile anzeigen
EVENT_WINDOWACTIVATE <- das es damit geht habe ich mir gedacht und das ich den befehl GadgetItemText nutzen muss so denke ich mal ist das auch korrekt allerdings wie anwenden?

weil TGadget will er nicht in GadgetItemText stehen haben.

Code: [AUSKLAPPEN]
Case EVENT_WINDOWACTIVATE
      Print GadgetItemText ????...????

FOODy

BeitragMo, Feb 26, 2007 12:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Guck mal.
Bei einem TEvent gibt es ein Field namens source vom Type Object.
Man kann vom aktuellen Event auf den Source mit der Funktion EventSource() zugreifen.
MaxGUI speichert in dem Field source das betroffene Gadget.
Das heißt: TGadget(EventSource()) = Das Betroffene Gadget. (Von Object zu TGadget gecastet)

Also müsste es so aussehen:
Code: [AUSKLAPPEN]
Print GadgetItemText(TGadget(EventSource()))


Dies würde aber normalerweise nicht gehen.
Da beim Erstellen eines Fensters die Source irgendwie nicht mitgegeben wird.
Also brauchst du noch ein If davor:
Code: [AUSKLAPPEN]
If EventSource() Print GadgetItemText(TGadget(EventSource()))


So dürfte es eigentlich gehen.


Gruß,
FOODy
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB

Mathias-Kwiatkowski

BeitragMo, Feb 26, 2007 12:55
Antworten mit Zitat
Benutzer-Profile anzeigen
joa dann war ich genauso klug Very Happy

Code: [AUSKLAPPEN]
Print GadgetItemText(TGadget(EventSource()))

dieser geht naja nun wirklich nicht und
Code: [AUSKLAPPEN]
If EventSource() Print GadgetItemText(TGadget(EventSource()))

ebenfalls nicht, ich bastel mit den paar befehlen die ganze nacht. wenn ich es nicht durch wissen herausgefunden hätte müsste ich's peer zufall haben Very Happy xD aber bislang war alles ein 0 erfolg...

und ich sags mal so viele befehle sinds nun wirklich nicht die ich benutzen könnte. jedenfalls nicht um den namen des fensters herauszufinden oder?

FOODy

BeitragMo, Feb 26, 2007 13:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Framework BRL.Win32MaxGUI
Import BRL.EventQueue

CreateWindow("Fenster 1",320,320,320,320)
CreateWindow("Fenster 2",420,320,320,320)
CreateWindow("Fenster 3",320,420,320,320)

Global LastWindow:TGadget=ActiveGadget()

Print LastWindow.GetText()
Repeat
   WaitEvent()
   Select EventID()
      Case EVENT_WINDOWCLOSE
         End
      Case EVENT_WINDOWACTIVATE
         If EventSource()
            LastWindow=TGadget(EventSource())
            Print LastWindow.GetText()
         Endif
   EndSelect
Forever


Die Variable LastWindow speichert das letzte fokusierte Fenster.
ActiveGadget() gibt das aktuell Fokusierte Gadget zurück. (Hier ist es das zuletzt erstellte Fenster)

EVENT_WINDOWACTIVE wird erzeugt wenn ein Fenster fokusiert wird.


Gruß,
FOODy
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB

Mathias-Kwiatkowski

BeitragMo, Feb 26, 2007 13:06
Antworten mit Zitat
Benutzer-Profile anzeigen
oha lol... darauf wäre ich nicht gekommen... THX

des ist den doch etwas anders als B+ und b+ konnte ich echt supi... naja aber gottsei dank der grössteil ist gleich geblieben!

trotzdem danke nochmal

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group