Seite 1 von 2
An einer bestimmte Stelle verschieben
Verfasst: 04.11.2006 16:57
von RSBasic
Hi ihr, ich habe wieder eine Frage, die ich nicht selber beantworten kann. Deshalb frage ich euch.
Mein Problem ist: Ich habe ein Fenster ohne Titelleiste und ohne Ramen.
Ich möchte meine eigene Titelleiste erstellen, die Grafik habe ich schon hinzugefügt, aber ich möchte auch, dass meine Grafik (Titelleiste) eine Funktion hat, dass man den ganzen Fenster verschieben kann. Ich weis nicht, wie ich das coden sol, könnt ihr mir helfen? Code wäre nicht schlecht
Alternativ: Oder man muss einen Bereich programmieren, dass es vorgibt, dass man hier dieses Fenster verschieben kann.
Bitte helft mir

Verfasst: 04.11.2006 17:00
von a14xerus
Ich habe das seler mal gemacht.
Es gibt einen Code zum verschieben aktivieren (api) den ich gleich mal suche. und das mit dem bereich habe ich so gelöst, das imagegadget mit dem bild den fokus hat, dann wird das verschieben aktiviert.
So hier is ein code .. schnell geschrieben also dirty.. aber sollte klappen
Code: Alles auswählen
#window_1 = 10
#image_1 = 10
OpenWindow(#window_1,0,0,100,100,"",#PB_Window_BorderLess|#PB_Window_ScreenCentered)
CreateImage(#image_1,100,20)
StartDrawing(ImageOutput(#image_1))
Box(0,0,100,20,RGB(0,0,255))
StopDrawing()
CreateGadgetList(WindowID(#window_1))
img = ImageGadget(#PB_Any,0,0,100,20,ImageID(#image_1))
btn = ButtonGadget(#PB_Any,30,30,30,30,"exit")
Repeat
Event = WaitWindowEvent()
WindowID = EventWindow()
GadgetID = EventGadget()
EventType = EventType()
If Event = #PB_Event_Gadget
If GadgetID = btn
End
ElseIf GadgetID = img
ReleaseCapture_()
SendMessage_(WindowID(#window_1), #WM_NCLBUTTONDOWN, #HTCAPTION, #window_1)
EndIf
EndIf
ForEver
Re: An einer bestimmte Stelle verschieben
Verfasst: 04.11.2006 17:05
von Kiffi
Hallo RSBasic,
http://www.purebasic.fr/german/viewtopic.php?t=9956
Grüße ... Kiffi
@a14xerus: Kurzes Gedächtnis?

Verfasst: 04.11.2006 17:14
von a14xerus
ich weiß das ich es gefragt habe.. deswegen kenne ich ja den befehl.. aber ich woltle wie man oben sieht den code nochmal zusammenfassen *gg*
aus meinem thread hab ich das auch geholt ^^
Verfasst: 04.11.2006 17:25
von RSBasic
@a14xerus
Vielen Dank für dein Code, es funktioniert. Cool

Verfasst: 04.11.2006 17:54
von RSBasic
Ich habe jetzt schon wieder ein Problem.
Ich hab den Code von @a14xerus benutzt und auf der Titellleiste habe ich einen Button erstellt. Aber das Problem ist, ich kann den Button nicht benutzen, wenn ich mit DisableGadget() die Grafik deaktiviere, dann funktioniert endlich den Button, aber nicht das Verschieben. Bitte helft mir.
Code: Alles auswählen
OpenWindow(0,0,0,100,100,"ff",#PB_Window_BorderLess|#PB_Window_ScreenCentered)
CreateImage(1,100,20)
StartDrawing(ImageOutput(1))
Box(0,0,100,20,RGB(0,0,255))
StopDrawing()
CreateGadgetList(WindowID(0))
img = ImageGadget(1,0,0,100,20,ImageID(1))
btn = ButtonGadget(2,3,3,15,15,"x")
Repeat
Event = WaitWindowEvent()
WindowID = EventWindow()
GadgetID = EventGadget()
EventType = EventType()
If Event = #PB_Event_Gadget
If GadgetID = 2
End
ElseIf GadgetID = 1
ReleaseCapture_()
SendMessage_(WindowID(0), #WM_NCLBUTTONDOWN, #HTCAPTION, WindowID(0))
EndIf
EndIf
ForEver
Verfasst: 04.11.2006 19:26
von PBZecke
Code: Alles auswählen
OpenWindow(0,0,0,100,100,"ff",#PB_Window_BorderLess|#PB_Window_ScreenCentered)
CreateImage(1,100,20)
StartDrawing(ImageOutput(1))
Box(0,0,100,20,RGB(0,0,255))
StopDrawing()
CreateGadgetList(WindowID(0))
img = ImageGadget(1,20,0,100,20,ImageID(1))
btn = ButtonGadget(2,0,0,20,20,"x")
Repeat
Event = WaitWindowEvent()
WindowID = EventWindow()
GadgetID = EventGadget()
EventType = EventType()
If Event = #PB_Event_Gadget
If GadgetID = 2
End
ElseIf GadgetID = 1
ReleaseCapture_()
SendMessage_(WindowID(0), #WM_NCLBUTTONDOWN, #HTCAPTION, WindowID(0))
EndIf
EndIf
ForEver
Verfasst: 04.11.2006 20:10
von a14xerus
>>erklärung falls jmd den unterschied nicht sieht:
Die Gadgets dürfen nicht übereinander liegen.
Das imagegadget wird einfach verkleinert
Verfasst: 04.11.2006 20:12
von RSBasic
@PBZecke
Das war leider nicht korrekt, weil meine Buttons kleiner als die Titelleiste, wenn ich die Buttons verkleinere, dann sieht erstens nicht so gut aus und wollte das die Titelleiste von 0 beginnt, nicht von 20.
@a14xerus
Aber es muss irgendwie eine andere Möglichkeit geben oder?
Wenn ich ImageGadget deaktiviere, kann ich irgendwie trotzdem den Fokus empfangen?
Verfasst: 04.11.2006 20:14
von a14xerus
Du kannst es auch so machen, das du den Button auf die andere Seite tust..
also wo die leiset beginnt ist aj egal.. aber natürlich ist das Problem da, dass du bei mehreren Buttons mit abständen dazwischen oder bei kleinen buttosn einen rand o.ä hast.
Dafür weiß ich leider keine lösung
Vll kannst di die 2 apibefehle anders aktivieren (zb falls sich die maus in bestimten x-y positionen befindet)