OVH Cloud OVH Cloud

gestion clavier

2 réponses
Avatar
Marc
Bonjour à tous,
Je réalise en ce moment une application de dessin MDI avec gestion du
clavier.
Le problème est que je n'arrive pas à intercepter, dans la fenêtre fille,
les touches curseur (Keys.Right, Keys.Left...) par contre les autres touches
fonctionnent parfaitement.
Apparemment ces touches curseurs agissent au niveau de la bascule entre les
différentes fenêtres fille.
Une idée ?
Marc

2 réponses

Avatar
Gilles TOURREAU
Marc a exprimé avec précision :
Bonjour à tous,
Je réalise en ce moment une application de dessin MDI avec gestion du
clavier.
Le problème est que je n'arrive pas à intercepter, dans la fenêtre fille,
les touches curseur (Keys.Right, Keys.Left...) par contre les autres touches
fonctionnent parfaitement.
Apparemment ces touches curseurs agissent au niveau de la bascule entre les
différentes fenêtres fille.
Une idée ?
Marc




Substitue la fonction "ProcessCmdKey" de tel façon :

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (msg.WParam == LaValeurDeLaToucheGauche || ....)
{
FaireQqch();
return true;
}

return base.ProcessCmdKey(ref msg, keyData);
}

Lorsque tu appuies sur une touche du clavier, "ProcessCmdKey" est la
première fonction qui est appelé avant quel soit traité...
Si cette fonction renvoie false, la touche sera envoyé à diverses
évenement (KeyPress, KeyDown, ...etc) uniquement si celle-ci n'est pas
une touche de "commande" (Alt, Ctrl, ...etc).

Pour connaitre la valeur de la touche gauche ou droite lance dans un
premier temps ton programme avec :

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
MessageBox.Show(msg.WParam);
return base.ProcessCmdKey(ref msg, keyData);
}

Afin de trouver la valeur entière correspondante à (ou aux) touche(s)
qui t'interresse(nt).

Cordialement

--
Gilles TOURREAU
Responsable informatique


Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
Marc
Merci cela fonctionne correctement.
Marc.


"Gilles TOURREAU" wrote:

Marc a exprimé avec précision :
> Bonjour à tous,
> Je réalise en ce moment une application de dessin MDI avec gestion du
> clavier.
> Le problème est que je n'arrive pas à intercepter, dans la fenêtre fille,
> les touches curseur (Keys.Right, Keys.Left...) par contre les autres touches
> fonctionnent parfaitement.
> Apparemment ces touches curseurs agissent au niveau de la bascule entre les
> différentes fenêtres fille.
> Une idée ?
> Marc


Substitue la fonction "ProcessCmdKey" de tel façon :

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (msg.WParam == LaValeurDeLaToucheGauche || ....)
{
FaireQqch();
return true;
}

return base.ProcessCmdKey(ref msg, keyData);
}

Lorsque tu appuies sur une touche du clavier, "ProcessCmdKey" est la
première fonction qui est appelé avant quel soit traité...
Si cette fonction renvoie false, la touche sera envoyé à diverses
évenement (KeyPress, KeyDown, ...etc) uniquement si celle-ci n'est pas
une touche de "commande" (Alt, Ctrl, ...etc).

Pour connaitre la valeur de la touche gauche ou droite lance dans un
premier temps ton programme avec :

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
MessageBox.Show(msg.WParam);
return base.ProcessCmdKey(ref msg, keyData);
}

Afin de trouver la valeur entière correspondante à (ou aux) touche(s)
qui t'interresse(nt).

Cordialement

--
Gilles TOURREAU
Responsable informatique


Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr