如何更改CIPAddressCtrl 的背景颜色?

How to change the background color of CIPAddressCtrl?

我试图改变MFC中IP地址控件的背景颜色和文字颜色。 有一次,我改变了文本颜色和背景颜色,但是编辑控件之间的点不显示。 我的代码如下:

BEGIN_MESSAGE_MAP(KIPAddressCtrl, CIPAddressCtrl)
    ON_WM_CTLCOLOR()
    ON_WM_PAINT()
END_MESSAGE_MAP()


// KIPAddressCtrl message handlers

HBRUSH KIPAddressCtrl::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    m_brush.DeleteObject();
    m_brush.CreateSolidBrush(RGB(255, 255, 0));

    CRect rc;
    CWindowDC dc(this);
    GetWindowRect(&rc);
    
    dc.Draw3dRect(0, 0, rc.Width(), rc.Height(), RGB(0, 0, 255), RGB(0, 0, 255));   
    pDC->SetTextColor(RGB(255, 0, 0));  
    pDC->SetBkColor(RGB(255, 255, 0));
    
    return (HBRUSH)m_brush;
}

void KIPAddressCtrl::OnPaint()
{
    CRect rc;
    CPaintDC dc(this);

    GetClientRect(&rc);     
    dc.FillSolidRect(&rc, RGB(255, 255, 0));

    //CIPAddressCtrl::OnPaint();
}

我的结果是

但我想

如何解决?

分隔符消失的原因是 KIPAddressCtrl::OnPaint() 处理程序中的 FillSolidRect 调用覆盖了默认实现所做的任何事情。

着色 IP Address Control the way you want isn't supported. While the embedded Edit Controls 从其父级(IP 地址控件)请求颜色,控件本身不会向其父级发送允许您应用自定义的相应消息。

换句话说:虽然可以自定义四个嵌入的编辑控件,但不能自定义未被编辑控件覆盖的区域。这很不幸,但事实就是如此。