C# 触摸API:禁用旧版windows消息

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

我为我的表单调用了RegisterTouchWindow,现在我得到了原始的WM_TOUCH消息,但是这些消息还生成WM_MOUSEDOWN、WM_MOUSEMOVE和WM_MOUSEUP。有没有办法禁用此行为?我只想收到WM_TOUCH的信息


我知道这有一个解决方案,但我对是否有其他解决方案感兴趣。

您的控件可以像这样覆盖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());