(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);