Hvis du læser om GetAsyncKeyState på msdn står der:
"If the function succeeds, the return value specifies whether the key was pressed since the last call to GetAsyncKeyState, and whether the key is currently up or down. If the most significant bit is set, the key is down, and if the least significant bit is set, the key was pressed after the previous call to GetAsyncKeyState. However, you should not rely on this last behavior; for more information, see the Remarks."
& er bit-vis-and operatoren, resultatet af & er de bit der er sat på både venster og højre side.
I vores funktion kalder vi GetAsyncKeyState og and'er resultatet med 0x8000, derved får vi netop MSB (af en SHORT) som fortæller om tasten er trykket eller ikke.
?: operatoren evaluerer udtrykket til venstre for ?, hvis det er != 0 bruges delen til venstre for : ellers delen til højre for :
Man kunne også skrive den samme funktion som:
BOOL IsKeyPressed(int Key)
{
SHORT State = GetAsyncKeyState(Key);
State = State & 0x8000;
if(State != 0)
return TRUE;
return FALSE;
}
Men jeg er doven.