2016-04-02 5 views
2

VS2015 Dialog MFCМожно ли изменить цвет фона элемента управления CMFCEditBrowseCtrl?

У меня есть несколько CMFCEditBrowseCtrl реализован в диалоге моего с пользовательским поведением для просмотра кнопки:

CMFCEditBrowseCtrl dialog

Можно ли условно установить фон из Редактировать часть элемента управления красный во время выполнения? И когда требуется установить фон редактирования обратно на по умолчанию?

спасибо.

Update Я вижу, что управление происходит от 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

Спасибо за вашу помощь! –

Смежные вопросы