Also ich hab mich in das Thema "Selberzeichnen" mal etwas hineinversetzt und mir meinen eigenen "Style" programmiert.
Wollte jetzt dafuer keinen anderen extra Thread aufmachen, deswegen poste ich das mal hier. Hat ja im entfernteren Sinne auch noch was mit Andesdafs Problem zu tun.
Code: Alles auswählen
OpenWindow(0, 0, 0, 300, 200, "", #PB_Window_ScreenCentered | #PB_Window_BorderLess); | #PB_Window_BorderLess)
CreateGadgetList(WindowID(0))
Repeat
StartDrawing(WindowOutput(0))
blue = 30
For i = 0 To 30
blue + 4
Line(0, i, WindowWidth(0), 0, RGB(0, 0, blue))
Next
DrawingMode(#PB_2DDrawing_Transparent)
DrawText(5, 5, "Mein eigenes Fenster", RGB(255, 255, 255))
Box(270, 5, 20, 20, RGB(0, 0, 250))
Line(272, 21, 16, -16, $FFFFFF)
Line(287, 21, -16, -16, $FFFFFF)
Box(220, 5, 20, 20, RGB(0, 0, 250))
Line(225, 15, 10, 0, $FFFFFF)
DrawingMode(#PB_2DDrawing_Outlined)
Box(220, 5, 20, 20, 0)
Box(270, 5, 20, 20, 0)
Box(0, 0, 300, 200, RGB(0, 0, 255))
Box(1, 1, 298, 198, RGB(0, 0, 255))
StopDrawing()
Repeat
EventID = WindowEvent()
Delay(1)
If EventID = #PB_Event_Repaint
Break
EndIf
Until GetAsyncKeyState_(#VK_LBUTTON) Or EventID = #True Or klick = 1
If EventID = #PB_Event_Repaint
Continue
EndIf
If GetAsyncKeyState_(#VK_LBUTTON) And WindowMouseX(0) >= 220 And WindowMouseX(0) <= 240 And WindowMouseY(0) >= 5 And WindowMouseY(0) <= 25
SetWindowState(0, #PB_Window_Minimize)
ElseIf GetAsyncKeyState_(#VK_LBUTTON) And WindowMouseX(0) > 270 And WindowMouseX(0) <= 290 And WindowMouseY(0) >= 5 And WindowMouseY(0) <= 25
SendMessage_(WindowID(0), #WM_CLOSE, 0, 0)
ElseIf GetAsyncKeyState_(#VK_LBUTTON) And WindowMouseY(0) < 40
If klick = 0
oldmousex = WindowMouseX(0)
oldmousey = WindowMouseY(0)
klick + 1
ElseIf klick = 1
If WindowMouseX(0) > oldmousex
ResizeWindow(0, WindowX(0)+(WindowMouseX(0)-oldmousex), WindowY(0), 300, 200)
oldmousex = WindowMouseX(0)
ElseIf WindowMouseX(0) < oldmousex
ResizeWindow(0, WindowX(0)-(oldmousex - WindowMouseX(0)), WindowY(0), 300, 200)
oldmousex = WindowMouseX(0)
EndIf
If WindowMouseY(0) > oldmousey
ResizeWindow(0, WindowX(0), WindowY(0)+ (WindowMouseY(0) - oldmousey), 300, 200)
oldmousey = WindowMouseY(0)
ElseIf WindowMouseY(0) < oldmousey
ResizeWindow(0, WindowX(0), WindowY(0)- (oldmousey - WindowMouseY(0)), 300, 200)
oldmousey = WindowMouseY(0)
EndIf
EndIf
Else
klick = 0
oldmousex = 0
oldmousey = 0
EndIf
Until EventID = #PB_Event_CloseWindow
Die Buttons sind natuerlich nur provisorisch schnell gezeichnet - das muss ich grafisch noch aufpeppen.
Also Minimieren klappt wunderbar. Und die Schliessen-Funktion auch (mit SendMessage() natuerlich).
Aber bei der Move-Funktion happerts. Hat jemand ne Idee wie ich das fluessiger machen koennte? Es funktioniert halt nicht so richtig wie bei den "normalen" Windows-Fenstern... Oder gibts vllt noch ne andere API-Loesung das zu realisieren... waere sehr dankbar fuer eure Hilfe...