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
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
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 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
de référence