2016-04-02 19 views
2

VS2015ダイアログMFCCMFCEditBrowseCtrlコントロールの背景色を変更することはできますか?

私はいくつかのCMFCEditBrowseCtrlブラウズボタンのカスタム動作で私のダイアログ上に実装されています:

CMFCEditBrowseCtrl dialog

は条件付きでの背景を設定することが可能ですの部分をコントロールの赤のに実行時に編集しますか?また、必要に応じて、編集の背景をデフォルトのに戻しますか?

ありがとうございます。

更新 私はコントロールがCEditのに由来していることがわかり、私はこれを試してみるつもりです:

MFC: Changing the colour of CEdit

答えて

2

link上からの答えが正しい方向にあり、ただし、正しく実装されていません。 CtlColorは、ブラシハンドルを返す必要があります。またCDC::SetBkColor

class cmfc_edit : public CMFCEditBrowseCtrl 
{ 
public: 
    COLORREF bkcolor; 
    CBrush brush; 

    void setBrushColor(COLORREF clr) 
    { 
     bkcolor = clr; 
     brush.DeleteObject(); 
     brush.CreateSolidBrush(clr); 
    } 

    HBRUSH CtlColor(CDC* pDC, UINT) 
    { 
     if (!brush.GetSafeHandle()) 
      return GetSysColorBrush(COLOR_WINDOW); 
     pDC->SetBkColor(bkcolor); 
     return brush; 
    } 

    DECLARE_MESSAGE_MAP() 
}; 

BEGIN_MESSAGE_MAP(cmfc_edit, CMFCEditBrowseCtrl) 
    ON_WM_CTLCOLOR_REFLECT() 
END_MESSAGE_MAP() 

使用にテキストの背景色を設定する必要があります。

mfc_edit.setBrushColor(RGB(255, 0, 0)); 
+0

はあなたの助けをありがとう! –

関連する問題