Pregunta

lo hace la media 0x80 código cuando se refiere a los controles de teclado en el entorno Windows de C ++?

Por ejemplo,

if(GetKeyState('K') & 0x80) { 
    //do something 
}

Gracias a todos!

No hay solución correcta

Otros consejos

Actualizar

Una ráfaga de downvotes me impulsó a investigar más a fondo. Así es como los valores de retorno (en hexadecimal) de edificaciones GetKeyState. No acabo de obtener la propiedad de palanca de una llave como k pero estoy asumiendo que hay algún estado predeterminado se cambia de.

0      Default State, key up
ff80    Default state, key down
1       Toggled, key up
ff81    Toggled, key down

Así se añade 0xff80 siempre que las necesidades de orden superior bit a activar y el bit de orden inferior tiene sentido. Así que ahora sabemos por qué las obras de aproximación 0x80 --- desde el bit de orden del byte inferior se establece también!

Respuesta Viejo

GetKeyState devuelve un SHORT donde si el bit de orden superior es 1 que significa que la clave es hacia arriba. La operación AND bit a bit con 0x80 cheques sólo si ese bit es 1 ya que en 0x80 binario 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.

Creo que te refieres 0x8000, 0x80 no. Si ese es el caso, debe consultar la documentación ( http : //msdn.microsoft.com/en-us/library/ms646301 (VS.85) .aspx ) que tiene la siguiente que decir sobre el valor de retorno de GetKeyState: -

El valor de retorno especifica el estado de la tecla virtual especificada, de la siguiente manera:

• Si el bit de orden superior es 1, la clave es abajo; de lo contrario, le corresponde. • Si el bit de orden inferior es 1, se activa la tecla. Una de las claves, tales como la tecla de bloqueo de mayúsculas, se activa si está activada. La clave está apagado y untoggled si el bit de orden inferior es 0. A toggle luz indicadora de llave (si los hay) en el teclado estará en cuando se activa la llave, y cuando la clave es untoggled.

0x80 no significa nada por lo que yo sé, aunque

De acuerdo con la documentación

El valor de retorno especifica el estado de la tecla virtual especificada:
Si el bit de orden superior es 1, la clave es abajo; de lo contrario, le corresponde.
Si el bit de bajo orden es 1, se puede cambiar entre la llave. Una clave, tales como la tecla CAPS LOCK, se activa si está activada. La clave está apagado y untoggled si el bit de orden inferior es 0. A toggle luz indicadora de llave (si los hay) en el teclado estará en cuando se activa la llave, y cuando la clave es untoggled.

Tal vez con una clave no conmutable (por ejemplo, una 'K'), el bajo-orden de (término ambiguo - tal vez quiere decir 0x0080) y de orden superior (0x8000) bits hacen lo mismo cosa?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top