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 |
---|---|
|
Il tasto virtuale specificato non ha una traduzione per lo stato corrente della tastiera. |
|
Un carattere è stato copiato nel buffer. |
|
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
Riferimento