Partager via


IOleInPlaceFrame::TranslateAccelerator, méthode (oleidl.h)

Traduit les frappes d’accélérateur destinées à l’image du conteneur lorsqu’un objet est actif sur place.

Syntaxe

HRESULT TranslateAccelerator(
  [in] LPMSG lpmsg,
  [in] WORD  wID
);

Paramètres

[in] lpmsg

Pointeur vers la structure MSG qui contient le message de frappe.

[in] wID

Valeur d’identificateur de commande correspondant à la frappe dans la table d’accélérateur fournie par le conteneur. Les conteneurs doivent utiliser cette valeur au lieu de traduire à nouveau.

Valeur retournée

Cette méthode retourne S_OK en cas de réussite. Les autres valeurs de retour possibles sont les suivantes.

Code de retour Description
S_FALSE
La frappe n’a pas été utilisée.
E_INVALIDARG
Le pointeur spécifié n’est pas valide.
E_UNEXPECTED
Une erreur inattendue s’est produite.

Notes

Notes aux appelants

La méthode IOleInPlaceFrame::TranslateAccelerator est appelée indirectement par OleTranslateAccelerator lorsqu’un accélérateur de frappe destiné au conteneur (frame) est reçu.

Notes aux implémenteurs

L’application conteneur doit effectuer son traitement d’accélérateur habituel, ou utiliser directement wID , puis retourner, en indiquant si l’accélérateur de frappe a été traité. Si le conteneur est une application MDI et que la fonction TranslateAccelerator échoue, le conteneur peut appeler la fonction TranslateMDISysAccel , comme il le fait pour son traitement habituel des messages.

Les objets sur place doivent avoir la première chance de traduire des messages accélérateurs. Toutefois, étant donné que les objets implémentés par les applications d’objets DLL n’ont pas leur propre pompe de messages, ils reçoivent leurs messages à partir de la file d’attente de messages du conteneur. Pour s’assurer que l’objet a la première chance de traduire des messages, un conteneur doit toujours appeler IOleInPlaceFrame::TranslateAccelerator avant d’effectuer sa propre traduction d’accélérateur. Inversement, une application d’objet exécutable doit appeler OleTranslateAccelerator après avoir appelé TranslateAccelerator, appelant TranslateMessage et DispatchMessage uniquement si les deux fonctions de traduction échouent.

Vous devez définir des tables d’accélérateur pour les conteneurs afin qu’ils fonctionnent correctement avec les applications d’objets qui effectuent leurs propres traductions de frappe d’accélérateur. Les tables doivent être définies comme suit.

"char", wID, VIRTKEY, CONTROL

Il s’agit de la façon la plus courante de décrire les accélérateurs de clavier. Si vous ne le faites pas, des frappes sont perdues ou envoyées à l’objet incorrect pendant une session sur place.

Spécifications

   
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête oleidl.h

Voir aussi

IOleInPlaceFrame

IOleInPlaceFrame::TranslateAccelerator

OleTranslateAccelerator

TranslateAccelerator

TranslateMDISysAccel