如何禁用hittesting一个WPF窗口?(How to disable hittesting o

2019-10-19 14:52发布

我知道这是可能的-以某种方式通过SetWindowLong API或WPF的的托管属性Window ,在窗口创造的那一刻类......但如何做到这一点正是我不知道。 我根本无法找到如何设置窗口的样式,以便它不能接受有关它的鼠标点击任何点击都过不去窗口底层窗户的任何系统信息的信息。

有谁知道这种风格的代码还是什么?

Answer 1:

设置WS_EX_TRANSPARENT标志窗口的扩展样式。 这使得窗口透明的鼠标点击。

public const int WS_EX_TRANSPARENT = 0x00000020;
public const int GWL_EXSTYLE = (-20);


[DllImport("user32.dll")]
public static extern int GetWindowLong(IntPtr hwnd, int index);

[DllImport("user32.dll")]
public static extern int SetWindowLong(IntPtr hwnd, int index, int newStyle);

int extendedStyle = GetWindowLong(hwnd, GWL_EXSTYLE);
WinAPI.SetWindowLong(hwnd, GWL_EXSTYLE, extendedStyle | WS_EX_TRANSPARENT);


Answer 2:

WS_EX_TRANSPARENT不够。

需要WS_EX_TRANSPARENT | WS_EX_LAYERED | WS_EX_TOPMOST; WS_EX_TRANSPARENT | WS_EX_LAYERED | WS_EX_TOPMOST;

SetLayeredWindowAttributes(hWnd, 0, 150, LWA_ALPHA); 


文章来源: How to disable hittesting on a WPF window?