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,move_win
    
  3. 
    
  4. Type WizWindow
    
  5. As Integer id
    
  6. As String title
    
  7. As Integer x
    
  8. As Integer y
    
  9. As Integer w
    
  10. As Integer h
    
  11. End Type
    
  12. 
    
  13. Dim Shared As WizWindow win()
    
  14. Dim Shared As Uinteger winZ()
    
  15. 
    
  16. Declare Sub InitGUI()
    
  17. Declare Sub DrawGadgets()
    
  18. Declare Sub DrawWindow(id As Integer)
    
  19. Declare Sub WinAdd()
    
  20. 
    
  21. Screenres 640,480,32
    
  22. InitGUI()
    
  23. 
    
  24. Dim Shared anz_alloc As Uinteger
    
  25. Sub WinAdd()
    
  26.     anz_win+=1
    
  27.     If anz_win > anz_alloc Then
    
  28.         anz_alloc += 25
    
  29.         Redim Preserve win(anz_alloc) As WizWindow
    
  30.         Redim Preserve winZ(anz_alloc) As Uinteger
    
  31.     End If
    
  32.     With win(anz_win)
    
  33.     .id=1
    
  34.     .title="Testwindow-" & Str(anz_win)
    
  35.     .x=anz_win * 25
    
  36.     .y=anz_win * 25
    
  37.     .w=300
    
  38.     .h=200
    
  39.     End With
    
  40.     winZ(anz_win) = anz_win
    
  41. End Sub
    
  42. 
    
  43. Dim oldwin As Integer
    
  44. Do
    
  45.     oldwin = move_win
    
  46.     Getmouse mx,my,,mb
    
  47.     
    
  48.     If move_win = 0 Then 'erstmal prüfen ob n fenster aktuell bewegt wird. (Drag-crosslock schutz)
    
  49.         For i As Integer= anz_win To 1 Step -1
    
  50.             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
    
  51.                 If i < anz_win Then 'ist ganz sinvoll, um nicht jedes mal die liste zu durchlaufen, wenn das fenster sowieso schon am ende is.
    
  52.                     Dim TWinID As Uinteger = winZ(i)
    
  53.                     For X As Uinteger = i To anz_win -1
    
  54.                         winZ(x) = winZ(x + 1)
    
  55.                     Next
    
  56.                     winZ(anz_win) = TWinID
    
  57.                 End If
    
  58.                 'einfach noch eine prüfung hinzu fügen (kann man natürlich optimieren)
    
  59.                 'welche prüft, ob man auf das ""bar klickt.
    
  60.                 If (mx>win(winZ(i)).x And mx<win(winZ(i)).w+win(winZ(i)).x) And (my>win(winZ(i)).y And my<24+win(winZ(i)).y) And mb=1 Then
    
  61.                     'wen dem so ist, dann:
    
  62.                     'move
    
  63.                     move_win = winZ(i)
    
  64.                 End If
    
  65.                 Exit For 'exit danach
    
  66.             End If
    
  67.         Next
    
  68.     End If
    
  69.     'wenn move gesetzt, dann move es
    
  70.     If mb=1 Then 'wenn knop gedrückt, dann move ausführen, wenn ...
    
  71.         If move_win = oldwin Then '... fenster selectiert
    
  72.             'diese variante ist deutlich schöner, udn auch sicherer, bei schnellen mausbewegungen.
    
  73.             win(move_win).x = mx
    
  74.             win(move_win).y = my
    
  75.         Else
    
  76.             oldwin = move_win 'ansonsten selektieren (wenn vorhanden)
    
  77.         End If
    
  78.     Else: oldwin = 0 'beim loslassen wird auch drag gelöscht
    
  79.     End If
    
  80.     
    
  81.     
    
  82.     Sleep 10,1
    
  83.     Screenlock
    
  84.         Cls
    
  85.         Line (0,0)-(640,480),&h376ea5,BF
    
  86.         DrawGadgets()
    
  87.     Screenunlock
    
  88. Loop Until Quit
    
  89. End
    
  90. 
    
  91. 
    
  92. Sub InitGUI()
    
  93.     For X As Uinteger = 1 To 10
    
  94.         WinAdd()
    
  95.     Next
    
  96. End Sub
    
  97. 
    
  98. 
    
  99. Sub DrawGadgets()
    
  100. For i As Integer=1 To anz_win
    
  101.     If win(winZ(i)).id=1 Then DrawWindow(winZ(i))
    
  102. Next
    
  103. End Sub
    
  104. 
    
  105. Sub DrawWindow(id As Integer)
    
  106. If id=winZ(anz_win) Then
    
  107.     Line (win(id).x,win(id).y)-(win(id).w+win(id).x,win(id).h+win(id).y),&hFFFFFF,BF
    
  108.     Line (win(id).x,win(id).y)-(win(id).w+win(id).x,win(id).h+win(id).y),&h000000,B
    
  109. Else
    
  110.     Line (win(id).x,win(id).y)-(win(id).w+win(id).x,win(id).h+win(id).y),&hc0c0c0,BF
    
  111.     Line (win(id).x,win(id).y)-(win(id).w+win(id).x,win(id).h+win(id).y),&h000000,B
    
  112. End If
    
  113. End Sub
    
  114. 
    
  115.