我创建了一个半透明的表单。我希望人们能够点击表单区域,并且表单不能处理点击。我希望表单下面的任何内容都能接收点击事件。
答案 0 :(得分:5)
您可以使用SetWindowLong
:
int initialStyle = GetWindowLong(this.Handle, -20);
SetWindowLong(this.Handle, -20, initialStyle | 0x80000 | 0x20);
这里有一些神奇的数字:
-20
- GWL_EXSTYLE
检索扩展窗口样式。
0x80000
- WS_EX_LAYERED
0x20
- WS_EX_TRANSPARENT
指定在绘制窗口下方的兄弟(由同一个线程创建)之前,不应绘制使用此样式创建的窗口。窗口显示为透明,因为底层兄弟窗口的位已被绘制。
网上有很多关于如何执行此操作的文章,例如this one。