Override de WndProc et interpretation m.Msg: comment choisir le bon [Résolu]

cs_fcolo 201 Messages postés mercredi 8 février 2006Date d'inscription 20 février 2007 Dernière intervention - 14 mars 2006 à 11:18 - Dernière réponse : cs_fcolo 201 Messages postés mercredi 8 février 2006Date d'inscription 20 février 2007 Dernière intervention
- 14 mars 2006 à 13:08
Bonjour,

suite à 686077 mon message, j'utilise l'override de WndProc pour déplacer ma form.
Or, si vous avez eu le courrage de lire tout le lien, j'ai du pour celà désactiver tous mes composants --> donc plus d'évènement sur ces derniers.
Je me suis dis pas grave, tu va intercepter ceux de la form, vérifier sur quel composant se situe la souris ( meme si c'est pas lui qui a déclanché l'evenement) et tu ferras pareil.
Donc j'ai cheché dans le WinUser.h du sdk les include utilisés pour les clic souris et je les ai testé dans le WinProc

private const int WM_NCHITTEST = 0x0084;
private const int WM_LBUTTONDOWN = 0x0201;
private const int HTCLIENT = 1;
private const int HTCAPTION = 2;


protected override void WndProc( ref Message m )
{
base.WndProc( ref m );


// MouseDown gauche sur la form
if( m.Msg == WM_LBUTTONDOWN )
{
this .Text = "down";
MouseEventHandler MEHMD = new System.Windows.Forms.MouseEventHandler(this.mouseDown);// appel de mouseDown
}

// Deplacement de la form
if ( m.Msg == WM_NCHITTEST )
{
if ( m.Result == ( IntPtr )HTCLIENT )
{
m.Result = ( IntPtr )HTCAPTION;
}
}
}

Malheureusement, il ne prend en compte en priorité le WM_NCHITTEST. Je n'ai jamais l'appel à ma fonction mouseDown.
Par contre, si je commente la partie de WM_NCHITTEST, il prend bein en compte le WM_LBUTTONDOWN.

En fait, je voudrais interpreter au niveau du clic droit, le mouseDown, mouseMove et mouseUp tout en conservant le fait de déplacer la form avec le WM_NCHITTEST.

Savez vous me donner un bout de piste?

f.colo
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 14 mars 2006 à 11:34
3
Merci
le problème c'est que le WM_NCHITTEST sera toujours le premier évènement.

ce que je te conseille, c'est d'utiliser un paramètre en plus... genre, tu autorises le déplacement de la fenêtre si et seulement si la touche Ctrl est enfoncée...


Sébastien FERRAND (
blog)
[Microsoft MVP Visual C#]

Merci sebmafate 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de sebmafate
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 14 mars 2006 à 11:56
0
Merci
Ca se complique : )

J'ai rajouté une réponse sur le précédent sujet..
Commenter la réponse de Lutinore
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 14 mars 2006 à 12:04
0
Merci
vi, j'ai vu ;)


Sébastien FERRAND (
blog)
[Microsoft MVP Visual C#]
Commenter la réponse de sebmafate
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 14 mars 2006 à 12:36
0
Merci
C'est surtout pour fcolo que je disais ça.. : )
Commenter la réponse de Lutinore
cs_fcolo 201 Messages postés mercredi 8 février 2006Date d'inscription 20 février 2007 Dernière intervention - 14 mars 2006 à 13:08
0
Merci
En résumer j'abandonne du coté de l'override de WndProc pour prendre la solution donnée à l'autre post.

Merci encore.

f.colo
Commenter la réponse de cs_fcolo

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.