所以我有一个很好的答案,它解释了如何在焦点对准CMFCBrowseEditCtrl
时将背景色设置为>
https://stackoverflow.com/a/36394562/2287576
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;
}
//optional, change color on focus change
void OnSetFocus(CWnd* w)
{
setBrushColor(RGB(255, 0, 0));
CMFCEditBrowseCtrl::OnSetFocus(w);
}
void OnKillFocus(CWnd* w)
{
setBrushColor(RGB(255, 255, 255));
CMFCEditBrowseCtrl::OnKillFocus(w);
}
DECLARE_MESSAGE_MAP()
};
它工作正常,我对此没有任何问题。唯一的问题是当我调用弹出窗口时。由于弹出窗口现在具有焦点,因此我设置的背景突出显示被重置为默认设置。即使显示弹出窗口,也可以保留请求的背景吗?
因此,我只希望编辑控件在具有焦点时具有黄色背景,并在激活弹出窗口时保留该背景。当我移到对话框上的另一个控件时,黄色也应该消失。
这可能吗?
答案 0 :(得分:1)
这有效:
void CChristianLifeMinistryStudentEdit::OnKillFocus(CWnd* pNewWnd)
{
if(GetParent()->IsChild(pNewWnd))
SetBrushColour(GetSysColor(COLOR_WINDOW));
CMFCEditBrowseCtrl::OnKillFocus(pNewWnd);
}