Kleines Problem mit eigener GUI [ERLEDIGT]
Übersicht

![]() |
nX^Betreff: Kleines Problem mit eigener GUI [ERLEDIGT] |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich bin dabei ein bisschen am rum basteln an einer kleinen eigenen InGame GUI. Das hier ist bestimmt mein dritter Anlauf und ich komme auf keinen grünen Zweig... Ich erstelle mir 2 Fenster und will dass wenn ich auf ein Fenster klicke das dies Aktiv ist und die darunterliegenden Fenster nicht aktiv werden können für spätere Drag and Drop Optionen... Der Code ist etwas kurz und die Fenster bestehen nur aus weißen Rechtecken... Wie gesagt mein dritter Anlauf...
Ich hoffe ich programmier das nicht zu schwer bzw denke zu kompliziert um die Fenster zu handeln... Code: [AUSKLAPPEN] SuperStrict
Graphics 1024,768,0,60 Type TGUI Field PosX:Short Field PosY:Short Field Caption:String Field Width:Short Field Height:Short Global List:TList Global Count:Int Global MX:Short Global MY:Short Global MH1:Short Method New() If List = Null Then List = New TList EndIf Count = Count + 1 List.AddFirst(Self) DebugLog "Neuer Eintrag in TGUI" End Method Method Destroy() List.Remove(Self) Count = Count - 1 End Method Function UpdateGUI() Local gl:TGUI MX = VirtualMouseX() MY = VirtualMouseY() MH1 = MouseHit(1) For gl = EachIn List gl.Draw() gl.Update() Next TWindow.DragWindow() End Function Method Draw() Abstract Method Update() Abstract End Type Type TWindow Extends TGUI Field Parent:TList Global ActiveWindow:TWindow Function Create:TWindow(Caption:String, PosX:Short, PosY:Short, Width:Short, Height:Short) Local cw:TWindow cw = New TWindow cw.Caption = Caption cw.PosX = PosX cw.PosY = PosY cw.Width = Width cw.Height = Height cw.Parent = New TList ActiveWindow = cw Return cw End Function Method Destroy() List.Remove(Self) End Method Method Draw() DrawRect Self.PosX, Self.PosY, Self.Width, Self.Height End Method Method Update() End Method Function DragWindow() Local dw:TWindow For dw = EachIn TGUI.List If ActiveWindow = dw Then If MouseIn(dw.PosX, dw.PosY, dw.Width, dw.Height) Then If MH1 Then DebugLog dw.Caption + " wurde geklickt. - Ich war Aktiv." ActiveWindow = dw EndIf Else If MouseIn(dw.PosX, dw.PosY, dw.Width, dw.Height) Then If Not MouseIn(ActiveWindow.PosX, ActiveWindow.PosY, ActiveWindow.Width, ActiveWindow.Height) Then If MH1 Then DebugLog dw.Caption + " wurde geklickt - Ich wurde aktiviert." ActiveWindow = dw EndIf EndIf EndIf Next End Function End Type Global t1:TWindow = TWindow.Create("Fenster 1",100,100,400,200) Global t2:TWindow = TWindow.Create("Fenster 2",300,200,400,200) Repeat Cls TGUI.UpdateGUI() Flip Until KeyHit(KEY_ESCAPE) Function MouseIn:Byte(PosX:Short, PosY:Short, Width:Short, Height:Short) If TGUI.MX > PosX Then If TGUI.MX < Width Then If TGUI.MY > PosY Then If TGUI.MY < Height Then Return 1 EndIf EndIf EndIf EndIf End Function EDIT: Meine anderen Versuche hatte ich auf die Listensortierung gestützt, sprich: Aktives Fenster nach an oberste stelle der Liste aber trotzdem hab ich da auch massive Probleme... EDIT2: Im Chat wurde mir geholfen. Ein einfaches Exit aus der Schleife wo ich dass aktive Fenster definiere reicht völlig aus ^^ |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group