ビューに背景色をつけるには

[戻る]
たろう 2003/02/09(日) 18:18:26
ビューに背景色をつけようと思い以下のように
コーディングしたのですが、背景色は白のままです。
どのようにコーディングしたらよろしいでしょうか?

void CXXXView::OnDraw(CDC* pDC)
{
  CDocument* pDoc = GetDocument();
  // TODO: この位置に描画用のコードを追加してください
  pDC->SelectStockObject(LTGRAY_BRUSH);
}

環境はWin98SE VC++6.0SP5 MFCです

PAI 2003/02/09(日) 18:45:39
OnEraseBkgnd をオーバーライドして、そこで自分で塗ってください。

たろう 2003/02/09(日) 22:05:11
PAIさんの方法でViewの背景を設定できたのですが、
以下の2点ほど疑問があります。

・OnEraseBkgndでCBrushをデフォルトコンストラクタで作成後
 CreateStockObject(LTGRAY_BRUSH)
 とブラシの設定を行っています。
 MSDNにはデフォルトコンストラクタの作成後は
 CreateSolidBrush,CreateHatchBrush,CreateBrushIndirect,
 CreatePatternBrush,CreateDIBPatternBrush
 で初期化すると書いてありますがCreateStockObjectを使うのは
 まずいでしょうか?
・背景の描画後CDC::TextOutで文字列を表示すると、
 文字列を囲む部分だけが白くなってしまいます。
 これを回避する手段はないでしょうか?

以上、よろしくお願いします

PAI 2003/02/09(日) 22:44:07
> CreateStockObjectを使うのはまずいでしょうか?

使用方法にもよりますが、問題ないと思います。


> 背景の描画後CDC::TextOutで文字列を表示すると、
>  文字列を囲む部分だけが白くなってしまいます。
>  これを回避する手段はないでしょうか?

CDC::SetBkMode()

たろう 2003/02/09(日) 23:07:01
[[解決]]
OnDrawで    
pDC->SetBkMode(TRANSPARENT);
としてやることで
テキストの周りの白い枠が消えました。

ありがとうございました。

古いスレッドには追加発言できません。