Gestion du clavier pour les contrôles

Un contrôle répond aux accélérateurs de clavier afin que l’utilisateur final puisse lancer des actions effectuées par le contrôle. Le conteneur gère l’activité du clavier pour tous ses contrôles incorporés. Avec les documents composés, les accélérateurs de clavier s’appliquent uniquement à l’objet actuellement actif. Avec les contrôles, un mécanisme a été ajouté afin qu’un contrôle puisse répondre à la mnémonique de son clavier, même s’il n’est pas actuellement actif avec l’interface utilisateur.

Les méthodes IOleControl::GetControlInfo et IOleControl::OnMnemonic et la méthode IOleControlSite::OnControlInfoChanged gèrent les mnémoniques du clavier d’un contrôle. Une structure CONTROLINFO décrit les accélérateurs mnémoniques d’un contrôle, et les indicateurs passés avec celui-ci via la méthode GetControlInfo décrivent le comportement des contrôles avec les touches Entrée et Échap. Lorsqu’un contrôle modifie ses mnémoniques, il appelle OnControlInfoChanged afin que le conteneur puisse recharger la structure si nécessaire.

Lorsqu’un contrôle est actif dans l’interface utilisateur, il s’agit également du contrôle avec le focus. Comme les contrôles sont activés et désactivés entre l’état actif sur place et l’état actif de l’interface utilisateur, le contrôle appelle IOleControlSite::OnFocus pour indiquer au conteneur ces modifications.

En outre, lorsqu’un contrôle est actif dans l’interface utilisateur, il a la première chance de traiter les frappes. Pour permettre à un conteneur de traiter la frappe avant le contrôle, le contrôle appelle IOleControlSite::TranslateAccelerator. Si le conteneur ne gère pas la frappe, le contrôle la traite.

Contrôles ActiveX