[keyboard] attente windows message

Résolu
andejen Messages postés 148 Date d'inscription jeudi 9 juin 2005 Statut Membre Dernière intervention 30 juillet 2008 - 31 janv. 2007 à 10:20
andejen Messages postés 148 Date d'inscription jeudi 9 juin 2005 Statut Membre Dernière intervention 30 juillet 2008 - 31 janv. 2007 à 15:07
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

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
31 janv. 2007 à 15:03
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
3
andejen Messages postés 148 Date d'inscription jeudi 9 juin 2005 Statut Membre Dernière intervention 30 juillet 2008
31 janv. 2007 à 15:07
ok merci bcp pour cette reponse je vais me pencher sur la realisation d' un hook des ce soir.
0
Rejoignez-nous