如何动/静 态 两种方式修改Static控件的颜色

转自https://www.cnblogs.com/52yixin/articles/2271278.html

首先,我觉得VC很坑爹!在C#等那些中,要修改比如一个Label或者一个按钮的颜色...那简直就是小学生都会做的事情...可是到VC++里面,你说你想修改Label的颜色。。甚至你说你要修改按钮的。。。痛苦啊~!!!有木有!!!

 

可是没办法,还是得搞,继续吧。。。

 

方法一:静态修改

 

这种方式比较简单,就是在需要修改的那个类中,重载WM_CTLCOLOR函数即可,代码如下:

HBRUSH CctlfinalDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);

    // TODO:  Change any attributes of the DC here
    if(pWnd-> GetDlgCtrlID()==IDC_STATIC) 
    { 
        pDC-> SetBkMode(TRANSPARENT);   //你可以修改背景模式
        //pDC-> SetBkColor(m_bkcolor); //你可以修改背景颜色
        //hbr=CreateSolidBrush(m_bkcolor);  //你可以修改画刷
        pDC->SetTextColor(RGB(255,0,0));  //你当然可以修改字体颜色
    } 

    // TODO:  Return a different brush if the default is not desired
    return hbr;
}

好了,于是乎,你运行你的程序,就可以看到你的Static控件变成红色了!

 

方法二:动态修改

 

当然有的人非常想点击一个按钮什么的,达到将刚才的红色Static变化为绿色..这个动态也很烦人的,这个时候需要我们在按钮相应函数中,写如下代码(当然首先你自己去定义一个COLORREF的变量m_bkcolor咯)

void CctlfinalDlg::OnBnClickedButton1()
{
    // TODO: Add your control notification handler code here
    m_bkcolor=RGB(0,255,0);   //Green
    GetDlgItem(IDC_STATIC)-> InvalidateRect(NULL); 
}

主要这个函数 : InvalidateRect....解释在此,我就不多说了 http://baike.baidu.com/view/1226797.html?fromTaglist

 

然后再我们重载的OnCtlColor函数中,作如下修改即可:

HBRUSH CctlfinalDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);

    // TODO:  Change any attributes of the DC here
    if(pWnd-> GetDlgCtrlID()==IDC_STATIC) 
    { 
        pDC->SetTextColor(m_bkcolor);
    } 

    // TODO:  Return a different brush if the default is not desired
    return hbr;
}

然后你运行并点击按钮,就能看到你的Static变为了绿色的字体。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值