Override de WndProc et interpretation m.Msg: comment choisir le bon

Résolu
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 - 14 mars 2006 à 11:18
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 - 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

5 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
14 mars 2006 à 11:34
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#]
3
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
14 mars 2006 à 11:56
Ca se complique : )

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


Sébastien FERRAND (
blog)
[Microsoft MVP Visual C#]
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
14 mars 2006 à 12:36
C'est surtout pour fcolo que je disais ça.. : )
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 2
14 mars 2006 à 13:08
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
0
Rejoignez-nous