2010-12-04 34 views
4

Je veux intercepter les touches qui sont activées lorsque l'un de mes dialogues s'afficheComment gérer une touche dans MFC?

+0

Plus d'informations nécessaires – Craig

+0

@Craig: Quelle information? – Casebash

+0

Langue, plate-forme, etc. MVC est générique et utilisé sur le Web, Windows, les appareils mobiles. Je peux facilement vous donner et répondre pour ASP.NET MVC mais je n'ai aucune idée si c'est ce que vous voulez. – Craig

Répondre

4

Configurez des accélérateurs qui envoient le WM_COMMAND approprié ou répondent aux messages WM_KEYDOWN/UP et surveillent vos touches.

Plus d'infos ici:

http://www.codeproject.com/KB/dialog/pretransdialog01.aspx

Et le code utile de cet article:

BOOL CPreTransTestDlg::PreTranslateMessage(MSG* pMsg) 
{ 
    if(pMsg->message==WM_KEYDOWN) 
    { 
     if(pMsg->wParam==VK_RETURN) 
      pMsg->wParam=VK_TAB; 
    } 
    return CDialog::PreTranslateMessage(pMsg); 
} 
+0

Pour l'adapter à d'autres touches, consultez [WINUSER.H] (http://www.woodmann.com/fravia/sources/WINUSER.H) – Casebash

1

Vous devriez regarder dans hooking keyboard events. c'est un lien CodeGuru mais il y a beaucoup, beaucoup de ressources disponibles lorsque vous Google pour How to hook keyboard events with MFC.

Qu'est-ce que vous Je trouverai dans ces articles que le clavier et/ou l'accrochage d'événements est la terminologie de choix. "Intercept" est utilisé pour décrire le processus. Et une note de plus: Faites attention où vous accrochez! Vous pouvez vous connecter à votre boîte de dialogue ou à plusieurs autres niveaux. (Btw, les enregistreurs de frappe sont des chevaux de Troie bien connus qui emploient cette tactique.)

+0

Merci. Je n'étais probablement pas clair, mais j'essaie d'intercepter les touches d'une boîte de dialogue que je crée, pas celle d'un autre programme. Je veux pouvoir activer facilement les fonctions de débogage – Casebash

+0

L'accrochage au clavier fonctionnera que la fenêtre cible soit créée ou non. Le processus est généralement utilisé pour accrocher d'autres fenêtres, mais peut être utilisé pour accrocher les vôtres. –