#DEFINE Quit Inkey=Chr(255,107)
Dim Shared As Integer mx,my,mb,anz_win
Type WizWindow
As Integer id
As String title
' As Integer active 'brauchste nicht
As Integer x
As Integer y
As Integer w
As Integer h
End Type
Dim Shared As WizWindow win()
Dim Shared As Uinteger winZ(50000)
Declare Sub InitGUI()
Declare Sub DrawGadgets()
Declare Sub DrawWindow(id As Integer)
Declare Sub WinAdd()
Screenres 640,480,32
InitGUI()
Dim Shared anz_alloc As Uinteger
Sub WinAdd()
anz_win+=1
If anz_win > anz_alloc Then
anz_alloc += 25
Redim Preserve win(anz_alloc) As WizWindow
Redim Preserve winZ(anz_alloc) As Uinteger
End If
With win(anz_win)
.id=1
.title="Testwindow-" & Str(anz_win)
' .active=0 'brauchste nicht -> siehe: winActive
.x=anz_win * 25
.y=anz_win * 25
.w=300
.h=200
End With
winZ(anz_win) = anz_win
End Sub
Do
Getmouse mx,my,,mb
'Das macht man nicht im ""Draw!!!
For i As Integer= anz_win To 1 Step -1 'rückwerts durchlaufen
'hier mit winZ prüfen
If (mx>win(winZ(i)).x And mx<win(winZ(i)).w+win(winZ(i)).x) And (my>win(winZ(i)).y And my<win(winZ(i)).h+win(winZ(i)).y) And mb=1 Then
'in der "mit "focus variante müssen wir den Z-Speicher umsortieren.
'hierfür den eintrag aller folgenden fenster um 1 nach vorne verschieben, und am ende das aktuelle wieder eintragen
Dim TWinID As Uinteger = winZ(i)
For X As Uinteger = i To anz_win -1
winZ(x) = winZ(x + 1)
Next
winZ(anz_win) = TWinID
Exit For 'fertig. rest muss man nicht durchlaufen
End If
Next
Sleep 10,1
Screenlock
Cls
Line (0,0)-(640,480),&h376ea5,BF
DrawGadgets()
Screenunlock
Loop Until Quit
End
Sub InitGUI()
For X As Uinteger = 1 To 10
WinAdd()
Next
End Sub
Sub DrawGadgets()
For i As Integer=1 To anz_win
If win(winZ(i)).id=1 Then DrawWindow(winZ(i))
Next
End Sub
Sub DrawWindow(id As Integer)
If id=winZ(anz_win) Then 'hier auf active prüfen (unterschied zu "ohne "focus ist, das das aktive fenster IMMER das letzte in der ZListe is, da es ganz oben ist)
Line (win(id).x,win(id).y)-(win(id).w+win(id).x,win(id).h+win(id).y),&hFFFFFF,BF
Line (win(id).x,win(id).y)-(win(id).w+win(id).x,win(id).h+win(id).y),&h000000,B
Else
Line (win(id).x,win(id).y)-(win(id).w+win(id).x,win(id).h+win(id).y),&hc0c0c0,BF
Line (win(id).x,win(id).y)-(win(id).w+win(id).x,win(id).h+win(id).y),&h000000,B
End If
'is jetzt in der hauptschleife
End Sub