我正在制作一个小工具,可以在浮动侧边栏中切换“笔”按钮后使用鼠标在屏幕上绘图。
我已经通过使用顶层窗体,并将其背景设置为透明键来覆盖整个屏幕来实现这一点(请不要笑)。
当我处于绘图模式时,我需要使鼠标不能穿透窗体并点击到下面的内容。我尝试了以下方法:
- Windows form with a transparent background that cannot be clicked through
- How to disable click through on transparent control?
这些方法成功地停止了鼠标的穿透,但是也取消了窗体的最大化,并且使用HTCAPTION IntPtr(2)拖动窗体。我尝试使用MSDN上列出的其他值,但没有成功。
我深感无助,非常感谢任何帮助(请考虑新手友好)。
PS:我现在正在使用这个工具。
//code for allowing clicking through of menus
protected override void WndProc(ref Message m)
{
if (penMode && m.Msg == 0x84)
{
m.Result = new IntPtr(2);
}
else
base.WndProc(ref m);
}
更新:通过另一种方法完全解决了问题。看起来WndProc不起作用,所以我只是创建了一个覆盖整个屏幕的空白窗体,并从其中显示我的主窗体(form.Show(this))。然后调整空白窗体的不透明度,该窗体位于下方,从0%到1%允许/防止点击穿过。行得通!感谢所有答案,让我学到了很多。