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.
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
プロパティシートのコントロール表示のちらつき防止 #1424
プロパティシートのコントロール表示のちらつき防止 #1424
Changes from 1 commit
1a1408b
079929f
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ん?これは必要ですか・・・?
(たぶん、必要だから入れてると思いますが念のための確認です。)
window描画の仕組み
InvalidateRect(hwnd, NULL, FALSE)
は、クライアント領域の全域更新を指示する命令です。WM_SETREDRAW で再描画フラグを戻しただけだけだと更新されない仕様だと思うんですが、ここに要るなら他にもいるような気がして、何故ここだけ?と思いました。There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
コントロールのウィンドウの変更に対して WM_SETREDRAW する場合は後で InvalidateRect を呼ばないでも表示が更新されてたんですが、親のダイアログの場合は呼ばないと表示が更新されませんでした。理屈は分かっていません。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ここにはありますね・・・
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ここも親ダイアログに対しての場合ですね。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
これは必要です? or NOT?
必要なら入れたらよいと思います。
右寄せラベルの高さが大きくなってるのを文字に合わせる変更に見えていて、ちらつき防止と関係あるようには思えないのですが・・・。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
WS_EX_COMPOSITED を付けるとこの変更入れないと表示に問題がありました。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
高さを調整しないとこのように表示されてしまいます。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
https://docs.microsoft.com/en-us/windows/win32/winmsg/extended-window-styles
の
WS_EX_COMPOSITED
の解説ですがと書かれています。
bottom-to-top painting order
というのが画面のXYのYの上下の事なのかZ-orderの上下の事なのかわかっていませんが(多分後者)この事が関わっていそうです。There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
画面の下から上の順番でコントロールを描画していくってことでしょうね。
通常は上から下の順番で描画されていると考えると、下方向にはみ出したコントロールがこれまで問題にならず、拡張スタイルの追加でおかしくなった理由を説明できると思います。従来ははみ出した部分を下側にあるコントロールで上書きしていたから問題にならず、変更により描画済みのコントロールの上にはみ出して描画するようになったっちゅうことです。