2009-07-30 16 views
0

CStaticカスタムコントロールをvc++に作成しようとしましたが、いくつか問題があります。CStaticカスタムコントロール

私はもともと、SS_BLACKRECTスタイルのコントロールCStaticを使用していました。これは、必要に応じてコントロール上にイメージを表示する必要があるまで、状況に適していました。

私は実際にコントロールに画像を描画することの背後にあるすべてのロジスティクスを理解しましたが、他のものを妨害することなくこれを行う方法を理解するようです。

基本的には、コントロールが通常CStaticのようにSS_BLACKRECTスタイルで機能するようにしたいと考えています。

次に、コントロール上にイメージを描画するメソッドを呼び出す必要があります。私はGDIを使って図面をやっており、OnPaint()メソッドとDrawItem()メソッドの両方でそれを試してみました。私はそれをOnPaint()で描くことができますが、私がベースと呼ぶときにCStatic::OnPaint()私のイメージ上に描画します。

通常のように描画できるようにする必要がありますが、上に画像を投げるだけです。私がDrawItem()メソッドでそれをやろうとしたときには、明らかにSS_BLACKRECTのスタイルを使って描画していなかったので、私は問題を抱えていました。

私が探していると思うのは、3つのうちの1つです。ベースOnPaint()メソッドが終了した後にGDIを使用して描画する方法。コントロールにデフォルトのSS_BLACKRECTスタイルを描画し、その後にイメージをOWNERDRAW描画する方法。または図面を模倣するコードSS_BLACKRECT

最後の1つが最も簡単かもしれませんが、デフォルトのDrawItemのようにCStaticのコントロールを描画するように設定する必要があることはすべてわかりません。

+0

解決方法を見つけましたか? – Alan

答えて

1

は試してみてください呼び出すことによって返されたカラーを使用して複製することができるはずですOnPaint()ハンドラーのDefault()

次に、画像を描画するかどうかによって、標準のCStaticコントロールの上に描画できます。

0

はここでカップルのアイデアです:

CStatic::OnPaint()があなたの画像の上に描画した場合は、最初にそれを呼び出し、その後、あなたの画像を描画してみてください。

そうでなければ、私はSS_BLACKRECTの見たものはほとんどから、あなたはそれが単に図面の​​を経て得られたコントロールの矩形を渡すCDC::FillSolidRect()を呼び出すこととGetSysColor(COLOR_WINDOWFRAME)

関連する問題