エディットボックスの背景色 SetBkColor()

[戻る]
ロケットサラダ 2007/07/10(火) 20:26:38
連続で投稿失礼致します。
VC++6.0 MFC ダイアログベースです。

読み込み専用のエディットボックスに色を付けたいのですが、
WinXPでは背景色を指示通りに表示することが可能なのですが、

Win2k、98で試したところグレーでした。
Win2k、98では、デバッグ環境が無いため、関数内部の処理がよく解りません。

Win2k、98でも、色を表示させるにはどうしたら良いでしょうか?
よろしくお願い致します。


エディットボックスには文字は表示させません。
ただ色見本のような形で表示させています。
エディットのプロパティは、境界線と、読み取り専用にチェックを入れています。

下記がコードです。

#define EDITBOX_COLOR_M0 RGB(0,0,255)

HBRUSH C*****Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    
    if ( pWnd->GetDlgCtrlID() == IDC_EDIT_Coloer_M0 ) {
//        pDC->SetBkMode(OPAQUE);          /*背景色を不透明にする*/
//        pDC->SetBkMode(TRANSPARENT);     /*背景色を透明にする*/
           pDC->SetBkColor( EDITBOX_COLOR_M0 );

    return hbr;
}

瀬戸っぷ [E-Mail] 2007/07/11(水) 00:10:38
C*****DlgにCBrushクラスのメンバ変数持たせて、
コンストラクタでCBrush::CreateSolidBrush()でブラシを作って、
HBRUSH C*****Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
でそのブラシを返せばよろしいのでは?

微妙に違いますが、参考として…
http://techtips.belution.com/ja/vc/0052/

ロケットサラダ 2007/07/11(水) 09:26:34
//ヘッダファイル
CBrush    m_brEditM0;        // エディットボックスの背景色ブラシ(追加)

#define EDITBOX_COLOR_M0 RGB(0,0,255)

//コンストラクタ
m_brEditM0.CreateSolidBrush( EDITBOX_COLOR_M0 );    // 背景

//デストラクタ
m_brEditM0.DeleteObject();     // 背景



HBRUSH C*****Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    switch(nCtlColor){    
        case CTLCOLOR_STATIC:
               if ( pWnd->GetDlgCtrlID() == IDC_EDIT_Coloer_M0 ) {
                    //pDC->SetBkMode(OPAQUE);
                    //pDC->SetBkMode(TRANSPARENT);                
                 pDC->SetBkColor( EDITBOX_COLOR_M0 );
                return (HBRUSH) m_brEditM0;
            }
    }
    return hbr;
}

ロケットサラダ 2007/07/11(水) 09:29:59
[[解決]]
瀬戸っぷさんありがとうございます。

上記コードで、表示させることが出来ました。
コードだけ書いて、間違って送信してしまいました。

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