我正在制作一个用于在浮动边栏中切换“笔”按钮后用鼠标在屏幕上绘图的小工具。通过透明Windows窗体防止鼠标点击
我已经完成了这个(请不要笑),因为它的背景为最顶级窗体,它的透明度键覆盖整个屏幕。 我需要鼠标不通过形式点击进入下面时,我“米绘图模式我试过的东西下面这样: 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%,以允许/防止点击。作品! 感谢所有的答案,教会了我很多。
测试在Windows 8机器,窗口的透明部分不将消息发送到父窗口时,鼠标点击。 (在记录消息和Spy ++中进行验证)。 – 2013-04-07 13:27:58
@Cody,哇,谢谢你这么清楚和完整的答案!它看起来不错,但我现在看到的是,在绘制点之后,如果再次点击该点,现在是蓝色,不透明,则点击会通过.. – 2013-04-07 14:09:17
在Windows 10上无法正常工作同样的原因约翰提到。 – 2016-02-28 13:44:16