GetKeyStateは、指定された仮想キーコードのキーが押されたかどうかを判定するためのWindowsAPI・・・。
キーの判定はWM_KEYDOWNのようなウィンドウメッセージでもできるが、この関数を呼んだときにキーが押されているかを確認したい場合は、これを使う・・・。
今回は、PeekMessageによるメインループの中でキーの判定をして、押されていたら描画している矩形を移動するようなものを作る・・。
メインループでウィンドウメッセージが来ている時は、
通常のメッセージ処理・・・。
来ていない時は、
GetKeyStateでキーが押されているか判定する・・・。
PeekMessageのメインループは非常に速いので、1ずつ増加減少にすると、すぐどこかに消えてしまう・・・。
そこでSleepを入れた上で、0.1ずつ増加減少させることにした・・・。
また、GetKeyStateは、戻り値の最上位ビットが1の時に押されている、0の時に押されていないという判定なので、0x8000との&(AND、つまり論理積)の真偽値で判定する・・・。
最初こんなんで、下を押すと、
こうなり、右を押すと、
こうなる・・・。
(Sleep(5)では点滅が速過ぎて見えないかも・・・。10以上でも厳しいかもしれない・・・。ダブルバッファリングにすればちゃんと見えると思うが・・・。)
Sample/GetKeyState.cpp at master · bg1bgst333/Sample · GitHub