お世話になっています。
Win2000,VC6,MFC,SDI(CFormView)で作成しています。
リソースエディタでピクチャを貼り付けて、タイプでビットマップを選択し
Viewにビットマップを貼り付けています。
重ねてスタティックを貼り付けているのですが、その背景色をビットマップの
色と同じにするにはどうしたらよいでしょうか?
OnCtlColor()でビットマップと同じブラシを返してもうまくいきませんでした。
何かコツがあるのでしょうか?
よろしくお願いします。
前後の状況がわかんないので、うまくいくかどうかは不明だけど、たとえば、
HBRUSH CMyView::OnCtlColor( CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hBrush = CFormView::OnCtlColor( pDC, pWnd, nCtlColor);
if ( nCtlColor == CTLCOLOR_STATIC &&
pWnd->GetDlgCtrlID() == IDC_?) // 該当するSTATIC コントロールのID
{
pDC->SetBkMode( TRANSPARENT); // 背景透過モード
// 空のブラシを返す
return static_cast< HBRUSH>( ::GetStockObject( HOLLOW_BRUSH));
}
return hBrush; // デフォルトのブラシ
}
とかやってみるといいかも。
(本業に追われているので検証してません。X-))
Simuraさん
レスありがとうございます。
一見よさそうに見えたのですが、問題があります。
問題となるスタティックに時刻を表示しているのですが、
秒がすすむごとに前の文字が消えないので、ごちゃごちゃに
なってしまいます。
何かのきっかけで再描画されると、そのときはきれいになります。
どうしたらよいでしょうか?
アドバイスをお待ちしています。m(__)m
追記です。
毎秒、再描画というのはやりたくないです。負荷がかかりますので。
m(__)m
....一秒に一回の描画がそんなに高負荷なんですか?
# ミリ秒毎ならそうだろうけど。
っつーか秒が進むごとに文字は描画してんだろうから、
そのまえにその部分だけ塗りつぶせばよいのでは?
>....一秒に一回の描画がそんなに高負荷なんですか?
そうでもないとは思いますけれど。。。
別スレッドで何系統も通信をしているものですから。。。
アドバイスをお待ちしております。m(__)m
PAIさんの方法でも、ブラシを返す方法でもうまくいくようです。
ただ、白に近い背景色にたいして、そのブラシを返すと
どうも文字の背景が白く見えてしまいます。
私が”しきもう”なのかもしれません。
お騒がせしました。m(__)m