if(GetKeyState(VK_SHIFT) & 0x8000)???

jose
07 de Octubre del 2003
Buenas, tengo una duda, aunque pueda ser una chorrada. Estoy viendo unos ejemplos, y hay uno en el que comprueba la tecla pulsada. Mi pregunta es, por que se incluye en la condicion del if un numero hexadecimal?? Y de donde sale ese número?

Muchas gracias por la ayuda.

chuidiang
07 de Octubre del 2003
Habría que ver exactamente qué devuelve GetKeyState().

Asi, a ojo, el 0x8000 es un 1 en el bit más significativo de un entero. Este bit suele ser el bit de signo, de forma que si es cero, el entero es positivo y si es 1, el entero es negativo.

El resultado de GetKeyState() & 0x8000 te dará true si el bit más significativo devuelto por GetKeyState() es 1, lo que viene a ser que GetKeyState() sea negativo.

Una forma mas intuitiva de poner ese if quizas sea

if (GetKeyState() < 0)

No conozco la función GetKeyState() ni lo que devuelve, pero viendo la línea que has puesto, es más o menos lo que deduzco. Puedo estar equivocado ...

Se bueno.