2009-05-11 11 views
1

私はカスタム描画を実行するためにWM_PAINTをオーバーライドしようとしているCTabCtrlサブクラスを持っています。唯一の問題は、選択したタブを変更すると、新しいコードが上に描画される前に古いペイントコードが消去されていないダイアログボックスにアーティファクトが残ることです。 (標準のタブコントロールでは、選択したタブが非選択のタブよりも2ピクセル大きく表示されるため、選択したものから選択しないものに変更すると、以前のペイントアーチファクトが残されます)。子コントロールの透過領域をペイントする方法は?

この領域を「再塗装」するにはどうすればよいですか?私は子供のDCに親コントロールのDCとBitBlt'ingを取得しようとしましたが、親DCにはすでにこのコントロールのイメージが含まれているため、これは機能しません。

答えて

2

WM_ERASEBACKGROUNDメッセージも上書きしますか?おそらくそれを行い、コントロール内の領域を消去する必要があります。

すべての描画ロジックを置き換えたくない場合は、DrawThemeParentBackgroundを使用して背景(XP以降)を描画できます。

+0

私はメッセージを処理し、すべての図面をWM_PAINTで行うにはFALSEを返します。私は今、その機能を試してみる... –

+0

それは美しく働いた - ありがとう、ラリー。 –

関連する問題