如何更改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 地址控件)请求颜色,控件本身不会向其父级发送允许您应用自定义的相应消息。
换句话说:虽然可以自定义四个嵌入的编辑控件,但不能自定义未被编辑控件覆盖的区域。这很不幸,但事实就是如此。
我试图改变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 地址控件)请求颜色,控件本身不会向其父级发送允许您应用自定义的相应消息。
换句话说:虽然可以自定义四个嵌入的编辑控件,但不能自定义未被编辑控件覆盖的区域。这很不幸,但事实就是如此。