Freigeben über


ToAscii-Funktion (winuser.h)

Übersetzt den angegebenen virtuellen Tastencode und den Tastaturzustand in die entsprechenden Zeichen. Die Funktion übersetzt den Code mithilfe der Eingabesprache und des physischen Tastaturlayouts, das durch das Tastaturlayouthandle identifiziert wird.

Verwenden Sie die ToAsciiEx-Funktion, um ein Handle für das Tastaturlayout anzugeben, das zum Übersetzen des angegebenen Codes verwendet werden soll.

Hinweis

Diese Methode funktioniert möglicherweise nicht ordnungsgemäß mit einigen Tastaturlayouts , die bei nur einem Tastendruck mehrere Zeichen (z. B. Ligaturen) und/oder zusätzliche Unicode-Zeichen erzeugen. Es wird dringend empfohlen, die Methoden ToUnicode oder ToUnicodeEx zu verwenden, die solche Fälle ordnungsgemäß behandeln.

Syntax

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

Parameter

[in] uVirtKey

Typ: UINT

Der zu übersetzende Code des virtuellen Schlüssels. Weitere Informationen finden Sie unter Virtuelle Tastencodes.

[in] uScanCode

Typ: UINT

Der Hardwarescancode des zu übersetzenden Schlüssels. Das Hochreihenfolgenbit dieses Werts wird festgelegt, wenn die Taste aktiv ist (nicht gedrückt).

[in, optional] lpKeyState

Typ: const BYTE*

Ein Zeiger auf ein 256-Byte-Array, das den aktuellen Tastaturzustand enthält. Jedes Element (Byte) im Array enthält den Zustand eines Schlüssels. Wenn das Bit in hoher Reihenfolge eines Byte festgelegt ist, ist die Taste nach unten (gedrückt).

Das niedrige Bit, sofern festgelegt, gibt an, dass der Schlüssel aktiviert ist. In dieser Funktion ist nur das Umschaltbit der CAPS-TASTE relevant. Der Umschaltzustand der TASTEN NUM-TASTE und SCROLL-TASTE wird ignoriert.

[out] lpChar

Typ: LPWORD

Ein Zeiger auf den Puffer, der das übersetzte Zeichen empfängt (oder zwei Zeichen, die in einen einzelnen WORD-Wert gepackt sind, wobei das Byte mit niedriger Ordnung das erste Zeichen und das Byte mit hoher Ordnung das zweite Zeichen enthält).

[in] uFlags

Typ: UINT

Dieser Parameter muss 1 sein, wenn ein Menü aktiv ist, oder andernfalls 0.

Rückgabewert

Typ: int

Der Rückgabewert ist einer der folgenden Werte.

Rückgabewert BESCHREIBUNG
0
Die angegebene virtuelle Taste verfügt über keine Übersetzung für den aktuellen Zustand der Tastatur.
1
Ein Zeichen wurde in den Puffer kopiert.
2
Zwei Zeichen wurden in den Puffer kopiert. Dies geschieht in der Regel, wenn ein im Tastaturlayout gespeichertes Unzustellbares Zeichen (Akzent oder diakritische Zeichen) nicht mit der angegebenen virtuellen Taste zu einem einzelnen Zeichen zusammengesetzt werden kann.

Bemerkungen

Die parameter, die für die ToAscii-Funktion bereitgestellt werden, reichen möglicherweise nicht aus, um den Code für virtuelle Schlüssel zu übersetzen, da im Tastaturlayout eine vorherige unzustellbare Taste gespeichert ist.

In der Regel führt ToAscii die Übersetzung basierend auf dem Code des virtuellen Schlüssels durch. In einigen Fällen kann jedoch Bit 15 des uScanCode-Parameters verwendet werden, um zwischen einem Tastendruck und einer Tastenfreigabe zu unterscheiden. Der Scancode wird für die Übersetzung von TASTENkombinationen von ALT+- Zahlen verwendet.

Obwohl num lock eine Umschalttaste ist, die sich auf das Tastaturverhalten auswirkt, ignoriert ToAscii die Umschalteinstellung (das niedrige Bit) von lpKeyState (VK_NUMLOCK), da der uVirtKey-Parameter allein ausreicht, um die Cursorbewegungstasten (VK_HOME, VK_INSERT usw.) von den numerischen Tasten (VK_DECIMAL, VK_NUMPAD0 VK_NUMPAD9 - ) zu unterscheiden.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winuser.h (windows.h einschließen)
Bibliothek User32.lib
DLL User32.dll

Siehe auch

Konzept

Tastatureingabe

OemKeyScan

Referenz

ToAsciiEx

ToUnicode

VkKeyScan