ビットマップにのせたスタティックの背景色 – プログラミング – Home

ビットマップにのせたスタティックの背景...
 
通知
すべてクリア

[解決済] ビットマップにのせたスタティックの背景色


kai
 kai
(@kai)
ゲスト
結合: 23年前
投稿: 64
Topic starter  

お世話になっています。
Win2000,VC6,MFC,SDI(CFormView)で作成しています。

リソースエディタでピクチャを貼り付けて、タイプでビットマップを選択し
Viewにビットマップを貼り付けています。
重ねてスタティックを貼り付けているのですが、その背景色をビットマップの
色と同じにするにはどうしたらよいでしょうか?

OnCtlColor()でビットマップと同じブラシを返してもうまくいきませんでした。
何かコツがあるのでしょうか?
よろしくお願いします。


引用未解決
トピックタグ
Shimura
 Shimura
(@Shimura)
ゲスト
結合: 22年前
投稿: 36
 

前後の状況がわかんないので、うまくいくかどうかは不明だけど、たとえば、

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-))


返信引用
kai
 kai
(@kai)
ゲスト
結合: 23年前
投稿: 64
Topic starter  

Simuraさん

レスありがとうございます。
一見よさそうに見えたのですが、問題があります。

問題となるスタティックに時刻を表示しているのですが、
秒がすすむごとに前の文字が消えないので、ごちゃごちゃに
なってしまいます。
何かのきっかけで再描画されると、そのときはきれいになります。

どうしたらよいでしょうか?
アドバイスをお待ちしています。m(__)m


返信引用
kai
 kai
(@kai)
ゲスト
結合: 23年前
投稿: 64
Topic starter  

追記です。

毎秒、再描画というのはやりたくないです。負荷がかかりますので。

m(__)m


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

....一秒に一回の描画がそんなに高負荷なんですか?
# ミリ秒毎ならそうだろうけど。


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

っつーか秒が進むごとに文字は描画してんだろうから、
そのまえにその部分だけ塗りつぶせばよいのでは?


返信引用
kai
 kai
(@kai)
ゲスト
結合: 23年前
投稿: 64
Topic starter  

>....一秒に一回の描画がそんなに高負荷なんですか?

そうでもないとは思いますけれど。。。

別スレッドで何系統も通信をしているものですから。。。

アドバイスをお待ちしております。m(__)m


返信引用
kai
 kai
(@kai)
ゲスト
結合: 23年前
投稿: 64
Topic starter  

PAIさんの方法でも、ブラシを返す方法でもうまくいくようです。
ただ、白に近い背景色にたいして、そのブラシを返すと
どうも文字の背景が白く見えてしまいます。

私が”しきもう”なのかもしれません。
お騒がせしました。m(__)m


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました