It's best to use "& 0x8000", and it lets you get rid of the bare GetAsyncKeystate(); in your code (which puzzled me at first).Although the least significant bit of the return value indicates whether the key has been pressed since the last query, due to the pre-emptive multitasking nature of Windows, another application can call GetAsyncKeyState and receive the "recently pressed" bit instead of your application. The behavior of the least significant bit of the return value is retained strictly for compatibility with 16-bit Windows applications (which are non-preemptive) and should not be relied upon.
This is not important at all, though. Just a thought.
Edit: 0x8000