Home

Add

Edit

With Linenumbers

Code in Textfield

Download

#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)

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
          '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