我想改变另一个窗口的不透明度。我设法用 SetWindowLong 和 SetLayeredWindowAttributes 改变了不透明度,但它没有直接应用。当我更改不透明度时:窗口将变得透明,但是当我再次将其更改为另一个不透明度时,不透明度消失了。
这是如何实现的,我该如何解决这个问题,这是重绘问题吗?我还尝试应用 2 倍相同的不透明度;如果你这样做,也会发生同样的事情。
这就是我改变不透明度的方式:
public void Opacity(IntPtr WindowHandle, byte WindowOpacity)
{
SetWindowLong(WindowHandle, -20, GetWindowLong(WindowHandle, -20) ^ 0x080000);
SetLayeredWindowAttributes(WindowHandle, 0, WindowOpacity, 0x002);
}