关于控件背景透明问题
对于一个静态控件IDC_STATIC1,在设置对话框背景颜色之后,使控件透明于背景之上,也就是只显示出静态控件的Caption。
1.我设置了该控件Extended Style中Transparent属性,但不起作用,这是为什么?
2.在 ON_WM_CTLCOLOR()消息响应函数中加入了
if( nCtlColor == CTLCOLOR_STATIC)
{
pDC->SetBkMode(TRANSPARENT); //设置背景透明
return HBRUSH(GetStockObject(HOLLOW_BRUSH));
}
可以使控件透明,但是如果改为在Onpaint函数中执行GetDlgItem(IDC_STATIC1)->GetDc()->SetBkMode(TRANSPARENT);就不起作用,这是为什么?
3.如果在 ON_WM_CTLCOLOR()消息响应函数中加入了
if( nCtlColor == CTLCOLOR_STATIC)
{
pDC->SetBkMode(TRANSPARENT); //设置背景透明
return HBRUSH(GetStockObject(HOLLOW_BRUSH));
}
然后再使用USkin.lib加入对话框皮肤,if( nCtlColor == CTLCOLOR_STATIC) 永远不会进入,可能USkin屏蔽了CTLCOLOR_STATIC,如果是这样该如何修改?
求大神指点一二
1.我设置了该控件Extended Style中Transparent属性,但不起作用,这是为什么?
2.在 ON_WM_CTLCOLOR()消息响应函数中加入了
if( nCtlColor == CTLCOLOR_STATIC)
{
pDC->SetBkMode(TRANSPARENT); //设置背景透明
return HBRUSH(GetStockObject(HOLLOW_BRUSH));
}
可以使控件透明,但是如果改为在Onpaint函数中执行GetDlgItem(IDC_STATIC1)->GetDc()->SetBkMode(TRANSPARENT);就不起作用,这是为什么?
3.如果在 ON_WM_CTLCOLOR()消息响应函数中加入了
if( nCtlColor == CTLCOLOR_STATIC)
{
pDC->SetBkMode(TRANSPARENT); //设置背景透明
return HBRUSH(GetStockObject(HOLLOW_BRUSH));
}
然后再使用USkin.lib加入对话框皮肤,if( nCtlColor == CTLCOLOR_STATIC) 永远不会进入,可能USkin屏蔽了CTLCOLOR_STATIC,如果是这样该如何修改?
求大神指点一二
...全文
相关推荐
visual c++ vc Static控件背景透明时 文字覆盖问题的解决方案.zip
这个问题通常表现为静态控件的背景变为透明,但其上的文字仍然显示,导致文字与下面的窗口内容重叠,视觉效果不佳。
c# 透明背景和透明控件实现
在C#编程中,透明背景和透明控件的实现是一个常见的需求,特别是在创建美观和具有交互性的用户界面时。本文将深入探讨如何在C#中实现这些特性,并解决相关问题,如多个窗体的置顶、背景半透明以及控件半透明。
VC通用控件背景透明的方法
**WM_ERASEBKGND**:此消息在控件需要擦除背景时发送。如果控件是透明的,我们可以简单地忽略这个消息,避免重绘背景导致的重影问题。
一个透明位图显示控件
总结来说,透明位图显示控件是一种强大的工具,用于解决UI设计中的背景融合问题。
C#WinForm开发:将控件背景色设置为透明
在实际项目中,可能还需要考虑控件的鼠标事件处理,以及与其他控件交互时可能出现的问题,确保透明效果的正确性和稳定性。


其他开发语言
