none
透明窗体怎样才能接收到鼠标的点击动作? RRS feed

  • 问题

  • 窗体中使用了GDI+绘图方法,绘制了半透明的PNG图片。当鼠标点击图片半透明部分(图片上看,只是略微有点透明,不是那种完全透明的)时,窗体接收不到鼠标的点击,点击动作似乎“穿透”了窗体,被窗体后面的东西接收到了,但是其它的鼠标动作,如移动、滚轮滚动,窗体就能接收到。如果不用hook,怎样才能让窗体接收到鼠标的点击呢?谢谢指点!

    我接收鼠标的点击是采用的下面代码方法:
    protected override void DefWndProc(ref Message m)
            {
                try
                {
                    switch (m.Msg)
                    {                        
                        case WM_MOUSEWHEEL: //鼠标滚轮滚动
                            break;
                        case WM_MBUTTONCLICK://按下鼠标滚轮
                            break;
                        default:
                            base.DefWndProc(ref m);//调用基类函数处理非自定义消息。
                            break;
                    }
                }
                catch
                { }
            }
    
    

    2011年9月13日 2:07

答案

  • 你好!

    建议使用 WPF  实现上面的功能,实际上透明、半透明、模糊等效果在 WPF 更容易实现,当然也不会存在你上述的问题了。


    知识改变命运,奋斗成就人生!
    • 已标记为答案 JSHZP 2011年9月14日 7:03
    2011年9月14日 5:01
    版主

全部回复

  • 你好!

    建议使用 WPF  实现上面的功能,实际上透明、半透明、模糊等效果在 WPF 更容易实现,当然也不会存在你上述的问题了。


    知识改变命运,奋斗成就人生!
    • 已标记为答案 JSHZP 2011年9月14日 7:03
    2011年9月14日 5:01
    版主
  • 你好!

    建议使用 WPF  实现上面的功能,实际上透明、半透明、模糊等效果在 WPF 更容易实现,当然也不会存在你上述的问题了。


    知识改变命运,奋斗成就人生!

    谢谢指点!

    是否WPF会占用相对更多的硬件资源?

    2011年9月14日 5:30
  • 你好!

    会,但不明显,至少我运用 WPF 的场景中我认为可以忽略这个问题。


    知识改变命运,奋斗成就人生!
    2011年9月14日 6:13
    版主