Quote Originally Posted by kabilius
...Let's say the message queue contains ['a']['p']['p']['shift']['l']['e'], so we know the user types 'appLe'
If we hold 'shift' key while the message queue is being processed, we will get 'APPLE' instead of 'appLe'

I believe your statement
is targeting this case I just described.

The lesson that I got out of this is that "it is not a good practice to use GetKeyState to determine if a letter is capitalized or not."
No, using GetAsyncKeyState (is Shift down right now) may result in incorrect capitalization. GetKeyState (was Shift down when 'l' was pressed; was Shift down when 'e' was pressed, etc.) should be OK.