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 :D

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 :allright:

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)