Déplacer à la souris une petite fenêtre sans bordure
Publié : dim. 23/mars/2014 11:03
Je fais un minuscule programme (une petit horloge), composée d'une fenêtre unique, sans bord, ni barre de menu.
Mon souhait est de pouvoir la déplacer à la souris (clic gauche enfoncé puis déplacement de la souris)
Voila le code (expurgé pour isoler la partie déplacement)
Le problème est que ça se déplace très bien, mais que la procédure ne lâche plus la fenêtre :-/
(en clair, une fois le mouvement enclenché, elle ne détecte pas que le bouton gauche est relâché)
(attention: ce code fait planter: il faut quitter par l'IDE)
J'ai une demi-solution en mettant un 'break' dans ma boucle while/wend, mais ce n'est pas satisfaisant.
J'ai aussi essayé avec un delay(200), mais marche pas.
Puis-je injecter un event dans la file (au niveau de la while/wend) ?
J'ai trouvé quelques exemples ça et là, mais je souhaite si possible rester en pur basic (en deux mots), c'est à dire ne pas faire appel direct aux API système ni aux pointeurs, ni bidouille
Mon souhait est de pouvoir la déplacer à la souris (clic gauche enfoncé puis déplacement de la souris)
Voila le code (expurgé pour isoler la partie déplacement)
Le problème est que ça se déplace très bien, mais que la procédure ne lâche plus la fenêtre :-/
(en clair, une fois le mouvement enclenché, elle ne détecte pas que le bouton gauche est relâché)
(attention: ce code fait planter: il faut quitter par l'IDE)
Code : Tout sélectionner
Global x = 100, y = 100, w = 300, h = 100
OpenWindow(0, x, y, w, h, "", #PB_Window_BorderLess | #PB_Window_BorderLess)
Repeat
event = WaitWindowEvent()
Select event
; Clic DROIT sur la fenêtre = Quitter
Case #PB_Event_RightClick
End
; Clic GAUCHE = Déplacer la fenêtre sur la position de la souris
Case #PB_Event_LeftClick
While #PB_EventType_LeftButtonDown
ResizeWindow(0, DesktopMouseX(), DesktopMouseY(), w, h)
; Ici la fenêtre se déplace bien, mais ne détecte pas que le bouton gauche est relaché :-/
; Comment forcer la relecture d'event ?
Wend
EndSelect
Until Event = #PB_Event_CloseWindow
J'ai aussi essayé avec un delay(200), mais marche pas.
Puis-je injecter un event dans la file (au niveau de la while/wend) ?
J'ai trouvé quelques exemples ça et là, mais je souhaite si possible rester en pur basic (en deux mots), c'est à dire ne pas faire appel direct aux API système ni aux pointeurs, ni bidouille
