我编写了一个附加属性,可以在窗口上设置该属性,以将玻璃框架延伸到客户区域(使用DwmExtendFrameIntoClientArea
应用程序编程接口)。在大多数情况下它工作得很好。现在我希望我的窗口是无边框的,所以我在窗口上设置了以下属性:
WindowStyle="None"
ResizeMode="NoResize"
Background="Transparent"
u:WinUtil.EnableGlass="True"
ShowInTaskbar="False"
但有了这些属性,玻璃根本不会显示:我的窗户只有透明背景。如果我设置ResizeMode
to CanResize
,显示了玻璃,但我不希望窗口可调整大小。
我怀疑这是因为玻璃效果是通过将非客户框架延伸到客户区域来获得的:WindowStyle = None
and ResizeMode = NoResize
,没有非客户端框架,所以没有什么可以扩展的。当我启用调整大小时,它会在窗口周围创建一个框架,因此可以扩展该框架。
我想应该可以通过设置适当的 WS_* 位来创建一个具有细边框、没有标题栏且无法调整大小的窗口,但我不知道到底是哪些
所以我的问题是:
- 应设置或取消设置哪些样式位以获得所需的外观和行为?
- 如何初始化窗口的样式位? Window类似乎没有像Windows Forms这样的东西
CreateParams
属性...创建句柄后可以设置这些位吗?
- 我找到了
HwndSource
类可以作为问题 2 的答案,但如果您不是 Win32 专家,那么使用起来似乎有点复杂...这对我的问题来说是一个明智的解决方案吗?
欢迎任何建议
你有没有尝试过使用Dwm启用窗口模糊?这使您能够使窗口客户区的特定部分透明。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)