Interception des signaux liée au boutons du clavier

Signaler
Messages postés
7
Date d'inscription
jeudi 10 février 2005
Statut
Membre
Dernière intervention
15 janvier 2006
-
Messages postés
7
Date d'inscription
jeudi 10 février 2005
Statut
Membre
Dernière intervention
15 janvier 2006
-
bonjours a tous et merci d'avance

voila mon problème :
je travaille sous visual C++ 4 embarqué cepandant le principe reste le mêm, je désire intercepter l'appui sur les touches directionnelles du clavier ainsi que la touche entrée.

Grace a Wizard j'ai obtenue le code suivant :

void CMessageBoutonDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}

mais après de nombreux éssai je n'arrive oas a l'utilisé
Si quelqu'un a une idée....
merci d'avance!

11 réponses

Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
Salut pekeeTeam,

t'as essayé avec le message WM_KEYDOWN ?

YOYO, @+.
YOYO
Messages postés
298
Date d'inscription
jeudi 12 juin 2003
Statut
Membre
Dernière intervention
9 juillet 2008
1
ce code ne fait aucun traitement, il ne fait que renvoyer le message à la classe de base pour en definir un traitement par defaut.
essai d'exploiter les parametres d'entree (nChar, nRepCnt, nFlags) il y en a tous les infos relatives à la touche appuiyée..etc
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
Pourtant il me semble bien qu'on peut avec WM_KEYDOWN.
A moins que ça soit avec WM_CHAR.

YOYO, @+.
YOYO
Messages postés
298
Date d'inscription
jeudi 12 juin 2003
Statut
Membre
Dernière intervention
9 juillet 2008
1
OnKeyDown en MFC == l'interception de WM_KEYDOWN
ne pose pas de commentaires aux sujets que tu n'en pige rien
++
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
Désolé boumarsel, mais je bosse sous Dev-C++ et je me sers des messages cités ci-dessus pour intercepter les messages clavier sur un RichEdit (en l'ayant préalablement sous-classée).
Et ça fonctionne nickel.

YOYO, @+.
YOYO
Messages postés
7
Date d'inscription
jeudi 10 février 2005
Statut
Membre
Dernière intervention
15 janvier 2006

alor j'ai un peu bosser sur le sujet et voila le résultat:
on peu intercepter le clavier aussi facilement que la souris le probleme
c'est le FOCUS
car si la fenetre est vide sans bouton sans rien faite le test ca marche
WM_ONKEYDOWN
cepandant si il y a un bouton ou autre le focus prend la main et intercepte tout
les message
le but a présent et de bloqué ce focus
voila merci a tous
Messages postés
298
Date d'inscription
jeudi 12 juin 2003
Statut
Membre
Dernière intervention
9 juillet 2008
1
NON, il y'a une autre solution:
BOOL CMessageBoutonDlg::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{

/*lParam:Pointer to a notification message (NMHDR) structure that contains the notification code and additional information. For some notification messages, this parameter points to a larger structure that has the NMHDR structure as its first member.*/

/*pour le code
NMHDR nmhdr;
if(nmhdr.code==WM_KEYDOW)
...
*/
return CDialog::OnNotify(wParam, lParam, pResult);
}
Messages postés
298
Date d'inscription
jeudi 12 juin 2003
Statut
Membre
Dernière intervention
9 juillet 2008
1
la proprieté 'parent notify ' de chaque controle de la bnoite doit etre true.
je sais pas si 'if(nmhdr.code==WM_KEYDOWN)' est juste
je pense que tu dois mettre if(nmhdr.code==WMN_KEYDOWN)
c'est juste l'idée, c'est à toi de chercher le reste
++
Messages postés
7
Date d'inscription
jeudi 10 février 2005
Statut
Membre
Dernière intervention
15 janvier 2006

?????
OnNotify je connait pas et visual non plus aparament esceque tu peut clarifier un peu
la chose
boumarcel car la je voi pas de quelle fonction ou interception de
message tu me parle....
merci a tous
Messages postés
298
Date d'inscription
jeudi 12 juin 2003
Statut
Membre
Dernière intervention
9 juillet 2008
1
je l'ai pas inventé, t'as bien remarqué le commentaire en anglais, je n'ai fait que copier/coller de la documentation MSDN, cherche bien dans l'assistant classWizard WM_NOTIFY se converti en CMessageBoutonDlg::OnNotify en MFC.
si tu n'arrive pas à regler le probleme, essai avec le HOOK sur clavier c'est la solution la plus utilisé et la plus sure pour intercepter les evenements de clavier quelque soit le controle qui a le focus...cherche dans la doc MSDN tu en trouvera tout
++
Messages postés
7
Date d'inscription
jeudi 10 février 2005
Statut
Membre
Dernière intervention
15 janvier 2006

voila la solution du moin je pence :
pour enlever le focus d'entrer il faut sur chaque objet de la fenetre listBox, Bouton, etc....
avec un click droit il faut d'écocher la case "TABSTOP"
voila
by bon courage a tous