【WPF】鼠标穿透窗口(类似于桌面歌词那样子)

复制粘贴,能跑就行。

using System.Windows.Interop;
using System.Runtime.InteropServices;

 

public MainWindow()
{
	InitializeComponent();
	IntPtr hwnd = new WindowInteropHelper(this).Handle;
	SetWindowLong(hwnd, (-20),0x20);
}

[DllImport("user32", EntryPoint = "SetWindowLong")]
private static extern uint SetWindowLong(IntPtr hwnd, int nIndex, int NewLong);

利用SetWindowLong函数给窗口添加一个拓展样式WS_EX_TRANSPARENT,常量值为0x20,作用(机器翻译):用此参数创建的的窗口在他同一线程的窗口被绘制前将不会被绘制.这个窗口透明的显示,因为同一线程的窗口已经绘制出来。

如果是子窗口需要添加这个样式,在SetWindowLong之前需要this.Show();不然设置了没效果。子窗口代码:

InitializeComponent();
Show();
IntPtr hwnd = new WindowInteropHelper(this).Handle;
SetWindowLong(hwnd, (-20),0x20);
Hide();

 

你可能感兴趣的:(笔记,WPF,鼠标穿透)