当前位置:C++技术网 > 资讯 > 设置Static标签控件的文字颜色和背景颜色

设置Static标签控件的文字颜色和背景颜色

更新时间:2015-06-23 22:38:59浏览次数:1+次

    MFC中设置控件Static静态标签的文字颜色和文字的背景颜色。可以在WM_CTLCOLOR消息响应中设置。
    具体的看看下面的。
    首先,在窗口建立这个消息的消息映射,使用类向导完成。然后类向导建立了一个响应函数,为OnCtlColor。这个函数中有几个参数,CDC* pDC, CWnd* pWnd, UINT nCtlColor。分别是,控件的DC绘制对象指针,包含颜色请求绘制的控件的父窗口对象指针,以及请求颜色的控件类型标志。返回一个画刷句柄。
    然后我们根据这些进行标签颜色的绘制。我们要判断要让哪个控件文字颜色改变,通过pWnd->GetDlgCtrlID() == IDC_S这个语句可以进行比较,IDC_S就是标签的控件ID,注意,标签控件必须改掉默认的ID。如果只是改变静态标签控件的颜色,对于nCtlColor可以不做判断。但是如果既有标签还有其他的控件类型,那么我们还需要将请求颜色的控件类型进行比较,标签的是CTLCOLOR_STATIC。所以按照CTLCOLOR_STATIC==nCtlColor的判断就可以确定请求的控件是静态标签了。然后在这个里面判断前面说的控件ID。
    判断完成后,我们就要确定把文字进行颜色设置。这个时候pDc就很重要了。
    设置文本的颜色,调用函数SetTextColor,传递的参数为COLORREF类型的变量,我们使用RGB宏来设置这个值,如设置文本为红色,可以这样:RGB(255,0,0),RGB(红色,绿色,蓝色),颜色取值为0-255,。那么最终的语句就是:pDC->SetTextColor(RGB(255,0,0));这样就可以设置了文本颜色。
    设置文本背景颜色,我们调用SetBkColor,传递的参数和上面的SetTextColor一样,就不多说了。这样,启动程序运行,就能够看到标签的文字颜色改变了。
    但是,有时候,我们并不希望有背景色,想背景色是透明的。那么这个时候,就可以设置背景模式,调用函数SetBkMode。这个函数也是只有一个参数,并且参数是一个枚举值,分别为透明(TRANSPARENT)和不透明(OPAQUE)。如果背景模式设置为透明,那么后面设置背景颜色则没有效果。此时,不管背景是什么颜色,标签文本的背景都是透明的。如果取消背景透明,只要再设置一下,传入OPAQUE参数即可。完整的代码是:pDC->SetBkMode(TRANSPARENT);
    以上就是静态标签的文字颜色设置和背景颜色和透明度的设置。对于其他控件的背景颜色的设置,还在学习中,如果你学过,请写出来一起分享吧。