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