Funzione ToAscii (winuser.h)

Converte il codice del tasto virtuale e lo stato della tastiera specificati nel carattere o nei caratteri corrispondenti. La funzione converte il codice usando la lingua di input e il layout della tastiera fisica identificati dall'handle di layout della tastiera.

Per specificare un handle per il layout della tastiera da usare per tradurre il codice specificato, usare la funzione ToAsciiEx .

Nota

Questo metodo potrebbe non funzionare correttamente con alcuni layout di tastiera che possono produrre più caratteri (ad esempio legature) e/o caratteri Unicode supplementari su un singolo tasto. È consigliabile usare i metodi ToUnicode o ToUnicodeEx che gestiscono correttamente tali casi.

Sintassi

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

Parametri

[in] uVirtKey

Tipo: UINT

Codice della chiave virtuale da convertire. Vedere Codici di chiave virtuale.

[in] uScanCode

Tipo: UINT

Codice di analisi hardware della chiave da convertire. Il bit di ordine elevato di questo valore viene impostato se il tasto è su (non premuto).

[in, optional] lpKeyState

Tipo: const BYTE*

Puntatore a una matrice di 256 byte che contiene lo stato corrente della tastiera. Ogni elemento (byte) nella matrice contiene lo stato di una chiave. Se viene impostato il bit di ordine elevato di un byte, il tasto è inattivo (premuto).

Il bit basso, se impostato, indica che la chiave è attivata o disattivata. In questa funzione è rilevante solo il bit di attivazione/disattivazione del tasto BLOC MAIUSC. Lo stato di attivazione/disattivazione dei tasti BLOC NUM e BLOC SCORRIMENTO viene ignorato.

[out] lpChar

Tipo: LPWORD

Puntatore al buffer che riceve il carattere tradotto (o due caratteri compressi in un singolo valore WORD , in cui il byte di ordine basso contiene il primo carattere e il byte di ordine elevato contiene il secondo carattere).

[in] uFlags

Tipo: UINT

Questo parametro deve essere 1 se un menu è attivo o 0 in caso contrario.

Valore restituito

Tipo: int

Il valore restituito è uno dei valori seguenti.

Valore restituito Descrizione
0
Il tasto virtuale specificato non ha una traduzione per lo stato corrente della tastiera.
1
Un carattere è stato copiato nel buffer.
2
Due caratteri sono stati copiati nel buffer. Ciò si verifica in genere quando un carattere di tasto non recapitabile (accento o diacritico) archiviato nel layout della tastiera non può essere composto con il tasto virtuale specificato per formare un singolo carattere.

Commenti

I parametri forniti alla funzione ToAscii potrebbero non essere sufficienti per convertire il codice della chiave virtuale, perché nel layout della tastiera viene archiviato un tasto non recapitabile precedente.

In genere, ToAscii esegue la traduzione in base al codice della chiave virtuale. In alcuni casi, tuttavia, è possibile usare il bit 15 del parametro uScanCode per distinguere tra una pressione del tasto e una versione del tasto. Il codice di analisi viene usato per tradurre le combinazioni di tasti numerici ALT+.

Anche se NUM LOCK è un tasto di attivazione/disattivazione che influisce sul comportamento della tastiera, ToAscii ignora l'impostazione dell'interruttore (bit basso) di lpKeyState (VK_NUMLOCK) perché il parametro uVirtKey da solo è sufficiente per distinguere i tasti di spostamento del cursore (VK_HOME, VK_INSERT e così via) dai tasti numerici (VK_DECIMAL, VK_NUMPAD0 VK_NUMPAD9 - ).

Requisiti

   
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winuser.h (include Windows.h)
Libreria User32.lib
DLL User32.dll

Vedi anche

Informazioni concettuali

Input da tastiera

OemKeyScan

Riferimento

ToAsciiEx

ToUnicode

VkKeyScan