エディットボックスでのフォント背景の透過

解決


てる  2003-12-19 15:00:33  No: 52929  IP: [192.*.*.*]

はじめまして
今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;
}

編集 削除
てる  2003-12-22 12:22:30  No: 52930  IP: [192.*.*.*]

自己解決しました

編集 削除