Dans une des feuilles :
'Timer1_Timer()
'MoveMe
'End Sub
Source / Exemple :
Type POINTAPI
X As Long
Y As Long
End Type
Public Declare Function GetCursorPos Lib "User32.dll" (lpPoint As POINTAPI) As Long
Public Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Private Mv(10) As Long
Sub MoveMe()
Mv(1) = GetFormID 'teste si une feuille de l'application a le pointeur
If Mv(1) > -1 Then 'fait si une feuille de l'application à le pointeur
Mv(6) = Mv(1) 'met en mémoire l'ID de la feuille à déplacer
Forms(Mv(1)).MousePointer = 15 'change le pointeur pour le CrossHair
Else 'fait si aucune feuille de l'application n'a le pointeur
If Mv(6) > -1 Then 'une feuille a été déplacée
Forms(Mv(6)).MousePointer = 0 'on réinitialise la valeur mousepointer a zero
Mv(6) = -1 'on vide la variable teste qui sert pour l'inialisation pointeur
End If
End If
Dim z As POINTAPI
Call GetCursorPos(z) 'position curseur en coordonnées écran
Mv(4) = GetKeyState(1) 'statut bouton gauche de la souris
If Mv(4) > -1 Then 'si pas de bouton souris réinitialise les variables
Mv(0) = 0
Mv(1) = -1
Mv(2) = 0
Mv(3) = 0
End If
If Mv(4) < 0 And Mv(0) = 0 Then 'bouton gauche activé
Mv(0) = 1 'verouille la saisie des valeurs suivantes(instantané)
Mv(1) = GetFormID
If Mv(1) = -1 Then Exit Sub 'sort si aucune feuille application n'a le poiteur
Mv(2) = (Forms(Mv(1)).Left / 15) - z.X 'enregistre les positions relatives feuille / pointeur
Mv(3) = (Forms(Mv(1)).Top / 15) - z.Y '""
End If
If Mv(4) < 0 And Mv(0) = 1 And Mv(1) > -1 Then 'phase de déplacement
Forms(Mv(1)).Move (z.X + Mv(2)) * 15, (z.Y + Mv(3)) * 15 '
End If
End Sub
Function GetFormID() As Long
Dim z As POINTAPI
Call GetCursorPos(z)
u2 = WindowFromPoint(z.X, z.Y) 'u2 est le hWnd de la feuille qui a le pointeur
GetFormID = -1
For n = 0 To Forms.Count - 1
u = Forms(n).hWnd
'on compare le hWnd des feuilles de la collection avec u2 pour trouver l'ID de la feuille pointée (n)
If u = u2 Then
If Forms(n).Visible = False Then GoTo zap
GetFormID = n 'GetFormID renvoie l'ID de la feuille pointée
Exit Function
End If
zap:
Next n
End Function
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.