Home

Add

Edit

Without Linenumbers

Code in Textfield

Download

  1. #DEFINE Quit Inkey=Chr(255,107)
    
  2. Dim Shared As Integer mx,my,mb,anz_win
    
  3. 
    
  4. Type WizWindow
    
  5.    As Integer id
    
  6.    As String title
    
  7. '   As Integer active    'brauchste nicht
    
  8.    As Integer x
    
  9.    As Integer y
    
  10.    As Integer w
    
  11.    As Integer h
    
  12. End Type
    
  13. 
    
  14. Dim Shared As WizWindow win()
    
  15. Dim Shared As Uinteger winZ(50000)
    
  16. 
    
  17. Declare Sub InitGUI()
    
  18. Declare Sub DrawGadgets()
    
  19. Declare Sub DrawWindow(id As Integer)
    
  20. Declare Sub WinAdd()
    
  21. 
    
  22. Screenres 640,480,32
    
  23. InitGUI()
    
  24. 
    
  25. Dim Shared anz_alloc As Uinteger
    
  26. Sub WinAdd()
    
  27.     anz_win+=1
    
  28.     If anz_win > anz_alloc Then
    
  29.         anz_alloc += 25
    
  30.         Redim Preserve win(anz_alloc) As WizWindow
    
  31.         Redim Preserve winZ(anz_alloc) As Uinteger
    
  32.     End If
    
  33.     With win(anz_win)
    
  34.     .id=1
    
  35.     .title="Testwindow-" & Str(anz_win)
    
  36. '   .active=0               'brauchste nicht -> siehe: winActive
    
  37.     .x=anz_win * 25
    
  38.     .y=anz_win * 25
    
  39.     .w=300
    
  40.     .h=200
    
  41.     End With
    
  42.     winZ(anz_win) = anz_win
    
  43. End Sub
    
  44. 
    
  45. Do
    
  46.    Getmouse mx,my,,mb
    
  47.    
    
  48.    'Das macht man nicht im ""Draw!!!
    
  49.    For i As Integer= anz_win To 1 Step -1    'rückwerts durchlaufen
    
  50.       'hier mit winZ prüfen
    
  51.       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
    
  52.           'in der "mit "focus variante müssen wir den Z-Speicher umsortieren.
    
  53.           'hierfür den eintrag aller folgenden fenster um 1 nach vorne verschieben, und am ende das aktuelle wieder eintragen
    
  54.           Dim TWinID As Uinteger = winZ(i)
    
  55.           For X As Uinteger = i To anz_win -1
    
  56.              winZ(x) = winZ(x + 1)
    
  57.           Next
    
  58.           winZ(anz_win) = TWinID
    
  59.          Exit For 'fertig. rest muss man nicht durchlaufen
    
  60.       End If
    
  61.    Next
    
  62.    
    
  63.    Sleep 10,1
    
  64.    Screenlock
    
  65.       Cls
    
  66.       Line (0,0)-(640,480),&h376ea5,BF
    
  67.       DrawGadgets()
    
  68.    Screenunlock
    
  69. Loop Until Quit
    
  70. End
    
  71. 
    
  72. 
    
  73. Sub InitGUI()
    
  74.     For X As Uinteger = 1 To 10
    
  75.         WinAdd()
    
  76.     Next
    
  77. End Sub
    
  78. 
    
  79. 
    
  80. Sub DrawGadgets()
    
  81.    For i As Integer=1 To anz_win
    
  82.       If win(winZ(i)).id=1 Then DrawWindow(winZ(i))
    
  83.    Next
    
  84. End Sub
    
  85. 
    
  86. Sub DrawWindow(id As Integer)
    
  87.    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)
    
  88.       Line (win(id).x,win(id).y)-(win(id).w+win(id).x,win(id).h+win(id).y),&hFFFFFF,BF
    
  89.       Line (win(id).x,win(id).y)-(win(id).w+win(id).x,win(id).h+win(id).y),&h000000,B
    
  90.    Else
    
  91.       Line (win(id).x,win(id).y)-(win(id).w+win(id).x,win(id).h+win(id).y),&hc0c0c0,BF
    
  92.       Line (win(id).x,win(id).y)-(win(id).w+win(id).x,win(id).h+win(id).y),&h000000,B
    
  93.    End If
    
  94.    'is jetzt in der hauptschleife
    
  95. End Sub
    
  96. 
    
  97.