日期:2014-05-18  浏览次数:20975 次

C#主窗体中一个自定义控件的鼠标以及键盘消息问题
具体需求是这样的:我自定义了一个控件,并将word文档嵌入其中,并且用一个主窗体调用这个控件,我需要获取鼠标在该控件中的WM_MOUSEMOVE、WM_LBUTTONUP以及WM_LBUTTONUP消息,还有该控件得到焦点时键盘ctrl+滚轮的复合事件消息,注意,不是要屏蔽这些消息,系统处理依旧需要靠这些消息做出相应处理,我要做的只是获知这些消息后做出判断并进行窗体截图工作。
  请大侠们指教小弟如何做到这一点?我以前没有学过C#编程,所以希望能有具体例子代码!很急,非常感谢!

------解决方案--------------------
你可以考虑用筛选器
C# code

窗体构造函数中加上
            TestMessageFilter filter = new TestMessageFilter();
            Application.AddMessageFilter(filter);
//筛选器类
    [SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.UnmanagedCode)]
    public class TestMessageFilter : IMessageFilter
    {
        public bool PreFilterMessage(ref Message m)
        {
            // Blocks all the messages relating to the left mouse button.
            if (m.Msg >= 513 && m.Msg <= 515)
            {
                Console.WriteLine("Processing the messages : " + m.Msg);
                return true;
            }
            return false;
        }
    }