Aggiornamento
Una raffica di downvotes mi ha spinto in indagando questo ulteriore. Ecco come funzionano i valori di ritorno (in hex) di GetKeyState
. Non ho abbastanza la proprietà di commutazione di una chiave come ma suppongo che ci sia uno stato predefinito da cui alterna.
0 Default State, key up
ff80 Default state, key down
1 Toggled, key up
ff81 Toggled, key down
Così 0xff80
si aggiunge ogni volta che il bit di ordine deve essere impostato e il bit di ordine inferiore ha un senso. Così ora sappiamo perché l'approccio 0x80
funziona --- poiché anche il bit di ordine superiore del byte inferiore è impostato!
Vecchio risposta
GetKeyState restituisce un SHORT
in cui se il bit di ordine superiore è 1
significa che la chiave è in alto. L'operazione bitwise AND con 0x80
controlla solo se quel bit è 1
poiché in binario 0x80
è 10000000
.
Pertanto la dichiarazione GetKeyState('K') & 0x80
sarebbe tornato 0x80
se il bit di ordine superiore del valore restituito da GetKeyState('K')
è 1
e 0
se il bit di ordine superiore è 0
.
Penso che tu abbia un errore di battitura nel tuo esempio di codice - dovrebbe essere GetKeyState ('K') e 0x8000 – Stewart
che sembra funzionare nella mia applicazione come è? – Paz
Cosa intendi con "lavoro"? Se non sai cosa dovrebbe fare, come sai che sta funzionando? – Stewart