Share via


Fonction ToAsciiEx (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 l’identificateur de paramètres régionaux.

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 ToAsciiEx(
  [in]           UINT       uVirtKey,
  [in]           UINT       uScanCode,
  [in, optional] const BYTE *lpKeyState,
  [out]          LPWORD     lpChar,
  [in]           UINT       uFlags,
  [in, optional] HKL        dwhkl
);

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 SCOLL 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, zéro dans le cas contraire.

[in, optional] dwhkl

Type : HKL

Identificateur de paramètres régionaux d’entrée à utiliser pour traduire le code. Ce paramètre peut être n’importe quel identificateur de paramètres régionaux d’entrée précédemment retourné par la fonction LoadKeyboardLayout .

Valeur retournée

Type : int

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

Valeur retournée 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

L’identificateur de paramètres régionaux d’entrée est un concept plus large qu’une disposition de clavier, car il peut également englober un convertisseur de reconnaissance vocale, un éditeur de méthode d’entrée (IME) ou toute autre forme d’entrée.

Les paramètres fournis à la fonction ToAsciiEx peuvent ne pas suffire à traduire le code de la clé virtuelle, car une clé morte précédente est stockée dans la disposition du clavier.

En règle générale, ToAsciiEx 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 ALT+nombre.

Bien que NUM LOCK soit une touche bascule qui affecte le comportement du clavier, ToAsciiEx ignore le paramètre bascule (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

LoadKeyboardLayout

MapVirtualKeyEx

Référence

ToUnicodeEx

VkKeyScan