Je l'ai posté sur le forum us, pour un autre sujet, mais je le poste aussi ici car ça peut servir à d'autres usages.

Le but est de permettre de déplacer des petites fenêtres sans bord (#PB_Window_BorderLess) sans utiliser les API
(donc en principe compatible avec tous les OS sur lequel PB tourne)
Je m'en sert pour un 'launcher' d'application en cours de développement, mais ça peut servir pour faire des postit, des pendules etc.
L'astuce tient en 5 lignes, suivez #WM_LBUTTONDOWN
Pseudo code:
- Tant que le bouton gauche est enfoncé
- Alors
- Tant que le bouton gauche n'est pas relâché
- Prendre la position de la souris et déplacer par rapport à cette position
Code : Tout sélectionner
OpenWindow(0, 0, 0, 300, 150, "", #PB_Window_BorderLess | #PB_Window_ScreenCentered)
Txt_Message = TextGadget (#PB_Any, 050, 050, 150, 050, "Hello World!")
Btn_Close = ButtonGadget(#PB_Any, 280, 005, 015, 015, "X")
Repeat
Select WaitWindowEvent(50)
Case #PB_Event_Gadget ; --- Clic on gadget
Select EventGadget()
Case Btn_Close ; --- [X]
End
EndSelect
Case #WM_LBUTTONDOWN ; --- Move window with left button and without API call because I hate use API ;-)
Define X_Mouse = WindowMouseX(0)
Define Y_Mouse = WindowMouseY(0)
While WindowEvent() <> #WM_LBUTTONUP
ResizeWindow(0, DesktopMouseX() - X_Mouse, DesktopMouseY() - Y_Mouse, WindowWidth(0), WindowHeight(0))
Wend
EndSelect
ForEver
End

PS. Je poste ça dans "débutant", je ne sais pas si ça mérite d'aller dans "Trucs et astuces", je laisse soins aux admins de voir.