为控件设置背景颜色

为控件设置背景颜色

1.为控件所在对话框的类添加CBrush类型的变量,例如m_Brush;

   在该对话框的构造函数中,创建一个画刷,例如:

CDeleteFace::CDeleteFace(CWnd* pParent )
 : CDialog(CDeleteFace::IDD, pParent)
{
 //{{AFX_DATA_INIT(CDeleteFace)
 m_edit1 = _T("");
 //}}AFX_DATA_INIT
 m_brush.CreateSolidBrush(RGB(200,230,190));
}

为该对话框添加OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 函数:

在OnCtlColor中添加如下代码:

if (pWnd->GetDlgCtrlID()==IDC_EDIT1||pWnd->GetDlgCtrlID()==IDC_STATIC)
 {
  pDC->SetBkMode(TRANSPARENT);
  return m_brush;
 }

即可完成对控件的颜色设置!

2.上述方法对Button控件不适用;可用以下方法为Button控件设置背景:

为工程添加类CSXBtn,基类为CButton,为CSXBtn添加虚函数DrawItem(),完成对Button控件背景、字体颜色的设置;

代码如下:

void CSXBtn::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
 UINT uStyle = BS_DEFPUSHBUTTON ;//DFCS_BUTTONPUSH;
 
 // This code only works with buttons.
 ASSERT(lpDrawItemStruct->CtlType == ODT_BUTTON);
 
 // If drawing selected, add the pushed style to DrawFrameControl.
 if (lpDrawItemStruct->itemState & ODS_SELECTED)
  uStyle |= DFCS_PUSHED;
 
 // Draw the button frame.
 ::DrawFrameControl(lpDrawItemStruct->hDC, &lpDrawItemStruct->rcItem,
  DFC_BUTTON, uStyle);
 
 CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
 
 // Get the button's text.
 CString strText;
 GetWindowText(strText);
 
 // Draw the button text using the text color red.
 CBrush B;
 CRect rect;
 CRect focusRect;
 focusRect.CopyRect(&lpDrawItemStruct->rcItem);
 DrawFocusRect(lpDrawItemStruct->hDC, (LPRECT)&focusRect);
 focusRect.left += 4;
 focusRect.right -= 4;
 focusRect.top += 4;
 focusRect.bottom -= 4;
 
 rect.CopyRect(&lpDrawItemStruct->rcItem);
 pDC->Draw3dRect(rect, ::GetSysColor(COLOR_BTNSHADOW), ::GetSysColor(COLOR_BTNHILIGHT));
 B.CreateSolidBrush(RGB(200,230,190));
 ::FillRect(lpDrawItemStruct->hDC,&rect, (HBRUSH)B.m_hObject);
 ::SetBkMode(lpDrawItemStruct->hDC,TRANSPARENT);
 COLORREF crOldColor = ::SetTextColor(lpDrawItemStruct->hDC, RGB(0,0,0));
 ::DrawText(lpDrawItemStruct->hDC, strText, strText.GetLength(),
  &lpDrawItemStruct->rcItem, DT_SINGLELINE|DT_VCENTER|DT_CENTER);
 ::SetTextColor(lpDrawItemStruct->hDC, crOldColor);
}

将Button控件属性中“所有者绘制”选中,并为控件添加变量,变量类型为CSXBtn;即可!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值