环境:VS2005 C#主窗口上布满了控件,这种情况下,鼠标消息被控件收到而主窗口却收不到。因为它被控件遮盖往了。有什么办法让主窗口也能收到鼠标消息?(不要通过子窗口收到消息后再传递的方法)

解决方案 »

  1.   

    设置Form的Capture为true,不过这样的话,即使鼠标出了窗口范围也仍然会收到鼠标消息。
      

  2.   

    IMessageFilter
    看看msdn。不懂的话跟帖我给你写个例子。
      

  3.   


    public class MyMsgFilter : IMessageFilter
    {
        public const int WM_LBUTTONDOWN = 0x201;
        public bool PreFilterMessage(ref Message m)
        {
            if (m.Msg == WM_LBUTTONDOWN)
            {
                //左键按下
            }
        }
        public MyMsgFilter()
        {
            Application.AddMessageFilter(this);
        }
    }
    调用:任何地方能执行到代码就行,比如窗体构造函数内:
    new MyMsgFilter();//就这样就可以了