キャレット位置の文字情報をステータスバーに設定する際の再描画をまとめた変更で UpdateWindow の呼び出しが必要なのに漏れていたのを修正 #1642
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PR の目的
#1637 で報告があったステータスバーの表示が正しく更新されない不具合を修正するのが目的です。
カテゴリ
PR の背景
#1637 で報告があったとおり、自分が過去に行った #1601 の変更後に問題が発生するようになったので、その不具合を修正する必要があります。
PR のメリット
不具合が修正されます。
PR のデメリット (トレードオフとかあれば)
きちんとウィンドウの描画を行うようになるのでCPU使用率が増加します。
とはいえ再描画をまとめる対策を入れないよりかはCPU使用率が低くなるという認識です。
仕様・動作説明
なぜ
UpdateWindow
の呼び出しを追加する必要があるかというと、SB_SETTEXT
メッセージを送ってステータスバーの部分のテキスト表示を更新する処理の前後にと
の呼び出しを入れるとステータスバーのウィンドウに対して
WM_PAINT
メッセージが送られない場合があり、その際に表示が更新されないからです。UpdateWindow
関数の呼び出しを明示的に行う事で更新領域が存在するステータスバーのウィンドウに対してWM_PAINT
メッセージがきちんと送られるようになりウィンドウの表示内容がきちんと更新されます。PR の影響範囲
ステータスバーの描画処理
テスト内容
テスト1
関連 issue, PR
#1637, #1601
参考資料
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-updatewindow
https://docs.microsoft.com/en-us/windows/win32/controls/sb-settext
https://docs.microsoft.com/en-us/windows/win32/gdi/wm-setredraw