Fonction TranslateAcceleratorA (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 de 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érateur 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 retournée
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étaillées sur l’erreur, appelez GetLastError.
Remarques
Pour différencier le message que cette fonction envoie des messages envoyés par des menus ou des contrôles, le mot d’ordre supérieur 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 le menu de 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 ne doit pas nécessairement 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 du menu de la fenêtre 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 correspondant à un élément de menu se produit lorsque la fenêtre qui possède le menu est réduite, TranslateAccelerator n’envoie pas de message WM_COMMAND . Toutefois, si une séquence de touches d’accélérateur ne correspond à aucun des éléments du menu de la fenêtre ou du menu de la fenêtre , 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.
Notes
L’en-tête winuser.h définit TranslateAccelerator comme un 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. La combinaison 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.
Configuration requise
Condition requise | Valeur |
---|---|
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 | winuser.h (inclure Windows.h) |
Bibliothèque | User32.lib |
DLL | User32.dll |
Voir aussi
Conceptuel
Référence