C# 触摸API:禁用旧版windows消息
我为我的表单调用了RegisterTouchWindow,现在我得到了原始的WM_TOUCH消息,但是这些消息还生成WM_MOUSEDOWN、WM_MOUSEMOVE和WM_MOUSEUP。有没有办法禁用此行为?我只想收到WM_TOUCH的信息C# 触摸API:禁用旧版windows消息,c#,winforms,windows-7,touch,C#,Winforms,Windows 7,Touch,我为我的表单调用了RegisterTouchWindow,现在我得到了原始的WM_TOUCH消息,但是这些消息还生成WM_MOUSEDOWN、WM_MOUSEMOVE和WM_MOUSEUP。有没有办法禁用此行为?我只想收到WM_TOUCH的信息 我知道这有一个解决方案,但我对是否有其他解决方案感兴趣。您的控件可以像这样覆盖WndProc: const int WM_LBUTTONDOWN = 0x201; const int WM_LBUTTONUP = 0x202; c
我知道这有一个解决方案,但我对是否有其他解决方案感兴趣。您的控件可以像这样覆盖WndProc:
const int WM_LBUTTONDOWN = 0x201;
const int WM_LBUTTONUP = 0x202;
const int WM_MOUSEMOVE = 0x200;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_LBUTTONDOWN
|| m.Msg == WM_LBUTTONUP
|| m.Msg == WM_MOUSEMOVE)
return;
base.WndProc(ref m);
}
如果你的应用程序完全想忽略这些消息,请执行以下操作
大体上:
Application.AddMessageFilter(new MouseMessageFilter());
是的,我知道这个解决方案。您还可以检查鼠标消息是否是通过触摸生成的,并将其丢弃,因此通常不会禁用鼠标消息。它几乎适用于所有鼠标消息,但不适用于WM_MOUSELEAVE,我感谢您的IMessageFilter建议:)
Application.AddMessageFilter(new MouseMessageFilter());