TabCtrl_SetItem でタブ全体が更新される

TabCtrl_SetItem 関数を利用すると、再描画の必要がない、タブクライアント描画領域が消去されてしまう。

この現象にすごく悩まされました。

試行錯誤しまくった結果。

TABのウィンドウスタイルに WS_CLIPSIBLINGS と WS_CHILD を追加しなくてはいけないという事が判明|・ω・)

WS_CLIPCHILDREN も関係ありそうだったんだけど、違ったようでした

以下説明

WS_CLIPSIBLINGS

関連する子ウィンドウをクリップします。つまり、1 つの子ウィンドウが描画メッセージを受け取ると、WS_CLIPSIBLINGS スタイルが適用されている場合、更新する子ウィンドウの領域から、そのウィンドウと重複しているほかの子ウィンドウをすべてクリップします。 WS_CLIPSIBLINGS が指定されていない場合に、子ウィンドウが重複していると、1 つの子ウィンドウのクライアント領域で描画するときに、隣接する子ウィンドウのクライアント領域に描画してしまう可能性があります。必ず WS_CHILD スタイルと一緒に使います

WS_CLIPCHILDREN

親ウィンドウの内部で描画するときに、子ウィンドウが占める領域を除外します。 親ウィンドウを作成するときに使用します。

 
WS_CLIPSIBLINGS  WS_CHILD GWL_STYLE SysTabControl32
でGoogleさんに聞く
と、7件なんですが、みんなどうしてるんだろう|・ω・) と素朴な疑問だったのでした

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です