Programmwindow ohne Rahmen verschieben

Für allgemeine Fragen zur Programmierung mit PureBasic.
funkheld
Beiträge: 651
Registriert: 31.12.2009 11:58

Programmwindow ohne Rahmen verschieben

Beitrag von funkheld »

Hallo, guten Tag.

Wie kann man bitte in Purebasic ein Programmwindows ohne Rahmen mit der Maus verschieben?

Code: Alles auswählen

OpenWindow(#PB_Any, 0, 0, 800, 600, "WindowTitle", #PB_Window_BorderLess|#PB_Window_ScreenCentered)
ContainerGadget(#PB_Any, 10, 10, 400, 400, #PB_Container_Raised)

InitKeyboard() 

Repeat 
  Event = WaitWindowEvent()    
  ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape) 
Danke.

Gruss
Zuletzt geändert von funkheld am 20.01.2015 17:21, insgesamt 1-mal geändert.
Benutzeravatar
Kiffi
Beiträge: 10725
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Programmwindow ohne Rahmen.

Beitrag von Kiffi »

hier im Board gibt's eine Menge an Informationen zu diesem Thema. Such mal nach 'HTCAPTION'
a²+b²=mc²
Benutzeravatar
Vera
Beiträge: 928
Registriert: 18.03.2009 14:47
Computerausstattung: Win XP SP2, Suse 11.1
Wohnort: Essen

Re: Programmwindow ohne Rahmen verschieben

Beitrag von Vera »

Hallo funkheld,

Auf Linux lassen sich Fenster, auch Borderless, mit ALT+liMausklick jederzeit verschieben.
Von den verschieden Möglichkeiten es einzurichten, finde ich die Methode von SkyManager in [Solved] Moving gadget gut, da er auch crossplatform ist. (s. letzten Code)
Es lohnt sich den ganzen Thread genauer durchzugehen, da dort auch andere Methoden dabei sind.

Gruß ~ Vera
°
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
funkheld
Beiträge: 651
Registriert: 31.12.2009 11:58

Re: Programmwindow ohne Rahmen verschieben

Beitrag von funkheld »

Jup, so kann ich es jetzt verschieben.

Gibt es eine Möglichkeit, nach dem verkleinern den Rahmen durch einen Tastendruck unsichtbar/sichtbar zu machen?
Oder das Fenster auch ohne Rahmen vergrößern/verkleinern?

Code: Alles auswählen

OpenWindow(0, 0, 0, 320,200, "WindowTitle", #PB_Window_BorderLess|#PB_Window_ScreenCentered)
ContainerGadget(1, 0,0,320,200, #PB_Container_Raised)

InitKeyboard() 

Repeat 
  Event = WaitWindowEvent() 
  
  Select Event
    Case #WM_LBUTTONDOWN
      SendMessage_(WindowID(0),#WM_NCLBUTTONDOWN, #HTCAPTION,0) 
  EndSelect
  ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape) 
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Programmwindow ohne Rahmen verschieben

Beitrag von RSBasic »

Wenn du einen Container erstellst, dann vergiss bitte nicht, diesen auch zu schließen (CloseGadgetList()), wenn du ihn nicht mehr mit Gadgets befüllen möchtest. Sonst hast du später Probleme, wenn du außerdem deines Containers andere Gadgets hinzufügen möchtest.
Ohne Fensterrahmen vergrößern bzw. verkleinern zu können, ist so nicht möglich. Die komplette Abfrage- und Vergrößerungs-/Verkleinerungsfunktion musst du selber schreiben. D.h. im Callback auf Mauscursorposition abfragen, Mauscursor setzen und die Größe verändern.
Alternativ kannst du dein Fenster auch mit Rahmen und ohne Titelleiste erstellen: http://www.rsbasic.de/aktualisierung/wi ... SizeBox.pb
Das wäre die einfachste Lösung ohne Zusatzaufwand.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten