GÉRER LE DÉPLACEMENT D'UNE FENÊTRE

cs_Multiprise Messages postés 63 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 23 avril 2013 - 22 févr. 2004 à 22:26
gandalfkhorne Messages postés 70 Date d'inscription dimanche 11 janvier 2004 Statut Membre Derniè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.

https://codes-sources.commentcamarche.net/source/20684-gerer-le-deplacement-d-une-fenetre

gandalfkhorne Messages postés 70 Date d'inscription dimanche 11 janvier 2004 Statut Membre Derniè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és 1243 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 18 février 2019 5
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és 63 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 23 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és 60 Date d'inscription dimanche 8 décembre 2002 Statut Membre Derniè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és 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
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és 63 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 23 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.
Rejoignez-nous