お世話になります。
再度質問させてください。
ダイアログ全体の背景をGDI+を使って画像を
描画しています。
描画は正常に行われているのですが、ダイアログに貼り付けた
スタティックテキストの背景が描画画像にするのはどうしたらよいのでしょうか?
OnCtlColorでTRANSPARENTをしてみましたが、元のダイアログ色(灰色)が背景に
なってしまいます。
ちなみに、背景はOnPaint()内で描画しています。
ご教授願います。
環境
VC6.0 MFC ダイアログベース
OnEraseBkGnd で背景を描いてみるとか。…ダメかな?
ちょっと、試している暇がないので、丸投げですが、
背景をOnEraseBkgnd()で描画するとどうなりますか?
aetosさん、失礼
かぶりました。
ありがとうございます。
OnPaint()ではなくOnEraseBkgnd()で背景を描画するようにしましたが
変わらずテキストの背景は灰色のままでした。
OnCtlColorでTRANSPARENT実行時に
背景として認識されていないのが原因だとは思うんですが...
もう少し調べてみます。
なにかアドバイスがありましたら、お願いします。
楽な方法
スタティックテキストに文字を設定するのではなく
ダイアログに対し、SetBkModeで文字背景をけし
直接DrawTextなどで文字を書く
#文字を書く位置にスタティックテキストを使いまわすとリソースエディタで
位置を決められるので楽
ところでOnCtlColorの戻り値のブラシはどうなっていますか?
rinさん、ありがとうございます。
>楽な方法
最終手段として使わせて頂きます。
>ところでOnCtlColorの戻り値のブラシはどうなっていますか?
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
COLORREF colorRef = RGB(0,0,0);
switch(nCtlColor)
{
case CTLCOLOR_STATIC:
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(colorRef);
default:
break;
}
}
としていますので、ブラシは特に設定していません。
これが原因でしょうか?
OnCtlColor で SetBkMode( TRANSPARENT ) してから、戻り値として GetStockObject(
NULL_BRUSH ) を返すといいかもしれない。
おお!できました。
なるほど、空のブラシを返すことによって、背景を指定しない
ので、スタティックテキストの下の画像が背景として認識される
ということですね。(合ってますか?)
解決とさせて頂きます。
返事をくださった皆様、ありがとうございました。
また何かあった時には宜しくお願いいたします。
解決チェックを付けてくださいな。
すいません、忘れてました!