`
unblue2008
  • 浏览: 12648 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
最近访客 更多访客>>
社区版块
存档分类
最新评论

解决透明static控件重叠问题

阅读更多
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);   
}   

每次改变控件内容后调用下这个函数即可,这个方法比较推荐。

分享到:
评论

相关推荐

    visual c++ vc Static控件背景透明时 文字覆盖问题的解决方案.zip

    为了解决这一问题,我们需要深入理解Windows API中的Static控件行为以及如何通过自定义画图来实现透明效果。以下是一些关键知识点和步骤: 1. **理解Static控件的默认行为**: 默认情况下,Static控件是不透明的,...

    CStatic静态控件透明-完美解决

    总的来说,解决CStatic控件的透明问题需要深入理解Windows消息机制、绘图函数以及透明渲染技术。通过自定义控件并覆盖关键的消息处理函数,我们可以实现动态刷新、背景适应和无闪烁的透明效果,从而提升用户界面的...

    VC中对话框窗体背景透明而控件不透明

    - 当对话框背景透明时,需要考虑到控件的重叠和鼠标事件的处理,因为透明部分不会接收鼠标事件。 - 使用`SetLayeredWindowAttributes`可能需要Windows 2000及更高版本的支持。 - 透明度的调整需要谨慎,过度的...

    按钮重叠效果-完美解决 zorder调整 Z顺序调整

    通过对VC++中按钮重叠效果的实现方法进行详细分析,我们可以看出,在面对复杂的UI布局时,合理的使用API函数和窗口样式可以有效地解决问题。对于初学者而言,掌握这些基础知识不仅能够帮助他们更好地进行界面设计,...

    对话框中控件大小的自适应改变

    控件的自适应布局应考虑到控件之间的相对位置,以避免在调整大小时发生重叠或不规则布局。同时,要考虑最小和最大尺寸限制,确保对话框在不同分辨率下都能正常显示。 综上所述,实现MFC对话框中控件大小的自适应...

    vc++编程技术600个大型项目源码

    当将`CStatic`控件设置为透明时,可能会遇到文字重叠的问题。这是因为设置了透明之后,`CStatic`控件不再响应`WM_ERASEBKGND`消息,导致文字重叠。解决方法有两种: 1. 在更改`CStatic`控件的文字后,刷新父窗口,仅...

    VC++获得指定点的控件指针

    在VC++编程中,有时我们需要获取用户在界面上点击或选择的特定位置对应的控件...实际应用中,可能需要考虑更多细节,如控件的透明度、重叠情况等。理解并熟练掌握这一过程对于编写交互性强的Windows应用程序至关重要。

    Android MD控件之CardView

    - `cardPreventCornerOverlap`: 是否防止角落重叠,通常设置为true以获得更好的视觉效果。 - `contentPadding`: 内容区域的内边距。 ### 5. 结合RecyclerView使用 `RecyclerView`是一个高效的列表视图,适合显示...

    layui-laydate时间日历控件使用方法详解

    10. zIndex: 设置控件的层叠顺序,默认值为***,通过这个参数可以解决与其他元素重叠的问题。 11. showBottom: 控制是否显示底部栏,默认为true。 12. btns: 设置底部按钮栏中显示哪些按钮,支持'clear', 'now', '...

    C# Winform 双层窗体例子

    双层窗体的概念是指在应用程序中存在两个或多个重叠的窗体,通常用于实现半透明、动画效果或者其他复杂的用户界面设计。在C# Winform中,我们可以利用窗体的Z轴顺序来控制它们的前后关系,实现双层窗体的交互。 ...

    Android-把ViewPager的PageTransformer显示为堆栈

    在Android开发中,ViewPager是一个非常常用的控件,用于展示多个Fragment或者View,并允许用户通过滑动来切换页面。为了增强用户体验和界面的视觉效果,我们可以使用PageTransformer接口来自定义ViewPager的页面转换...

    vb语言程序设计考试题(五).docx

    13. 同一Form窗体中的控件可以相互重叠,显示的层次次序可以通过ZOrder方法调整。所以错误。 14. 单选按钮和复选框的Value属性类型相同,都可取0或1,对应于False和True。所以错误。 15. 图片框的Move方法只改变...

    MP3播放器(C#语言编写)

    private static extern int mciSendString(string command, StringBuilder returnBuffer, int returnLength, IntPtr hwndCallback); ... string command = "open \"path_to_mp3_file.mp3\" type mpegvideo alias ...

    vc++ 应用源码包_1

    任务管理器应该大家都很熟悉,论坛里也有好多的任务管理器的源码,解决CListCtr刷新时滚动条跳到开始处。 VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++...

    vc++ 应用源码包_2

    任务管理器应该大家都很熟悉,论坛里也有好多的任务管理器的源码,解决CListCtr刷新时滚动条跳到开始处。 VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++...

    vc++ 应用源码包_6

    任务管理器应该大家都很熟悉,论坛里也有好多的任务管理器的源码,解决CListCtr刷新时滚动条跳到开始处。 VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++...

    vc++ 应用源码包_3

    任务管理器应该大家都很熟悉,论坛里也有好多的任务管理器的源码,解决CListCtr刷新时滚动条跳到开始处。 VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++...

    vc++ 应用源码包_5

    任务管理器应该大家都很熟悉,论坛里也有好多的任务管理器的源码,解决CListCtr刷新时滚动条跳到开始处。 VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++...

    vc++ 开发实例源码包

    电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 CctryLog(web拦截网页帐号密码) 实现了一个控件去获得IHTMLDocument2接口,然后读取内容,匹配用户名与密码等。 CFile64_src 操作大...

    尚硅谷_前端_面试题

    - 使用`zoom: 1`可以使元素变成一个新的BFC,从而解决浮动元素导致的高度塌陷问题。 27. **使用CSS预处理器吗?喜欢那个?** - CSS预处理器(如Sass、Less等)能够提高CSS的可维护性和扩展性,提供变量、嵌套规则...

Global site tag (gtag.js) - Google Analytics