解决透明static控件重叠问题
来源:互联网 发布:excel破解密码软件 编辑:程序博客网 时间:2024/04/27 10:19
- HBRUSH CStadus::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
- {
- HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
- // TODO: Change any attributes of the DC here
- if (nCtlColor == CTLCOLOR_STATIC)
- {
- pDC->SetTextColor(RGB(0, 0, 0));//设置成你背景的颜色
- pDC->SetBkMode(0);//透明
- return (HBRUSH)::GetStockObject(NULL_BRUSH);
- }
- // TODO: Return a different brush if the default is not desired
- return hbr;
- }
HBRUSH CStadus::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);// TODO: Change any attributes of the DC hereif (nCtlColor == CTLCOLOR_STATIC){pDC->SetTextColor(RGB(0, 0, 0));//设置成你背景的颜色pDC->SetBkMode(0);//透明return (HBRUSH)::GetStockObject(NULL_BRUSH);}// TODO: Return a different brush if the default is not desiredreturn hbr;}
通过上述代码使static控件实现透明效果,但是这时候通过setWindowText()改变static控件的内容时,会发现出现了文字重叠在一起,调用次数越多,重叠越严重,黑成一团。研究了老久,终于找到解决方法
方法1:RedrawWindow()
在控件需要改变文字的代码后面加入这个函数即可,如下:
- GetDlgItem(IDC_STATIC)->SetWindowText("your string");
- GetDlgItem(IDC_STATIC)->GetParent()->RedrawWindow();
GetDlgItem(IDC_STATIC)->SetWindowText("your string");GetDlgItem(IDC_STATIC)->GetParent()->RedrawWindow();
这个方法比较奏效,但是有时候窗口刷新太频繁,一闪一闪,效果不太好。幸好有高人指点,可以用局部刷新来实现。
方法2:局部刷新
可以自定义一个函数如下:
- {
- CRect rc;
- GetDlgItem(uCtlID)->GetWindowRect(&rc);
- ScreenToClient(&rc);
- InvalidateRect(rc);
- }
void YourDlg::RefreshControl(UINT uCtlID){ CRect rc; GetDlgItem(uCtlID)->GetWindowRect(&rc); ScreenToClient(&rc); InvalidateRect(rc); }
每次改变控件内容后调用下这个函数即可,这个方法比较推荐。
- 解决透明static控件重叠问题
- 解决透明static控件重叠问题
- 解决透明static控件后刷新问题
- 解决透明static控件后刷新问题
- 解决透明static控件后刷新问题
- 解决当静态文本或编辑框等控件设置为透明后文字重叠问题
- 控件重叠透明问题的简单处理方法
- static 控件透明设置
- static控件透明
- static控件透明
- 实现STATIC控件透明
- MFC解决Static控件背景透明时文本覆盖重影
- MFC解决Static控件背景透明时文本覆盖重影
- Static控件背景透明时文字覆盖问题的解决方案
- MFC中Static控件透明,重影,长度问题
- MFC中Static控件透明,重影,长度问题
- MFC解决设置控件内容 文字重叠问题 (SetWindowText)
- C# WinForm 图片控件重叠透明
- ecshop网站开发-ecshopdev小鸟(http://www.ecshopdev.com)
- delphi怎样调用外部EXE文件
- HIVE中UDTF编写和使用
- SVN switch 用法详解
- C# regex replace
- 解决透明static控件重叠问题
- linux系统dig和nslookup的安装
- uva 10635 Prince and Princess
- 为什么项目经理拿的钱比程序员多?
- ubuntu下安装xcfe4桌面环境
- SqlServerHelper类,整理微软提供的helper
- .Net 登录窗口
- php画图表
- confuse about thinking in English