#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(50000)
Dim Shared As Uinteger winZ(50000)
Dim Shared As Uinteger winActive 'brauchste schon (spart auch speicher)
Declare Sub InitGUI()
Declare Sub DrawGadgets()
Declare Sub DrawWindow(id As Integer)
Declare Sub WinAdd()
Screenres 640,480,32
InitGUI()
Sub WinAdd()
anz_win+=1
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
winActive = winz(i) 'aktives fenster einfach hier abspeichern fenster-id steht in der z-liste
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=winActive Then 'hier auf active prüfen
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