Home

Add

Edit

With Linenumbers

Code in Textfield

Download

#DEFINE Quit Inkey=Chr(255,107)
Dim Shared As Integer mx,my,mb,anz_win,move_win

Type WizWindow
As Integer id
As String title
As Integer x
As Integer y
As Integer w
As Integer h
End Type

Dim Shared As WizWindow win()
Dim Shared As Uinteger winZ()

Declare Sub InitGUI()
Declare Sub DrawGadgets()
Declare Sub DrawWindow(id As Integer)
Declare Sub WinAdd()

Screenres 640,480,32
InitGUI()

Dim Shared anz_alloc As Uinteger
Sub WinAdd()
    anz_win+=1
    If anz_win > anz_alloc Then
        anz_alloc += 25
        Redim Preserve win(anz_alloc) As WizWindow
        Redim Preserve winZ(anz_alloc) As Uinteger
    End If
    With win(anz_win)
    .id=1
    .title="Testwindow-" & Str(anz_win)
    .x=anz_win * 25
    .y=anz_win * 25
    .w=300
    .h=200
    End With
    winZ(anz_win) = anz_win
End Sub

Dim oldMouseX As Integer
Dim oldMouseY As Integer

Do
    oldMouseX = mx
    oldMouseY = my
    Getmouse mx,my,,mb
    
    move_win = 0 'erstma zurücksetzen, denn wir prüfen ja (hier leider) jedes mal
    For i As Integer= anz_win To 1 Step -1
        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
            If i < anz_win Then 'ist ganz sinvoll, um nicht jedes mal die liste zu durchlaufen, wenn das fenster sowieso schon am ende is.
                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
            End If
            'einfach noch eine prüfung hinzu fügen (kann man natürlich optimieren)
            'welche prüft, ob man auf das ""bar klickt.
            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
                'wen dem so ist, dann:
                'move
                move_win = winZ(i)
            End If
            Exit For 'exit danach
        End If
    Next
    'wenn move gesetzt, dann move es
    If move_win <> 0 Then
        'move variante ist SEHR unschön!!!
        win(move_win).x += mx - oldmousex
        win(move_win).y += my - oldmousey
    End If
    
    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
    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
End Sub