当C#窗口上有其它控件时,窗口本身检测不到消息。
1、使用WndProc、MouseMove不行,比如
1 protected override void WndProc(ref Message m) 2 { 3 switch (m.Msg) 4 { 5 case WM_MOUSEMOVE: 6 Debug.Write(string.Format("CurrentDate:{0}", DateTime.Now) + Environment.NewLine); 7 break; 8 } 9 base.WndProc(ref m); 10 }
2、使用PreFilterMessage
1 public partial class Form1 : Form, IMessageFilter 2 { 3 //构造函数里增加 4 public Form1() 5 { 6 InitializeComponent(); 7 Application.AddMessageFilter(this); 8 9 } 10 public bool PreFilterMessage(ref Message msg) 11 { 12 const int WM_MOUSEMOVE = 0x200; 13 if (msg.Msg == WM_MOUSEMOVE) 14 { 15 TestPopUp(); 16 } 17 return false; 18 } 19 }