2010-02-10 3 views
1

Comment pourrais-je capturer l'utilisateur en appuyant sur Ctrl deux fois (Ctrl +Ctrl) dans le monde. Je veux pouvoir masquer ma fenêtre d'application et la rendre visible lorsque l'utilisateur l'appelle avec les touches CtrlCtrl appuyant sur une touche similaire à Google Quick Search Box. L'utilisateur peut avoir mis l'accent sur une fenêtre différente. J'ai regardé RegisterHotKey, mais cela semble être pour MODIFIERS + character key à moins que je me trompe.Comment capturer les touches CTRL + CTRL dans mon application Win32?

Répondre

3

Pour créer un raccourci clavier, faites ceci:

ATOM hotkey = GlobalAddAtom("Your hotkey atom name"); 
if(hotkey) RegisterHotKey(hwnd, hotkey, MOD_CONTROL, VK_CONTROL); 
else { ...error... } 

Et puis traiter le message WM_HOTKEY:

case WM_HOTKEY: 
    if(wParam == hotkey) 
    { 
     // CTRL pressed!!! 
    } 
break; 

Je suppose que vous allez comprendre vous-même que vous devez stocker si le La touche CTRL a été enfoncée avant. Par exemple, s'il a été appuyé une fois au cours des 500 dernières ms et que l'utilisateur l'appuie à nouveau, vous avez une pression sur CTRL + CTRL.

+0

Où se produit le débrayage des clés? –

+2

Mieux vaut utiliser GetDoubleClickTime (http://msdn.microsoft.com/en-us/library/ms646258(VS.85).aspx) que hard-code dans 500. – Bill

+0

@Thomas Matthews: Je ne vois pas trop quoi vous voulez dire, nous avons seulement besoin de l'événement pressé vers le bas ici, qui est 'WM_HOTKEY'. – AndiDog

Questions connexes