J'ai fais le code suivant, mais il y a des problèmes qd on est près d'un bord et qu'on la déplace rapidement. Essayez de faire n'importe quoi vous comprendrez...
Voici le code, je n'ai pas forcément pris la bonne méthode :
Code : Tout sélectionner
;- Num de la fenetre
#WINDOW = 0
;- Evenements
#MOUSE_MOVE = 512
;- Infos pour le deplacement de la fenetre
Structure MoveWindow
etat.b
clic.point
idObj.l
posObj.point
EndStructure
Global moveWin.MoveWindow
;- Deplacement de la fenetre dans le cas d'un drag and drop
Procedure MoveWindowByDrag(*param.MoveWindow)
If moveWin\etat
*param\posObj\x + DesktopMouseX() - *param\clic\x
*param\posObj\y + DesktopMouseY() - *param\clic\y
*param\clic\x = DesktopMouseX()
*param\clic\y = DesktopMouseY()
MoveWindow(*param\posObj\x, *param\posObj\y)
EndIf
EndProcedure
hWnd = OpenWindow(#WINDOW, 50, 50, 314, 176, #PB_Window_BorderLess , "Window Name")
; hBitmap = LoadImage(0, "skin.bmp")
; SkinWin(hWnd, hBitmap)
moveWin\idObj = WindowID(#WINDOW)
Repeat
EventID.l = WaitWindowEvent()
Select EventID
Case #WM_LBUTTONDOWN
If WindowFromPoint_(DesktopMouseX(), DesktopMouseY()) = moveWin\idObj
moveWin\etat = #True
moveWin\clic\x = DesktopMouseX()
moveWin\clic\y = DesktopMouseY()
moveWin\posObj\x = WindowX()
moveWin\posObj\y = WindowY()
EndIf
Case #WM_LBUTTONUP
moveWin\etat = #False
Case #MOUSE_MOVE
MoveWindowByDrag(@moveWin)
Case #PB_Event_CloseWindow ; If the user has pressed on the close button
Quit = 1
EndSelect
Until Quit = 1
End
