actualización
Una ráfaga de downvotes me impulsó a investigar más a fondo. Así es como funcionan los valores de retorno (en hex) de GetKeyState
. No obtengo la propiedad de alternar de una clave como k
, pero asumo que hay un estado predeterminado al que se alterna.
0 Default State, key up
ff80 Default state, key down
1 Toggled, key up
ff81 Toggled, key down
Así se añade 0xff80
cada vez que el bit de orden debe ser establecido y el bit de orden inferior tiene sentido. Así que ahora sabemos por qué funciona el método 0x80
, ¡ya que también se establece el bit de orden superior del byte inferior!
respuesta Antiguo
GetKeyState devuelve un SHORT
donde si el bit de orden superior es 1
significa que la clave está arriba. La operación bitwise AND con 0x80
solo comprueba si ese bit es 1
dado que en el código binario 0x80
es 10000000
.
Por lo tanto la declaración GetKeyState('K') & 0x80
volvería 0x80
si el bit de orden superior del valor devuelto por GetKeyState('K')
es 1
y 0
si el bit de orden superior es 0
.
yo creo que hay un error en el ejemplo de código - que debería ser GetKeyState ('K') y 0x8000 – Stewart
parece estar trabajando en mi solicitud como es sin embargo? – Paz
¿Qué quiere decir con "trabajar"? Si no sabes lo que se supone que debe hacer, ¿cómo sabes que está funcionando? – Stewart