はじめまして
今VC6でエディットボックスの背景色・フォント色を変更する処理を作成しています。
エディットボックスの派生クラスを作成し、その中でON_WM_CTLCOLOR_REFLECTをオーバライドし、メンバ変数のブラシと色で背景色、及びフォント色を変更しています。
フォントの背景は透明にしたいので、SetBkModeで透明化もしているのですが、
OSが2000/98だと正常に動作するのですが、XPの場合だと透明化してくれません。
いろいろやってはみたのですが、解決策がみつからなったので、投稿させていただきました。
できましたら助言・解決策をよろしくおねがいします。
参考までにソースを記載します
-----------------------------------------------------------
CEditBgClr::CEditBgClr()
{
m_bgBrush.CreateSysColorBrush(COLOR_WINDOW);
m_color = RGB(0,0,0);
}
CEditBgClr & CEditBgClr::SetBackColor(COLORREF bgColor)
{
// ブラシを削除
m_bgBrush.DeleteObject();
// 指定された色でブラシを作成
m_bgBrush.CreateSolidBrush( bgColor);
// ウィンドウを再描画
RedrawWindow();
// 自分自身を返す
return *this;
}
HBRUSH CEditBgClr::CtlColor(CDC* pDC, UINT nCtlColor)
{
pDC->SetTextColor(m_color);
pDC->SetBkMode(TRANSPARENT);
return m_bgBrush;
}
自己解決しました
編集 削除