Interception des signaux liée au boutons du clavier

pekeeTeam Messages postés 7 Date d'inscription jeudi 10 février 2005 Statut Membre Dernière intervention 15 janvier 2006 - 10 févr. 2005 à 14:44
pekeeTeam Messages postés 7 Date d'inscription jeudi 10 février 2005 Statut Membre Dernière intervention 15 janvier 2006 - 10 mars 2005 à 13:40
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

yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
10 févr. 2005 à 19:02
Salut pekeeTeam,

t'as essayé avec le message WM_KEYDOWN ?

YOYO, @+.
YOYO
0
boumarsel Messages postés 298 Date d'inscription jeudi 12 juin 2003 Statut Membre Dernière intervention 9 juillet 2008 1
13 févr. 2005 à 16:41
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
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
13 févr. 2005 à 19:26
Pourtant il me semble bien qu'on peut avec WM_KEYDOWN.
A moins que ça soit avec WM_CHAR.

YOYO, @+.
YOYO
0
boumarsel Messages postés 298 Date d'inscription jeudi 12 juin 2003 Statut Membre Dernière intervention 9 juillet 2008 1
15 févr. 2005 à 09:55
OnKeyDown en MFC == l'interception de WM_KEYDOWN
ne pose pas de commentaires aux sujets que tu n'en pige rien
++
0

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

Posez votre question
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
15 févr. 2005 à 11:16
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
0
pekeeTeam Messages postés 7 Date d'inscription jeudi 10 février 2005 Statut Membre Dernière intervention 15 janvier 2006
15 févr. 2005 à 17:31
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
0
boumarsel Messages postés 298 Date d'inscription jeudi 12 juin 2003 Statut Membre Dernière intervention 9 juillet 2008 1
18 févr. 2005 à 18:16
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);
}
0
boumarsel Messages postés 298 Date d'inscription jeudi 12 juin 2003 Statut Membre Dernière intervention 9 juillet 2008 1
18 févr. 2005 à 18:39
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
++
0
pekeeTeam Messages postés 7 Date d'inscription jeudi 10 février 2005 Statut Membre Dernière intervention 15 janvier 2006
28 févr. 2005 à 15:32
?????
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
0
boumarsel Messages postés 298 Date d'inscription jeudi 12 juin 2003 Statut Membre Dernière intervention 9 juillet 2008 1
28 févr. 2005 à 15:43
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
++
0
pekeeTeam Messages postés 7 Date d'inscription jeudi 10 février 2005 Statut Membre Dernière intervention 15 janvier 2006
10 mars 2005 à 13:40
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
0
Rejoignez-nous