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;
}
通过上述代码使static控件实现透明效果,但是这时候通过setWindowText()改变static控件的内容时,会发现出现了文字重叠在一起,调用次数越多,重叠越严重,黑成一团。研究了老久,终于找到解决方法
方法1:RedrawWindow()
在控件需要改变文字的代码后面加入这个函数即可,如下:
GetDlgItem(IDC_STATIC)->SetWindowText("your string");
GetDlgItem(IDC_STATIC)->GetParent()->RedrawWindow();
这个方法比较奏效,但是有时候窗口刷新太频繁,一闪一闪,效果不太好。幸好有高人指点,可以用局部刷新来实现。
方法2:局部刷新
可以自定义一个函数如下:
void YourDlg::RefreshControl(UINT uCtlID)
{
CRect rc;
GetDlgItem(uCtlID)->GetWindowRect(&rc);
ScreenToClient(&rc);
InvalidateRect(rc);
}
每次改变控件内容后调用下这个函数即可,这个方法比较推荐。
分享到:
相关推荐
为公司开发的静态控件,解决了所有的透明显示问题 1.动态刷新,文字重叠问题 2.父窗口放大之后,背景不对问题 3.频繁刷新闪动问题。 csdn有个帖子几十页也没解决,足见开发的难度之高。
static控件动态透明显示的完美解决方案
visual c++ vc Static控件背景透明时 文字覆盖问题的解决方案.zip
自定义Static控件响应 MFC
用Static Text控件显示当前时间 用Static Text控件显示当前时间 用Static Text控件显示当前时间 用Static Text控件显示当前时间
CStatic控件应用的例子,可以加载位图,透明位图,以及拖拽控件,拖拽位图到Static控件等。适合初始学习VC界面编程的人看看。
强大的自绘Static控件,任意改变背景颜色,字体及大小,快来看看吧!
可以直接创建对象,进行设置。非常方便 能满足平常需要
这个控件是基于CStatic派生的一个类,可放大缩小,带滚动条,想做成功能强大的(想做成一个视觉图片软件中的)控件,结果发现很难。。。 也还好,只能说够用。。bug也会不少,权当参考吧。这个static区域重绘,实再...
MFC Static控件的自绘,实现界面控件美化效果.
用Static Text控件显示当前系统时间 用Static Text控件显示当前系统时间 用Static Text控件显示当前系统时间
Static控件 动态滚动显示内容
由Static控件制作的StaticList控件,具有非常大的可定制性,和大家一起研究学习
Activex Control Button Static控件 自己根据VC6.0编写的几乎与之一模一样的控件
软件开发中,为了让用户更喜欢使用...本文简单地介绍下对话框背景贴图和按钮贴图,以及Static控件自定义成各种Static效果。博客地址http://blog.csdn.net/bingdianlanxin/article/category/2686551,有问题欢迎留言。
1、支持加载文件中的PNG图片作为背景 2、支持透明的Static控件 3、支持透明的Radio控件 4、支持透明的CheckBox控件 5、支持透明的GroupBox控件
VC用Static控件绘制曲线,论坛有朋友需要,免费提供参考!
1、支持加载资源中的背景图片 2、支持透明的Static控件 3、支持透明的Radio控件 4、支持透明的CheckBox控件 5、支持透明的GroupBox控件
MFC实现STATIC TEXT控件的鼠标事件解决方案 MFC实现STATIC TEXT控件的鼠标事件 MFC实现STATIC TEXT的鼠标事件解决方案 MFC实现STATIC TEXT的鼠标事 MFC实现STATIC TEXT控件的鼠标事件解决方案 MFC实现STATIC TEXT...