Déplacer une fenêtre

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Déplacer une fenêtre

Message par Le Soldat Inconnu »

pour déplacer une fenêtre en cliquant dessus avec la souris

Code : Tout sélectionner

;- Window Constants
;
#Window_0 = 0
#SizeWindowX = 300
#SizeWindowY = 200

Procedure Open_Window_0()
  
  If OpenWindow(#Window_0, 366, 211, #SizeWindowX, #SizeWindowY, #PB_Window_BorderLess, "New window ( 0 )")
    If CreateGadgetList(WindowID())
      
    EndIf
  EndIf
EndProcedure


;- debut du prog

Open_Window_0()
ClicDroit = 0

Repeat
  
  If clicdroit ; si le bouton droit de la souris est appuyé, on déplace la fenêtre en même temps que la souris
    Event = WindowEvent()
    
    GetCursorPos_(CursorPos.Rect)
    mousex.l = CursorPos\Left
    mousey.l = CursorPos\Top
    MoveWindow(mousex - PositionX, mousey - PositionY)
    
  Else
    Event = WaitWindowEvent()
  EndIf
  
  If event = #WM_RButtonDown ; on enfonce le bouton droit de la souris
    clicdroit = 1
    PositionX = WindowMouseX()
    PositionY = WindowMouseY()
    SetClassLong_(WindowID(), #GCL_HCURSOR, LoadCursor_(0, 32646)) ; choix du curseur déplacement
  EndIf
  If event = #WM_RButtonUp ; on relève le bouton droit de la souris
    clicdroit = 0
    SetClassLong_(WindowID(), #GCL_HCURSOR, LoadCursor_(0, 32512)) ; choix du curseur normal
  EndIf
  
Until Event = #PB_EventCloseWindow

End
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Oulaahhhh!!!

Que de lignes pour si peu de choses :roll: ... :lol:

Code : Tout sélectionner

;- Window Constants 
; 
#Window_0 = 0 
#SizeWindowX = 300 
#SizeWindowY = 200 

Procedure Open_Window_0() 
  
  If OpenWindow(#Window_0, 366, 211, #SizeWindowX, #SizeWindowY, #PB_Window_BorderLess, "New window ( 0 )") 
    If CreateGadgetList(WindowID()) 
    EndIf 
  EndIf 
EndProcedure 

;- debut du prog 

Open_Window_0() 

Repeat 
  Select WaitWindowEvent()
    Case #WM_LBUTTONDOWN 
      SendMessage_(WindowID(), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
  EndSelect
  
Until Event = #PB_EventCloseWindow 
End
Chris :)
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Ouais, je sais, mais mon truc permet le déplacement également avec le clic droit ce que ne permet ton système.

Ton truc ne marche que avec le clic gauche mais je l'utilise quand y'a pas besion de passer avec le clic droit.
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Répondre