ダイアログにサイズ変更の機能を持たせているのですが、
大きさを変えるたびにリストビューやツリービューがちらついてしまいます。
しかし、グループボックスも使っているため、
ダイアログにWS_CLIPCHILDRENを付けることができません。
この場合、どのようにちらつきを防ぐべきでしょうか。
ちなみに、ダイアログに標準でWS_CLIPCHILDRENが付いていないのは、
グループボックスやピクチャ(フレーム)の内部を塗りつぶすだけのため
と解釈してもよいのでしょうか。
それとも、それ以外の理由もあるのでしょうか。
MFCなのかSDKなのかぐらいは書きましょう(vv;)。
サイズ変更のとき「何をするのか」はプログラマーしだいです。
WM_SIZEメッセージに応答して、したいことをしましょう。
例えば、特定のコントロールに再描画が発生しないようにも
コードできますし、WM_SIZEでは一切の再描画が発生しないようにして、
WM_EXITSIZEMOVE時のみ再描画するなど、何でもありですよね。
>ちなみに、ダイアログに標準でWS_CLIPCHILDRENが付いていないのは、
>グループボックスやピクチャ(フレーム)の内部を塗りつぶすだけのため
>と解釈してもよいのでしょうか。
一般に
1.DLGはサイズ変更が発生しない。
2.DLG上のコントロール(子ウインドウ)は全て自己の背景を自前で
塗りつぶす
という(レガシーでの)前提になっているからでしょう。
Norton/Yao本によれば、
親にWS_CLIPCHILDRENが無く子にCS_PARENTDCがある場合は
親と子のクリップ領域は等しくなり、
子用のクリップ領域を計算する必要がないのでパフォーマンスがよいとのことです。
Windows1.xの遺産のようです(cpu=8088,ram=256KB)。
副次効果として、
コントロールの領域の外にフォーカス枠などを描画できる様になります。
> しかし、グループボックスも使っているため、
> ダイアログにWS_CLIPCHILDRENを付けることができません。
WS_CLIPCHILDRENをつけるとまずいですか。