Partager via


TranslateAcceleratorA, fonction (winuser.h)

Traite les touches d’accélérateur pour les commandes de menu. La fonction traduit un message WM_KEYDOWN ou WM_SYSKEYDOWN en message WM_COMMAND ou WM_SYSCOMMAND (s’il existe une entrée pour la clé dans la table d’accélérateurs spécifiée), puis envoie le message WM_COMMAND ou WM_SYSCOMMAND directement à la procédure de fenêtre spécifiée. TranslateAccelerator ne retourne pas tant que la procédure de fenêtre n’a pas traité le message.

Syntaxe

int TranslateAcceleratorA(
  [in] HWND   hWnd,
  [in] HACCEL hAccTable,
  [in] LPMSG  lpMsg
);

Paramètres

[in] hWnd

Type : HWND

Handle vers la fenêtre dont les messages doivent être traduits.

[in] hAccTable

Type : HACCEL

Handle de la table d’accélérateurs. La table d’accélérateurs doit avoir été chargée par un appel à la fonction LoadAccelerators ou créée par un appel à la fonction CreateAcceleratorTable.

[in] lpMsg

Type : LPMSG

Pointeur vers une structure MSG qui contient des informations de message récupérées à partir de la file d’attente de messages du thread appelant à l’aide de la fonction GetMessage ou PeekMessage.

Valeur de retour

Type : int

Si la fonction réussit, la valeur de retour est différente de zéro.

Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations d’erreur étendues, appelez GetLastError.

Remarques

Pour différencier le message envoyé par cette fonction à partir de messages envoyés par menus ou contrôles, le mot de classement élevé du paramètre wParam du message WM_COMMAND ou WM_SYSCOMMAND contient la valeur 1.

Les combinaisons de touches d’accélérateur utilisées pour sélectionner des éléments dans la fenêtre sont traduites en messages WM_SYSCOMMAND ; toutes les autres combinaisons de touches d’accélérateur sont traduites en messages WM_COMMAND.

Lorsque TranslateAccelerator retourne une valeur différente de zéro et que le message est traduit, l’application ne doit pas utiliser la fonction TranslateMessage pour traiter à nouveau le message.

Un accélérateur n’a pas besoin de correspondre à une commande de menu.

Si la commande accélérateur correspond à un élément de menu, l’application est envoyée WM_INITMENU et WM_INITMENUPOPUP messages, comme si l’utilisateur essayait d’afficher le menu. Toutefois, ces messages ne sont pas envoyés si l’une des conditions suivantes existe :

  • La fenêtre est désactivée.
  • La combinaison de touches d’accélérateur ne correspond pas à un élément de la fenêtre menu et la fenêtre est réduite.
  • Une capture de souris est en vigueur. Pour plus d’informations sur la capture de souris, consultez la fonction SetCapture.
Si la fenêtre spécifiée est la fenêtre active et qu’aucune fenêtre n’a le focus clavier (ce qui est généralement le cas si la fenêtre est réduite), TranslateAccelerator traduit WM_SYSKEYUP et WM_SYSKEYDOWN messages au lieu de WM_KEYUP et de messages WM_KEYDOWN.

Si une séquence de touches d’accélérateur se produit qui correspond à un élément de menu lorsque la fenêtre propriétaire du menu est réduite, TranslateAccelerator n’envoie pas de message WM_COMMAND. Toutefois, si une séquence de touches d’accélérateur se produit qui ne correspond à aucun des éléments du menu de la fenêtre ou dans le menu , la fonction envoie un message WM_COMMAND, même si la fenêtre est réduite.

Exemples

Pour obtenir un exemple, consultez Création d’accélérateurs pour les attributs de police.

Note

L’en-tête winuser.h définit TranslateAccelerator comme alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Exigences

Exigence Valeur
client minimum pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
serveur minimum pris en charge Windows 2000 Server [applications de bureau uniquement]
plateforme cible Windows
d’en-tête winuser.h (include Windows.h)
bibliothèque User32.lib
DLL User32.dll

Voir aussi

conceptuelle

CreateAcceleratorTable

GetMessage

accélérateurs clavier

LoadAccelerators

msg

PeekMessage

de référence

setCapture

TranslateMessage

WM_COMMAND

WM_INITMENU

WM_INITMENUPOPUP

WM_KEYDOWN

WM_SYSCOMMAND

WM_SYSKEYDOWN