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 |
---|---|
|
Die angegebene virtuelle Taste verfügt über keine Übersetzung für den aktuellen Zustand der Tastatur. |
|
Ein Zeichen wurde in den Puffer kopiert. |
|
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
Referenz