DÉPLACER LA FORM EN CLIQUANT ET GLISSANT AVEC LA SOURIS

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 6 sept. 2003 à 12:02
cs_katman Messages postés 5 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 2 septembre 2004 - 13 avril 2007 à 15:49
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/8468-deplacer-la-form-en-cliquant-et-glissant-avec-la-souris

cs_katman Messages postés 5 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 2 septembre 2004
13 avril 2007 à 15:49
merci pour ton aide et A+
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 avril 2007 à 15:48
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
cs_katman Messages postés 5 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 2 septembre 2004
13 avril 2007 à 15:42
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.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 avril 2007 à 15:36
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...
cs_katman Messages postés 5 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 2 septembre 2004
13 avril 2007 à 15:22
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.
thedudul Messages postés 33 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 28 novembre 2004
30 sept. 2003 à 16:26
Parfait, ca marche du feu de dieu.
Je vous remerci tout les 2 ;-)
cs_Targhan Messages postés 13 Date d'inscription vendredi 22 août 2003 Statut Membre Dernière intervention 24 mai 2005
8 sept. 2003 à 23:19
Je trouve BlnDeplace un peu superflu...
Ne serait-il pas plus pratique de virer BlnDeplace de Form_MouseDown et Form_MouseUp et de le remplacer par If Button = .... dans Form_MouseMove ? Je pense que ça permet de selectionner plus finement le bouton avec lequel on souhaite déplacer la feuille.
rnosat Messages postés 132 Date d'inscription mardi 31 octobre 2000 Statut Membre Dernière intervention 2 mai 2004
6 sept. 2003 à 14:45
super bien !
8/10
A+
cs_RJLFRANCE Messages postés 36 Date d'inscription samedi 17 août 2002 Statut Membre Dernière intervention 16 septembre 2005
6 sept. 2003 à 13:55
Merci a vous deux, Je chercher depuis un moment ....

MERCI
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
6 sept. 2003 à 12:02
ou encore :
-----------------------------------------------------------------------

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 Sub ReleaseCapture Lib "User32" ()
Const WM_NCLBUTTONDOWN = &HA1
Const HTCAPTION = 2

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