MFC设置 Static Text控件背景透明

2021年9月16日 5点热度 0条评论 来源: 北辰溪1991

(1)设置控件的属性Transparent 为True

在资源窗口找到,Static Text控件,右键选择属性,找到Transparent属性,将其设置为True,如图所示

 

(2) 重载OnCtlColor函数

点击主窗口,选择属性,找到Message一栏,选择WM_CTLCOLOR,点击右侧下拉列表列表中的OnCtlColor,弹出OnCtlColor函数体

 

在该函数体中加入以下代码: 

    if(pWnd->GetDlgCtrlID() == IDC_DEVICE_STAT)     //IDC_DEVICE_STAT为Static控件的ID
    {
        pDC->SetTextColor(RGB(0,0,0));    //设置控件字体颜色
        pDC->SetBkMode(TRANSPARENT);   //设置透明属性
        return (HBRUSH)GetStockObject(NULL_BRUSH);   //返回空画刷
    } 

(3)解决重影问题,添加刷新局部背景的函数,该函数主要用于单独刷新所选择的控件的区域

    void XXXXDlg::RefreshControl(UINT uCtlID)
    {
        CRect rc;
        GetDlgItem(uCtlID)->GetWindowRect(&rc);
        ScreenToClient(&rc);
        InvalidateRect(rc);
    } 

(4)调用并刷新 

        在设置Static Text内容的地方都以下面的方式调用

            m_StaticDeviceStat.SetWindowText("msg");//m_StaticDeviceStat为控件绑定的变量
            RefreshControl(IDC_DEVICE_STAT); 

    原文作者:北辰溪1991
    原文地址: https://blog.csdn.net/zhangchao772329724/article/details/83182463
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。