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 |
---|---|
|
La frappe n’a pas été utilisée. |
|
Le pointeur spécifié n’est pas valide. |
|
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 |