Partager via


Fonction ToUnicodeEx (winuser.h)

Traduit le code de touche virtuelle et l’état du clavier spécifiés en caractères Unicode ou caractères Unicode correspondants.

Syntaxe

int ToUnicodeEx(
  [in]           UINT       wVirtKey,
  [in]           UINT       wScanCode,
  [in]           const BYTE *lpKeyState,
  [out]          LPWSTR     pwszBuff,
  [in]           int        cchBuff,
  [in]           UINT       wFlags,
  [in, optional] HKL        dwhkl
);

Paramètres

[in] wVirtKey

Type : uiNT

Code de clé virtuelle à traduire. Consultez Virtual-Key codes.

[in] wScanCode

Type : uiNT

Le matériel code d’analyse de la clé à traduire. Le bit d’ordre élevé de cette valeur est défini si la clé est en cours.

[in] 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 clé est en panne. 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é CAPS LOCK est pertinent. L’état bascule des touches NUM LOCK et SCROLL LOCK est ignoré. Pour plus d’informations, consultez GetKeyboardState.

[out] pwszBuff

Type : LPWSTR

Mémoire tampon qui reçoit le caractère ou les caractères traduits sous forme de tableau d’unités de code UTF-16. Cette mémoire tampon peut être retournée sans être terminée par null, même si le nom de la variable suggère qu’elle est terminée par null. Vous pouvez utiliser la valeur de retour de cette méthode pour déterminer le nombre de caractères écrits.

[in] cchBuff

Type : int

Taille, en caractères, de la mémoire tampon pointée par le paramètre pwszBuff.

[in] wFlags

Type : uiNT

Comportement de la fonction.

Si le bit 0 est défini, un menu est actif. Dans ce mode combinaisons de touches Alt+Numeric ne sont pas gérées.

Si le bit 1 est défini, ToUnicodeEx traduit les codes d’analyse marqués comme des événements de saut de clé en plus de son traitement habituel des événements de création de clés.

Si le bit 2 est défini, l’état du clavier n’est pas modifié (Windows 10, version 1607 et ultérieure)

Tous les autres bits (à 31) sont réservés.

[in, optional] dwhkl

Type : HKL

Identificateur de paramètres régionaux d’entrée utilisé pour traduire le code spécifié. 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 de retour

Type : int

La fonction retourne l’une des valeurs suivantes.

Valeur de retour Description
valeur < 0
La clé virtuelle spécifiée est une clé morte caractère (accentuation ou diacritique). Cette valeur est retournée indépendamment de la disposition du clavier, même si plusieurs caractères ont été tapés et sont stockés dans l’état du clavier. Si possible, même avec des dispositions de clavier Unicode, la fonction a écrit une version d’espacement du caractère de touche morte dans la mémoire tampon spécifiée par pwszBuff. Par exemple, la fonction écrit le caractère ACCENT AIGU (U+00B4) au lieu du caractère COMBINING ACUTE ACCENT (U+0301).
0
La clé virtuelle spécifiée n’a aucune traduction pour l’état actuel du clavier. Rien n’a été écrit dans la mémoire tampon spécifiée par pwszBuff.
valeur > 0
Une ou plusieurs unités de code UTF-16 ont été écrites dans la mémoire tampon spécifiée par pwszBuff. Retourné pwszBuff peut contenir plus de caractères que la valeur de retour spécifiée. Lorsque cela se produit, tous les caractères supplémentaires ne sont pas valides et doivent être ignorés.

Remarques

L’identificateur des 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.

Certaines dispositions de clavier peuvent retourner plusieurs caractères et/ou caractères supplémentaires en tant que paires de substitution dans pwszBuff. Si le caractère de touche morte (accentuation ou diacritique) stocké dans la disposition du clavier n’a pas pu être combiné avec la touche virtuelle spécifiée pour former un caractère unique, le caractère mort entré précédent peut être combiné avec le caractère actuel.

Les paramètres fournis à la fonction ToUnicodeEx peuvent ne pas suffire 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, ToUnicodeEx effectue la traduction en fonction du code de clé virtuelle. Dans certains cas, toutefois, le bit 15 du paramètre wScanCode peut être utilisé pour faire la distinction entre une touche d’appui et une mise en production de touches (par exemple, pour l’entrée de touche ALT+numpad).

Comme ToUnicodeEx traduit le code de clé virtuelle, il modifie également l’état de la mémoire tampon du clavier en mode noyau. Cette modification d’état affecte les touches mortes, les ligatures, Alt+Pavé numérique entrée de touche, et ainsi de suite. Il peut également provoquer des effets secondaires indésirables non souhaités s’ils sont utilisés conjointement avec TranslateMessage (qui modifie également l’état de la mémoire tampon du clavier en mode noyau).

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

d’entrée clavier

LoadKeyboardLayout

de référence

ToAsciiEx

VkKeyScan