CFormViewでの背景の塗りつぶし

[戻る]
THE WORLD 2009/08/09(日) 19:21:12
初めて投稿します。
MFCで開発してます。

+-------+-------+
|  (1)  |  (2)  |
+-------+-------+
|  (3)  |  (4)  |
+---------------+

↑のような画面(CFormView)で、(1)〜(4)の部分にはビットマップを表示しています。
ビューが4つあるのではなく、1つのビューのクライアント領域に表示しています。
各ビットマップの下にはテキストを出力するエリアがあります。
(1)〜(4)の部分をマウスでクリックすると、その部分のテキスト出力エリアの背景色を緑
に変えます。
(1)〜(4)の部分をマウスでダブルクリックすると、その部分を画面全体に拡大して表示し
ます。
このとき、テキスト出力エリアの背景色も引き継ぎたいのですが、OnDraw()や
OnEraseBkgnd()で塗りなおしても色が変わりません(デフォルトの色のグレーになる)。
どうすれば背景色を引き継げるでしょうか?
よろしくお願いします。

仲澤@失業者 2009/08/11(火) 16:14:13
れすつきませんねぇ。
「拡大表示」しているときのビットマップを描画している
関数の前後に当該のテキストの描画があると思うのですが、
そのあたりを調べてみたらどうでしょう。
また、表示テキストの背景は
 1.SetBkMode( TRANSPARENT)の場合はFillRect()等で描画
 2.SetBkMode( OPAQUE)の場合はSetBkColor()で指定
の2ケースが考えられます。

subaru 2009/08/12(水) 10:47:45
塗りつぶしたいものが具体的になんなのか不明ですが
ダイアログ部分の背景だと仮定すると画面(CFormView)の
・OnCtlColor でブラシを返す
・OnEraseBkgnd で塗りつぶして OnCtlColor で NULL_BRUSH を返す
のいずれかで色を変えられます。

#OnDraw()でも変わらないのならダイアログの背景ではないのでしょうが・・・
#仲澤@失業者さんの言うように SetBkMode の設定の問題かもしれない

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