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.

Syntaxe

int ToAscii(
  [in]           UINT       uVirtKey,
  [in]           UINT       uScanCode,
  [in, optional] const BYTE *lpKeyState,
  [out]          LPWORD     lpChar,
  [in]           UINT       uFlags
);

Paramètres

[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.

Valeur de retour

Type : int

La valeur de retour est l’une des valeurs suivantes.

Valeur de retour Description
0
La clé virtuelle spécifiée n’a aucune traduction pour l’état actuel du clavier.
1
Un caractère a été copié dans la mémoire tampon.
2
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.

Notes

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).

Configuration requise

   
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

Entrées du clavier

OemKeyScan

Référence

ToAsciiEx

ToUnicode

VkKeyScan