ToAscii, fonction (winuser.h)
Traduit le code de touche virtuelle et l’état du clavier spécifiés en caractères correspondants. La fonction traduit le code à l’aide de la langue d’entrée et de la disposition physique du clavier identifiée par le handle de disposition du clavier.
Afin de spécifier un handle pour la disposition du clavier à utiliser pour traduire le code spécifié, utilisez la fonction ToAsciiEx.
Notes
Cette méthode peut ne pas fonctionner correctement avec certaines dispositions de clavier qui peuvent produire plusieurs caractères (c’est-à-dire des ligatures) et/ou des caractères Unicode supplémentaires sur une seule touche. Il est vivement recommandé d’utiliser les méthodes ToUnicode ou ToUnicodeEx qui gèrent correctement ces cas.
int ToAscii(
[in] UINT uVirtKey,
[in] UINT uScanCode,
[in, optional] const BYTE *lpKeyState,
[out] LPWORD lpChar,
[in] UINT uFlags
);
[in] uVirtKey
Type : UINT
Code de clé virtuelle à traduire. Consultez Codes de touche virtuelle.
[in] uScanCode
Type : UINT
Code d’analyse matérielle de la clé à traduire. Le bit d’ordre élevé de cette valeur est défini si la touche est activée (pas enfoncée).
[in, optional] lpKeyState
Type : const BYTE*
Pointeur vers un tableau de 256 octets qui contient l’état actuel du clavier. Chaque élément (octet) du tableau contient l’état d’une clé. Si le bit d’ordre élevé d’un octet est défini, la touche est enfoncée (enfoncée).
Le bit faible, s’il est défini, indique que la clé est activée. Dans cette fonction, seul le bit bascule de la clé DE VERROUILLAGE CAPS est pertinent. L’état bascule des touches NUM LOCK et SCROLL LOCK est ignoré.
[out] lpChar
Type : LPWORD
Pointeur vers la mémoire tampon qui reçoit le caractère traduit (ou deux caractères regroupés dans une seule valeur WORD , où l’octet de faible ordre contient le premier caractère et l’octet d’ordre élevé contient le deuxième caractère).
[in] uFlags
Type : UINT
Ce paramètre doit être 1 si un menu est actif, ou 0 dans le cas contraire.
Type : int
La valeur de retour est l’une des valeurs suivantes.
Valeur de retour | Description |
---|---|
|
La clé virtuelle spécifiée n’a aucune traduction pour l’état actuel du clavier. |
|
Un caractère a été copié dans la mémoire tampon. |
|
Deux caractères ont été copiés dans la mémoire tampon. Cela se produit généralement lorsqu’un caractère de touche morte (accentuation ou diacritique) stocké dans la disposition du clavier ne peut pas être composé avec la touche virtuelle spécifiée pour former un caractère unique. |
Les paramètres fournis à la fonction ToAscii peuvent ne pas être suffisants pour traduire le code de clé virtuelle, car une clé morte précédente est stockée dans la disposition du clavier.
En règle générale, ToAscii effectue la traduction en fonction du code de clé virtuelle. Dans certains cas, toutefois, le bit 15 du paramètre uScanCode peut être utilisé pour faire la distinction entre un appui sur la touche et une libération de touche. Le code d’analyse est utilisé pour traduire les combinaisons de touches numériques ALT+.
Bien que NUM LOCK soit une touche bascule qui affecte le comportement du clavier, ToAscii ignore le paramètre bascule (le bit faible) de lpKeyState (VK_NUMLOCK), car le paramètre uVirtKey seul suffit à distinguer les touches de déplacement du curseur (VK_HOME, VK_INSERT, etc.) des touches numériques (VK_DECIMAL, VK_NUMPAD0 - VK_NUMPAD9).
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 |
Conceptuel
Référence