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