cs_fcolo
Messages postés201Date d'inscriptionmercredi 8 février 2006StatutMembreDernière intervention20 février 2007
-
14 mars 2006 à 11:18
cs_fcolo
Messages postés201Date d'inscriptionmercredi 8 février 2006StatutMembreDernière intervention20 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.
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201437 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...