[keyboard] attente windows message [Résolu]

Signaler
Messages postés
148
Date d'inscription
jeudi 9 juin 2005
Statut
Membre
Dernière intervention
30 juillet 2008
-
Messages postés
148
Date d'inscription
jeudi 9 juin 2005
Statut
Membre
Dernière intervention
30 juillet 2008
-
Bonjour,

Je viens de creer une fonction assez simple qui me permet d'effectuer une action des que l'utilisateur tape une touche au clavier. Cependant, je n'arrive pas a recuperer le message WM_KEYDOWN.
J'aimerai recuperer ce message des lors que ma dialog box est active et ce quelque soit l'evenement en cours.
...
...

afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
...
...
BEGIN_MESSAGE_MAP(CAlpha3Dlg, CDialog)
    ON_WM_KEYDOWN()
END_MESSAGE_MAP()
...
...
void CAlpha3Dlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
    switch(nChar)
    {
    case VK_RETURN:
      action
        break;
    case VK_F1:
     action
        break;
    case VK_DELETE:
         action
        break;
    default:
         action
    }
UpdateData(false);
}


Pour l'instant meme lorsque le message WM_KEYDOWN est emis (observe avec spy +) il n'y a aucun passage dans ma fonction OnKeyDown() .
Auriez vous une idée du pourquoi du comment?

merci d'avance.

Adrien

2 réponses

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
C'est normal car c'est le controle (bouton ou editbox)  ayant le focus qui reçoit WM_KEYDOWN. Pour résoudre le problème, tu as deux solutions:
1- Sous-classer les controles pour intercepter le message WM_KEYDOWN et le renvoyer à la boite mère.
2- Utiliser un hook comme dans ce code source:HOOK-ENTER-SUR-DIALOGBOX
Messages postés
148
Date d'inscription
jeudi 9 juin 2005
Statut
Membre
Dernière intervention
30 juillet 2008

ok merci bcp pour cette reponse je vais me pencher sur la realisation d' un hook des ce soir.