Méthode IPreviewHandler::TranslateAccelerator (shobjidl_core.h)

Indique au gestionnaire d’aperçu de gérer une frappe transmise à partir de la pompe de messages du processus dans lequel le gestionnaire d’aperçu est en cours d’exécution.

Syntaxe

HRESULT TranslateAccelerator(
  [in] MSG *pmsg
);

Paramètres

[in] pmsg

Type : MSG*

Pointeur vers un message de fenêtre.

Valeur retournée

Type : HRESULT

Si le message de frappe peut être traité par le gestionnaire d’aperçu, celui-ci le traite et retourne S_OK. Si le gestionnaire d’aperçu ne peut pas traiter le message de frappe, il l’offre à l’hôte à l’aide de TranslateAccelerator. Si l’hôte traite le message, cette méthode retourne S_OK. Si l’hôte ne traite pas le message, cette méthode retourne S_FALSE.

Remarques

Cette fonction est appelée uniquement à partir de la pompe de messages du processus dans lequel le gestionnaire d’aperçu est en cours d’exécution. Cette fonction permet de transférer des messages de frappe de la pompe de messages vers l’hôte à l’aide de TranslateAccelerator.

Lorsque le gestionnaire d’aperçu reçoit un message (une frappe) de sa pompe de messages, il est responsable de le transférer à son hôte.

Lorsque IObjectWithSite::SetSite est appelé sur le gestionnaire d’aperçu, une référence à l’hôte du gestionnaire d’aperçu est transmise. L’objet doit immédiatement interroger ce site pour IPreviewHandlerFrame et stocker ce pointeur.

Le gestionnaire d’aperçu a ensuite la possibilité d’appeler GetWindowContext pour obtenir une table d’accélérateur pour filtrer les frappes. L’aperçu peut ensuite comparer les frappes à cette table d’accélérateur à l’aide d’IsAccelerator et appeler uniquement IPreviewHandler::TranslateAccelerator pour les frappes qui correspondent. Cela peut entraîner une légère augmentation des performances. Le gestionnaire d’aperçu doit libérer la table d’accélérateur à l’aide de la fonction DestroyAcceleratorTable .

Il est également acceptable pour le gestionnaire d’aperçu d’éviter d’utiliser la table et d’appeler IPreviewHandler::TranslateAccelerator pour chaque frappe. Notez que tous les gestionnaires d’aperçu s’exécutant dans des processus à faible intégrité doivent utiliser cette méthode.

Lorsqu’une touche tabulation est enfoncée, si un gestionnaire d’aperçu a plusieurs taquets de tabulation, il est responsable du déplacement du focus du clavier dans ces taquets de tabulation. Si le focus actuel du clavier se trouve sur l’un de ces taquets de tabulation et que le fait de le faire avancer le focus du clavier le déplace vers un autre taquet de tabulation de l’aperçu, l’aperçueur doit appeler SetFocus sur le taquet de tabulation suivant. Sinon, la touche tabulation doit être transférée à l’hôte pour gérer la tabulation hors de l’aperçu.

Configuration requise

   
Client minimal pris en charge Windows Vista, Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête shobjidl_core.h (inclure Shobjidl.h)
Composant redistribuable Windows Search 4 ou version ultérieure