加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 设置透明背景Win32

发布时间:2020-12-14 04:04:13 所属栏目:Windows 来源:网络整理
导读:我想要做的很简单,但似乎没有很多信息.基本上我有一个普通的非透明父窗口,我想在父窗口中放置一个子窗口(它有自己的非透明控件).因此,我唯一要做的就是将子窗口的背景画笔设置为透明,但它仍然会绘制白色背景.尝试使用WS_EX_LAYERED样式和SetLayeredWindowAtt
我想要做的很简单,但似乎没有很多信息.基本上我有一个普通的非透明父窗口,我想在父窗口中放置一个子窗口(它有自己的非透明控件).因此,我唯一要做的就是将子窗口的背景画笔设置为透明,但它仍然会绘制白色背景.尝试使用WS_EX_LAYERED样式和SetLayeredWindowAttributes,但它使子窗口不可见.
在 Windows上实现“透明”子控件有??两种基本方法:

>在父窗口中处理WM_CTLCOLORxxx消息.
这是使现有控件支持透明度的便捷方式.每个控件将发送适合于控件类型的WM_CTLCOLORxxx消息.如果创建一个表示对话框背景外观的画笔,并从每条消息中返回该画笔,则净效果就像每个控件都涂有透明外部区域一样.
但是,如果您想要Alpha效果,或者控件在物理上相互重叠,则会失败.
>在父窗口中使用WS_EX_COMPOSITED.
没有这种风格,窗口管理器绘制子窗口的顺序是未定义的,在实践中,它从上到下.当尝试alpha混合重叠控件时,结果将是……令人不快. WS_EX_COMPOSITED将确保子窗口从下到上绘制.确保您不要使用WS_CLIPCHILDREN或WS_CLIPSIBLINGS样式,因为这样可以防止重叠区域被绘制.

您仍然需要通过WM_CTLCOLORxxx消息做一些聪明的事情,因为标准控件仍然会尝试使用dialog-background-grey填充整个rect.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读