2010-11-29 6 views
1

Dans une application où je dois manipuler différemment beaucoup de clés, je veux gérer tous les cas dans WM_KEYDOWN et ne pas utiliser WM_CHAR du tout. Est-il possible d'obtenir le caractère ASCII/UNICODE correct à partir d'une séquence de clés virtuelles fournies par WM_KEYDOWN au lieu de se fier à TranslateMsg/WM_CHAR plus régulier? Par exemple: l'application devrait être capable de gérer Shift-B d'une manière totalement différente de celle d'un B normal de CTRL-B. En utilisant MapVirtualKey, vous n'utilisez pas l'état des touches Maj, Ctrl et Alt, ou du moins pas que je puisse voir. Comme Leo Davidson a répondu: vous pouvez utiliser l'appel ToUnicode pour effectuer vous-même la conversion VK -> Unicode.Obtention du caractère Unicode dans WM_KEYDOWN

Répondre

6

WM_KEYDOWN traite des codes de caractères, ce qui signifie essentiellement des touches physiques sur le clavier.

Si vous souhaitez gérer les caractères Unicode, saisissez WM_CHAR (caractères Unicode 16 bits, en supposant que votre fenêtre est elle-même unicode) ou WM_UNICHAR (caractères Unicode 32 bits).

EDIT: Si vous souhaitez effectuer vous-même la conversion, utilisez l'API ToUnicode.

+2

Ce que je sais. J'ai posé la question pour voir si la logique de TranslateMsg qui envoie le WM_CHAR est également obtenue en utilisant un autre chemin n'utilisant pas de messages Windows (comme un appel API) –

+0

@Ritsaert Hornstra: Assez juste. Voir ma modification. –

+1

Cela semble prometteur: va l'essayer directement! Apprendre un nouvel appel WinAPI tous les jours .. –

Questions connexes