VC++ MFC 中动态更改透明背景的静态文本时重叠现象(尤其是界面设置了背景图片时)

来源:互联网 发布:如何查询淘宝信用 编辑:程序博客网 时间:2024/05/16 12:52

在公司做项目的时候,今天遇到标题中的那个问题,经过问同事和谷歌,用了很多方法,现把最好的方法总结如下:

// 改变静态文本(背景透明)的内容,并修正背景重叠的现象void CClientDlg::ChgStaticText(CStatic *cTxt, const CString sContect){cTxt->SetWindowText(sContect);// 重绘 文本控件CRect rect;cTxt->GetWindowRect(&rect); // 只局部刷新CWnd *pParent = cTxt->GetParent();if (pParent){pParent->ScreenToClient(&rect); // 把屏幕坐标转换为窗口坐标pParent->InvalidateRect(&rect); // 更新矩形区域(重绘)}}

// 我把方法封装起来了,这样可以多次调用。