2010-07-03 4 views
3

J'ai développé une application MFC à l'aide de VS2008 et du Feature Pack MFC. Cette interface utilisateur de l'application utilise un ruban. J'ai maintenant besoin de F10 comme raccourci approprié pour l'une des fonctionnalités critiques de mon application, mais il semble que je ne puisse pas configurer l'accélérateur correctement car il utilise toujours l'accélérateur de ruban par défaut sur le mien.Comment utiliser F10 en tant que raccourci dans une application MFC à l'aide d'un ruban

Une idée de comment y parvenir?

Répondre

0

Je suppose que vous avez déjà essayé d'enregistrer un raccourci clavier. La façon canonique d'obtenir la frappe est d'utiliser SetWindowsHookEx, pour le thread principal de votre application. Les hooks Windows globaux sont chargés, et la restriction de sécurité sur l'accrochage dans Vista/Win7/Server 2008 les a rendus beaucoup moins utiles de toute façon. Mais un hook spécifique au processus serait bien - et n'aurait pas besoin d'être dans une DLL.

0

Avez-vous essayé d'ajouter un gestionnaire pour WM_SYSKEYDOWN et de vérifier le code de message pour une valeur wParam de VK_F10? F10 nécessite une manipulation spéciale car c'est l'ancienne alternative pour appuyer sur la touche Alt pour ouvrir la barre de menu sous le contrôle du clavier.

0

J'ai rencontré le même problème et l'ai résolu en ajoutant la méthode suivante: virtual BOOL PreTranslateMessage (MSG * pMsg);

BOOL CMyView::PreTranslateMessage(MSG* pMsg) 
{ 
    if ((pMsg->message == WM_SYSKEYDOWN) && (pMsg->wParam == VK_F10)) 
    { 
     OnMyAction(); //code on F10 
     return TRUE; 
    } 
    return CView::PreTranslateMessage(pMsg); 
} 
Questions connexes