Déplacer une form avec la souris [Résolu]

Signaler
Messages postés
379
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
20 avril 2011
-
Messages postés
167
Date d'inscription
jeudi 9 décembre 2004
Statut
Membre
Dernière intervention
18 novembre 2007
-
Bonjour,

petite question bete : j'ai fais une jolie form sans barre de titre. Donc maintenant je ne peux plus la déplacer tout simplement en cliquant dans la barre de titre.

Comment faire pour simuler le clic dans la barre de titre pour pouvoir déplacer la form à l'aide de la souris ?

Merci d'avance pour votre aide !

Seb.

6 réponses

Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
28
Const WM_NCLBUTTONDOWN = &HA1
Const HTCAPTION = 2

Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function ReleaseCapture Lib "User32" () As Long

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Call ReleaseCapture
SendMessage Me.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
End If
End Sub

Daniel
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
55
Salut,

Essaie de voir si ca, ca pourrait t aider:
Dim Bouge As Boolean

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Bouge = True
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Bouge Then Call Me.Move(Me.Left + X, Me.Top + Y)
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Bouge = False
End Sub

@+
Julien
-----------------------------------------------------------
:big) Essaie ca sinon on trouvera autre chose ;)
-----------------------------------------------------------
Messages postés
379
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
20 avril 2011
1
Bonjour !

Merci à vous deux, mais aucune des deux solutions ne fonctionne. La premiere j'y avais déjà pensé, mais ça ne fonctionne pas, et la seconde encore moins. Mais je suis en VB.NET, alors ptetre que cela vient de là ?

Merci pour votre aide, et je suis toujours à la recherche de la réponse...

Seb.
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
28
oui certainement !
pour les API's faut adapter la taille des données et remplacer le type Long par Integer.
sinon la méthode de jrivet devrait marcher aussi.

Dim Bouge As Boolean
Dim xx    As Integer
Dim yy    As Integer

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Bouge = True    xx X: yy Y
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Bouge Then
       Me.Move Me.Left + (X - xx), Me.Top + (Y - yy)
       End If
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Bouge = False
End Sub


Daniel
Messages postés
379
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
20 avril 2011
1
C bon :-)

La seconde solution etait la bonne, mais il m'a fallu bidouiller pour qu'elle fonctionne sous VB.NEt

Merci !!

seb.
Messages postés
167
Date d'inscription
jeudi 9 décembre 2004
Statut
Membre
Dernière intervention
18 novembre 2007
1
Salut je te conseille ces deux sources vb.net de spy166 :

• Déplacer sans barre de titre de deux façons (api & sans api)
http://www.vbfrance.com/code.aspx?id=7308

• Déplacer sans barre de titre mais avec bordure magnétique (sans api)
http://www.vbfrance.com/code.aspx?ID=18457

http://www.pym-corp.com/