我知道有可能 - 在窗口创建时,以某种方式通过SetWindowLong
API或WPF的Window
类的托管属性...但是如何做到这一点我完全不知道。我根本无法找到如何设置窗口样式的信息,因此它无法接收有关鼠标单击的任何系统消息,任何单击都会通过窗口到底层窗口。
有没有人知道样式代码还是什么?
答案 0 :(得分:4)
为窗口的扩展样式设置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);
答案 1 :(得分:1)
WS_EX_TRANSPARENT还不够。
需要WS_EX_TRANSPARENT | WS_EX_LAYERED | WS_EX_TOPMOST;
和
SetLayeredWindowAttributes(hWnd, 0, 150, LWA_ALPHA);