PeekMessageは、ウィンドウメッセージが来ているかを確認するWindowsAPI・・・。
これまでは、GetMessageでウィンドウメッセージを取得して、取得できたらそれをウィンドウプロシージャに送出していた・・・。
ウィンドウメッセージが来るまでGetMessageから抜けることはないが、その間は待機状態となるので、無駄な時間ができる・・・。
この時間をアイドル時間といい、このアイドル時間を有効に使うためにPeekMessageでウィンドウメッセージが来ているかを確認する・・・。
来ている場合は、真(TRUE)となるのでGetMessageで取得し、処理をすればいい・・・。
来ていない場合は、偽(FALSE)なので、待機状態用の処理を実行できる・・・。
今回は、iCountというint型変数を待機状態の時だけ、TextOutで描画し、iCountを1増やす・・・。
ただ、1000超えたら0にリセットするけど・・・。
ウィンドウを表示したら、GetDCでデバイスコンテキストハンドル取得・・・。
常にTRUEの無限ループにする・・・。
PeekMessageでメッセージが来ているか確認する・・・。
この使い方の場合、PM_NOREMOVEにする・・・。
PM_REMOVEにすると、処理されたとしてメッセージキューから削除されてしまい、その後のGetMessageで取得できなくなる・・・。
なので絶対PM_NOREMOVE・・・。
で、GetMessageで1以上ならメッセージが取得できたのでメッセージ処理・・・。
そうでないならエラー・・・。
PeekMessageが偽(FALSE)の場合は、メッセージが来ていないので、TextOutでiCountを表示して、その後iCountを1増やす・・・。
で1000を超えたら0にリセット・・・。
実行すると、
速過ぎてわかんないけども・・・。
一応カウントされてることはわかる・・・。
Sample/PeekMessage.cpp at master · bg1bgst333/Sample · GitHub