cs_Multiprise
Messages postés63Date d'inscriptionjeudi 4 décembre 2003StatutMembreDernière intervention23 avril 2013
-
22 févr. 2004 à 22:26
gandalfkhorne
Messages postés70Date d'inscriptiondimanche 11 janvier 2004StatutMembreDernière intervention 1 octobre 2004
-
2 mai 2004 à 22:21
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
gandalfkhorne
Messages postés70Date d'inscriptiondimanche 11 janvier 2004StatutMembreDernière intervention 1 octobre 2004 2 mai 2004 à 22:21
Pke ce code que tu nous a proposé foire à merveille pcpunch,
Ex :
Left=10
Top=10
Si je clique au point de coordonnées (1200,2500)
X=1200 et Y=2500
Par conséquent Left=1210 et Top=2510 (alors que cela devrait etre invariant)
pcpunch
Messages postés1243Date d'inscriptionmardi 7 mai 2002StatutMembreDernière intervention18 février 20195 24 févr. 2004 à 02:12
Ok le gars pour l'api c mieux, mais pourquoi faire un si long code alors que l'on peu le faire en une seule ligne???
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then Me.Move Me.Left + X, Me.Top + Y
End Sub
cs_Multiprise
Messages postés63Date d'inscriptionjeudi 4 décembre 2003StatutMembreDernière intervention23 avril 2013 23 févr. 2004 à 20:27
je ne vois pas trop quels commentaires supplémentaires Seraient nécessaires si ce n'est qu'au lieu de déplacer une Form on peut déplacer tout objet possédant une propriété Mouse...quelque chose, il suffit par exemple de remplacer :
SendMessage MaForm.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
Par
SendMessage Picture1.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
ou
SendMessage Image1.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
ou
SendMessage Command1.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
Etc..Etc.... Ca Va? Capito ? Si non je ne peux rien de plus.
Salut à tous.
cs_AngeloVivaldi
Messages postés60Date d'inscriptiondimanche 8 décembre 2002StatutMembreDernière intervention 1 juillet 2004 23 févr. 2004 à 20:07
Ben merci pour l'info ... je savais pas ! =) Fo dire que cétai pa facile a trouvé l'api parce que g démandé de l'aide sur le tchat #programmation mai personne ne savait ... Alors g tapé ce code.
ClickX=0 et ClickY=0 c juste une sécurité au cas ou les valeurs serai modifiés, inutile peut etre pas =)
merci pour vos apréciations
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 23 févr. 2004 à 13:00
Ce code est en effet à préferer.(bien que non comenté...)
En gros, on dit à Windows que l'on viens de cliquer.... sur la barre de titre. L'avantage est que le comportement de le fenêtre sera strictement le même.... coté ressources aussi....
petites questions sur ton code, tout de même ;)
pourquoi ces lignes ?
ClickX = 0
ClickY = 0
cs_Multiprise
Messages postés63Date d'inscriptionjeudi 4 décembre 2003StatutMembreDernière intervention23 avril 2013 22 févr. 2004 à 22:26
Bon code qui marche. mais il y a plus court et plus simple avec Api Windows:
'
Option Explicit
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long
' Constantes
Private Const WM_NCLBUTTONDOWN = &HA1
Private Const HTCAPTION = 2
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Pour deplacer la form
On Error Resume Next
' Initialiser
ReleaseCapture
SendMessage MaForm.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
End Sub
Ca marche également avec tout les controles qui ont une propriété MouseDown.
2 mai 2004 à 22:21
Ex :
Left=10
Top=10
Si je clique au point de coordonnées (1200,2500)
X=1200 et Y=2500
Par conséquent Left=1210 et Top=2510 (alors que cela devrait etre invariant)
24 févr. 2004 à 02:12
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then Me.Move Me.Left + X, Me.Top + Y
End Sub
23 févr. 2004 à 20:27
SendMessage MaForm.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
Par
SendMessage Picture1.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
ou
SendMessage Image1.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
ou
SendMessage Command1.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
Etc..Etc.... Ca Va? Capito ? Si non je ne peux rien de plus.
Salut à tous.
23 févr. 2004 à 20:07
ClickX=0 et ClickY=0 c juste une sécurité au cas ou les valeurs serai modifiés, inutile peut etre pas =)
merci pour vos apréciations
23 févr. 2004 à 13:00
En gros, on dit à Windows que l'on viens de cliquer.... sur la barre de titre. L'avantage est que le comportement de le fenêtre sera strictement le même.... coté ressources aussi....
petites questions sur ton code, tout de même ;)
pourquoi ces lignes ?
ClickX = 0
ClickY = 0
22 févr. 2004 à 22:26
'
Option Explicit
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long
' Constantes
Private Const WM_NCLBUTTONDOWN = &HA1
Private Const HTCAPTION = 2
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Pour deplacer la form
On Error Resume Next
' Initialiser
ReleaseCapture
SendMessage MaForm.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
End Sub
Ca marche également avec tout les controles qui ont une propriété MouseDown.