UpdateWindowで画面を更新する。
UpdateWindow 関数 (winuser.h) - Win32 apps | Microsoft Learn
InvalidateRectで無効領域が作られればWM_PAINTが送られて更新されるが、これはタスクが無いアイドル状態だからであり、処理が忙しい時はなかなか更新されない。
UpdateWindowで強制更新する必要がある。
"Update"が含まれてるので今回はapp.manifestを用意。
UpdateWindow.cppで、
case WM_LBUTTONDOWN:
{
for (int j = 0; j < 1000000; j++){
InvalidateRect(hwnd, NULL, TRUE);
i++;
}
}
break;
左クリックしたら、iをインクリメントする度に、InvalidateRectで無効領域をつくる。
WM_PAINTでiを描画。
起動時はこうだが、左クリックしても画面は更新されない。
数秒したら、全部インクリメントし終わって、この画面になる。
InvalidateRectを呼んでも更新はされない。
InvalidateRectの後にUpdateWindowを呼ぶ。
起動時。
左クリックすると、
今度は画面が更新されて、1ずつカウントされる。途中過程がわかる。
最後はこう。
更新してから足してるから、最後の値は反映されないのか。
Sample/winapi/UpdateWindow/UpdateWindow/src/UpdateWindow at master · bg1bgst333/Sample · GitHub