Déplacer la form en cliquant et glissant avec la souris

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 290 fois - Téléchargée 34 fois


Contenu du snippet

Pour déplacer la Form avec la souris en cliquant sur n'importe quel point de la Form (sans être obligé de cliquer sur la barre des titres)

Source / Exemple :


Dim AltX As Single, AltY As Single, BlnDeplace As Boolean

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

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
	If BlnDeplace Then
		Me.Left = Me.Left + (X - AltX)
		Me.Top = Me.Top + (Y - AltY)
	End If
End Sub

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

A voir également

Ajouter un commentaire

Commentaires

Messages postés
5
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
2 septembre 2004

merci pour ton aide et A+
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
66
extraits de MSDN

The WM_NCLBUTTONDOWN message is posted when the user presses the left mouse button while the cursor is within the nonclient area of a window.
[...]
If a window has captured the mouse, this message is not posted. => d'où le ReleaseCapture

Parameters
wParam specifies the hit-test value indicating the position of the cursor hot spot

HTCAPTION In a title bar.
------------

tout est là :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/mouseinput/mouseinputreference/mouseinputmessages/wm_nclbuttondown.asp

là :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/mouseinput/mouseinputreference/mouseinputmessages/wm_nchittest.asp

et là :
http://msdn2.microsoft.com/en-us/library/ms646261.aspx
Messages postés
5
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
2 septembre 2004

je suis d'accord avec toi, mais dans la mesure ou l'on gère cette option au coup par coup et en fonction de form bien définie. Moi ma form dispose d'un MSCHart et d'un label donc en lourdeur pinuts.
c'est pour cela que je trouve que ta solution est plus simple que l'utilisation d'une API qui demande déjà forcément à la connaitre (ce qui n'est pas toujours évident) ensuite de comprendre comment elle marche et ce qu'elle veut comme paramètres (ce qui l'est encore moins).
Donc je maintient ta solution me convient mieux qu'une API.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
66
il ne faut pas avoir peur des API... pas de souci d'incompatibilité ici.

La version API dit :
"Si je clique dans la Form, considère que je clique dans la barre de titre."
derrière, Windows gère le déplacement de la fenêtre.

ici, on dit :
"Si je cliques sur la fenêtre, déplaces celle-ci"

Quelle différence me direz-vous ?
Et bien si l'utilisateur n'a pas activé l'option "Afficher le contenu des fenetres pendant leur déplacement (sous windows)", la fenetre sera affichée pendant son déplacement, puisque géré au fur et a mesure. Certaines machines peuvent donc subir des raffraichissement, surtout si la form est lourde (images, controles, etc...)

vaut mieux laisser Windows s'occuper de tout cela, non ?


Pour t'en convaincre, met le ScaleMode de ta Form sur '3 - pixels', et déplace ta fenetre...
Messages postés
5
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
2 septembre 2004

encore une source qu'elle est bonne et qui marche. en plus pas besoin d'api donc que du bonheur et une compatibilité à 200 % merci.
Afficher les 10 commentaires

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.