An einer bestimmte Stelle verschieben

Fragen und Bugreports zur PureBasic 4.0-Beta.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

An einer bestimmte Stelle verschieben

Beitrag 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 :|
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag 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
Zuletzt geändert von a14xerus am 04.11.2006 17:13, insgesamt 2-mal geändert.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: An einer bestimmte Stelle verschieben

Beitrag von Kiffi »

Hallo RSBasic,

http://www.purebasic.fr/german/viewtopic.php?t=9956

Grüße ... Kiffi

@a14xerus: Kurzes Gedächtnis? ;-)
a²+b²=mc²
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag 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 ^^
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

@a14xerus
Vielen Dank für dein Code, es funktioniert. Cool :allright:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag 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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
PBZecke
Beiträge: 399
Registriert: 02.09.2004 17:34

Beitrag 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
Nein, ich habe die Suche nicht benutzt, und deshalb auch nichts dazu gefunden... :lol:
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

>>erklärung falls jmd den unterschied nicht sieht:
Die Gadgets dürfen nicht übereinander liegen.
Das imagegadget wird einfach verkleinert
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag 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?
Zuletzt geändert von RSBasic am 04.11.2006 20:16, insgesamt 1-mal geändert.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag 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)
Gesperrt