Personnalisation de clavier et de souris

MFC permet à l'utilisateur de votre application pour personnaliser la façon dont il gère l'entrée au clavier et à la souris.l'utilisateur peut personnaliser l'entrée au clavier en assignant des raccourcis clavier aux commandes.L'utilisateur peut également personnaliser les entrées de la souris en sélectionnant la commande qui doit être exécutée lorsque l'utilisateur double-clique à l'intérieur de les fenêtres spécifiques de l'application.Cette rubrique explique comment personnaliser l'entrée pour votre application.

Dans la boîte de dialogue Personnalisation , l'utilisateur peut modifier les contrôles personnalisés pour la souris et du clavier.Pour afficher cette boîte de dialogue, l'utilisateur pointe sur Personnaliser dans le menu Afficher puis cliquez sur barres d'outils et ancrage.Dans la boîte de dialogue, que l'utilisateur clique sur l'onglet Clavier ou l'onglet Souris .

Personnalisation de clavier

l'illustration suivante montre l'onglet Clavier de la boîte de dialogue Personnalisation .

Onglet de personnalisation de clavier

Onglet Clavier de la boîte de dialogue Personnalisation

l'utilisateur interagit avec l'onglet de clavier pour assigner un ou plusieurs raccourcis clavier à une commande.Les commandes disponibles sont répertoriées sur le côté gauche de l'onglet.L'utilisateur peut sélectionner n'importe quelle commande disponible dans le menu.Seuls les commandes de menu peuvent être associées à un raccourci clavier.Une fois que l'utilisateur entre dans un nouveau raccourci, le bouton Assigner devient actif.Lorsque l'utilisateur clique sur ce bouton, l'application associe la commande sélectionnée avec celle raccourci.

Tous les raccourcis clavier actuellement assignés sont répertoriés dans la zone de liste dans la colonne de droite.L'utilisateur peut également sélectionner des raccourcis et les supprimer, ou de réinitialiser tous les mappages de l'application.

Si vous souhaitez prendre en charge cette personnalisation dans votre application, vous devez créer un objet de CKeyboardManager .Pour créer un objet de CKeyboardManager , appelez la fonction CWinAppEx::InitKeyboardManager.Cette méthode crée et initialise un gestionnaire de clavier.Si vous créez un gestionnaire de clavier manuellement, vous devez toujours appeler CWinAppEx::InitKeyboardManager de l'initialiser.

Si vous utilisez l'Assistant pour créer votre application, l'Assistant initialisera le gestionnaire de clavier.Une fois que votre application initialise le gestionnaire de clavier, l'infrastructure ajoute un onglet Clavier à la boîte de dialogue Personnalisation .

Personnalisation de la souris

l'illustration suivante montre l'onglet Souris de la boîte de dialogue Personnalisation .

Onglet de personnalisation de la souris

Onglet Souris de la boîte de dialogue Personnalisation

L'utilisateur interagit avec cet onglet pour assigner une commande de menu à l'action de double-clic de la souris.L'utilisateur sélectionne une vue sur le côté gauche de la fenêtre puis utilise ces contrôles latérale pour associer une commande avec l'action de double-clic.Lorsque l'utilisateur clique sur Fermer, l'application s'exécute la commande associée à chaque fois que l'utilisateur double-clique dans la vue.

Par défaut, la personnalisation de la souris n'est pas activée lorsque vous créez une application à l'aide de l'Assistant.

Pour activer la personnalisation de la souris

  1. Initialise un objet de CMouseManager en appelant CWinAppEx::InitMouseManager.

  2. Obtient un pointeur vers le gestionnaire de la souris à l'aide de CWinAppEx::GetMouseManager.

  3. Ajouter des affichages au gestionnaire de souris à l'aide de la méthode de CMouseManager::AddView .Procédez comme suit pour chaque vue que vous souhaitez ajouter au gestionnaire de souris.

Une fois que votre application initialise le gestionnaire de la souris, l'infrastructure ajoute l'onglet Souris à la boîte de dialogue Personnaliser .Si vous n'ajoutez pas de vue, l'accès de l'onglet entraîne une exception non gérée.Après avoir créé une liste de vues, l'onglet Souris est disponible à l'utilisateur.

Lorsque vous ajoutez une nouvelle vue au gestionnaire de souris, donnez -lui un ID uniqueSi vous souhaitez prendre en charge la personnalisation de la souris pour une fenêtre, vous devez gérer le message d' WM_LBUTTONDBLCLICK et appeler la fonction de CWinAppEx::OnViewDoubleClick .Lorsque vous appelez cette fonction, l'un des paramètres est l'ID pour cette fenêtre.Il est de la responsabilité du programmeur de gérer les numéros d'ID et les objets associés.

Considérations relatives à la sécurité

Comme décrit dans Outils définis par l'utilisateur, l'utilisateur peut associer un ID d'outil défini par l'utilisateur avec l'événement double-clic.Lorsque l'utilisateur double-clique sur une vue, l'application recherche un outil d'utilisateur qui correspond à l'identification associéeSi l'application recherche un outil correspondant, il exécute l'outil.Si l'application ne peut pas trouver un outil correspondant, elle envoie un message WM_COMMAND avec l'ID à la vue qui a été double-cliquez sur.

Les paramètres personnalisés sont stockés dans le Registre.En modifiant le Registre, un agresseur peut remplacer un ID d'outil d'utilisateur valide par un ordre arbitraire.Lorsque l'utilisateur double-clique sur une vue, la vue traite la commande que l'intrus a plantée.Cela peut provoquer un comportement inattendu et non sécurisé.

En outre, ce type d'attaque peut ignorer des protections d'interface utilisateur.Par exemple, supposons qu'une application a l'impression désactivée.Autrement dit, dans son interface utilisateur, le menu Imprimer et le bouton ne sont pas disponibles.Normalement cela empêché l'application de l'impression.Mais si un intrus modifiait le Registre, un utilisateur peut maintenant peut envoyer la commande d'impression directement en double-cliquant sur la vue, sautant les éléments de l'interface utilisateur qui ne sont pas disponibles.

Afin de se protéger contre ce type d'attaque, ajoutez du code à votre gestionnaire de commandes d'application pour vérifier qu'une commande sont valides avant qu'elle ne soit exécutée.Ne dépendent pas de l'interface utilisateur pour empêcher une commande d'être envoyé à l'application.

Voir aussi

Référence

CKeyboardManager, classe

CMouseManager, classe

Concepts

Personnalisation de MFC

Implications sur la sécurité de la personnalisation