CStatic
でカスタムコントロールを作成しようとしていますvc++
が、いくつか問題があります。
私はもともと、スタイルのあるCStatic
コントロールを使用していました。SS_BLACKRECT
これは、オンデマンドでコントロール上に画像を表示する必要があるまでの状況に適していました。
私は実際に画像をコントロールに描画する背後にあるすべてのロジスティクスを理解しましたが、他のものに干渉せずにそれを行う方法を理解できないようです。
基本的に、私はコントロールがほとんどの場合スタイルで通常として機能することを望んでCStatic
いSS_BLACKRECT
ます。
次に、代わりにコントロール上に画像を描画するメソッドを呼び出すことができる必要があります。私はを使って描画を行っていますが、メソッドとメソッドGDI
の両方で試しましたが、成功しませんでした。描画することはできますが、ベースを呼び出すと、イメージの上に描画されます。OnPaint()
DrawItem()
OnPaint()
CStatic::OnPaint()
通常のように描画できるようにする必要がありますが、その上に画像を挿入するだけです。メソッドでそれを実行しようとすると、DrawItem()
明らかにSS_BLACKRECT
スタイルを使用して描画しているのではなく、想定どおりにコントロールを描画するのを待っているため、問題が発生しました。
私が探しているのは、3つのうちの1つだと思います。GDI
基本OnPaint()
メソッドが終了した後に使用して描画する方法。コントロールにデフォルトSS_BLACKRECT
のスタイルを描画させ、その後OWNERDRAW
画像を描画させる方法。または、の描画を模倣するコードSS_BLACKRECT
。
CStatic
最後のものが最も簡単かもしれませんが、デフォルトのDrawItemのようにコントロールを描画するために設定する必要があるすべてのものがわかりません。