DÉPLACER UNE FORM AUTREMENT QU'AVEC LA BARRE DE TITRE WINDOWS

jotrash Messages postés 373 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 19 juin 2007 - 2 juin 2003 à 21:24
djgab21 Messages postés 66 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 19 mai 2011 - 24 févr. 2008 à 20:02
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/7308-deplacer-une-form-autrement-qu-avec-la-barre-de-titre-windows

djgab21 Messages postés 66 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 19 mai 2011
24 févr. 2008 à 20:02
Bonjour Spy166,

C'est exactement ce qu'il me faut.
Tu me sauve donc je te met 10/10
A+
cs_Benz Messages postés 196 Date d'inscription jeudi 3 janvier 2002 Statut Membre Dernière intervention 7 juin 2007
15 août 2006 à 13:26
Impeccable, c'est exactement ce dont j'avais besoin. Code simple et efficace.
Pour le petit bug, j'ai pas encore testé, mais la solution semble être là aussi :)
Pour moi ca vaut 10/10.
Merci
spy166 Messages postés 207 Date d'inscription jeudi 21 novembre 2002 Statut Membre Dernière intervention 29 mars 2006
19 juin 2003 à 13:01
Zut !!
Grosse connerie !!
Oubliez ce ke jai dit au commentaire de cette source déposé le 18/06/2003 à 23:14:28 !

En réalité, le code à mettre est le suivant (marche qu'en vb6):


Dans un module:

Public Declare Function ReleaseCapture Lib "user32" () As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const WM_NCLBUTTONDOWN = &HA1
Public Const HTCAPTION = 2

Dans l'évènement Mouse_Down de votre machin qui va vous servir à déplacer la form:

If Button <> vbLeftButton Then
Exit Sub
End If
ReleaseCapture
SendMessage Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&


Voilà cette fois c bon.
@++
jotrash Messages postés 373 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 19 juin 2007
19 juin 2003 à 12:24
je pense quil a voulu dire 10/10
spy166 Messages postés 207 Date d'inscription jeudi 21 novembre 2002 Statut Membre Dernière intervention 29 mars 2006
18 juin 2003 à 23:21
Oua ! Qui est le batard qui m'a noté 1/10 ?!
spy166 Messages postés 207 Date d'inscription jeudi 21 novembre 2002 Statut Membre Dernière intervention 29 mars 2006
18 juin 2003 à 23:14
Je viens de trouver le moyen qu'utilisent les barres de titre Windows, c'est encore plus simple que ma source!!
Surtout qu'il y a un léger bug avec le bouton gauche dans mon code: maintenez le bouton droit et le bouton gauche de la souris, bouger la souris, lacher le boutton gauche et bouger la souris...
Bref, voici the méthode:


Mettez ça dans un module:

Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const WM_NCLBUTTONDOWN = &HA1
Public Const HTCAPTION = 2


Et ça dans l'évènement du truc de votre form, dont vous avez envie de vous servir pour déplacer la form:

If Button <> vbLeftButton Then
Exit Sub
End If
ReleaseCapture
SendMessage Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&


Voilà @+
cs_SandStorm Messages postés 2 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 9 juin 2003
9 juin 2003 à 13:55
Très facile comme code mais très utile aussi! :-)
jotrash Messages postés 373 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 19 juin 2007
3 juin 2003 à 18:19
merccccccccccciiiiiiiiiiiiiiiiiiiii
Jujufouq Messages postés 254 Date d'inscription jeudi 27 décembre 2001 Statut Membre Dernière intervention 5 mars 2006
3 juin 2003 à 15:43
Ah merci... c'est mieux quand on n'a pas .NET...
spy166 Messages postés 207 Date d'inscription jeudi 21 novembre 2002 Statut Membre Dernière intervention 29 mars 2006
2 juin 2003 à 22:41
Ben en vb6, ça serait comme ça (toujours avec un label comme exemple):

Dim DepartX As Integer
Dim DepartY As Integer

Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
DepartX = X
DepartY = Y
End Sub

Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button <> vbLeftButton Then Exit Sub
Me.Left = Me.Left + (X - DepartX)
Me.Top = Me.Top + (Y - DepartY)
End Sub
jotrash Messages postés 373 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 19 juin 2007
2 juin 2003 à 21:24
ouinnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn et je fais comment moi utilisateur de vb6
ouiinnnnnnnnnnnnnn
Rejoignez-nous