2
VS2015对话框的MFC是否可以更改CMFCEditBrowseCtrl控件的背景颜色?
我有几个CMFCEditBrowseCtrl我的对话框实现自定义行为的浏览按钮:
是否可以有条件地设置的的背景编辑部分控件在红色在运行时?并在需要时将编辑的背景设置回默认?
谢谢。
更新 我看到控制从CEdit的得来,所以我要试试这个:
MFC: Changing the colour of CEdit
VS2015对话框的MFC是否可以更改CMFCEditBrowseCtrl控件的背景颜色?
我有几个CMFCEditBrowseCtrl我的对话框实现自定义行为的浏览按钮:
是否可以有条件地设置的的背景编辑部分控件在红色在运行时?并在需要时将编辑的背景设置回默认?
谢谢。
更新 我看到控制从CEdit的得来,所以我要试试这个:
MFC: Changing the colour of CEdit
从上面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));
谢谢您的帮助! –