我写了一个附加属性,我可以在窗口上设置将玻璃框架扩展到客户区(使用DwmExtendFrameIntoClientArea API).在大多数情况下它工作正常.现在我希望我的窗口是无边框的,所以我在窗口上设置了以下属性:
WindowStyle="None" ResizeMode="NoResize" Background="Transparent" u:WinUtil.EnableGlass="True" ShowInTaskbar="False"
但是根据这些属性,玻璃根本不显示:我的窗口只有透明的背景.如果我将ResizeMode设置为CanResize,则会显示玻璃,但我不希望窗口可以调整大小.
我怀疑这是因为通过将非客户端框架扩展到客户区域来获得玻璃效果:使用WindowStyle = None和ResizeMode = NoResize,没有非客户端框架,因此无需扩展.当我启用调整大小时,它会在窗口周围创建一个框架,因此可以扩展框架.
我想应该可以通过设置适当的WS_ *位来创建一个具有细边框,没有标题栏并且无法调整大小的窗口,但我不知道究竟是哪些
所以我的问题是:
>应设置或取消设置哪些样式位以具有所需的外观和行为?
>如何初始化窗口的样式位? Window类似乎没有像Windows Forms CreateParams属性那样的东西……在创建句柄后设置这些位是否可以?
>我发现HwndSource类可能是问题2的答案,但如果你不是Win32专家,那么使用它似乎有点复杂……这对我的问题是否是一个明智的解决方案?
欢迎任何建议
你尝试过使用
DwmEnableBlurBehindWindow吗?这使您可以使窗口客户区的特定部分透明.
原文链接:https://www.f2er.com/windows/372067.html