2016-04-02 45 views

回答

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

谢谢您的帮助! –