在 win32 中更改无边框窗口的颜色

问题描述

我正在创建一个类似于 https://github.com/melak47/BorderlessWindow 的无边框窗口,并使用它来创建一个交换链并使用 vulkan 将其绘制到其中。

为了获得无边框窗口(带航空阴影),我使用:DwmExtendFrameIntoClientArea 最多 1 像素。 我可以用我的交换链在最后一个像素边界上绘制。经过一番谷歌搜索后,我明白这是唯一的方法

不幸的是,在调整大小时,无论我如何与合成器同步,我仍然偶尔会看到亮白色边框的闪烁。

为了让这一点可以接受,我想为边框使用更中性的颜色。我如何实现这一目标?

编辑:如果我将边框增加到 10 像素,我会得到:

enter image description here

(绿色和红色框由vulkan绘制,没有透明度,帧被清除为零alpha)

这个白色是从哪里来的?

注意:这不是强调色。

解决方法

我找到了解决方案。

有一个未公开的函数可以设置窗口的其他 DWM 设置:https://gist.github.com/ysc3839/b08d2bff1c7dacde529bed1d37e85ccf

这也用于制作模糊的透明度,并且可以使用 ACCENT_ENABLE_GRADIENT 枚举更改边框颜色。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...