Touch API: отключить устаревшие сообщения Windows - PullRequest
1 голос
/ 03 марта 2011

Я вызвал RegisterTouchWindow для своей формы, теперь я получаю необработанные сообщения WM_TOUCH, но эти сообщения также генерируют WM_MOUSEDOWN, WM_MOUSEMOVE и WM_MOUSEUP.Есть ли способ отключить это поведение?Я только хочу получать сообщения WM_TOUCH.

Я знаю, что для этого есть обходной путь , но мне интересно, есть ли какое-либо другое решение.

1 Ответ

1 голос
/ 03 марта 2011

Ваш элемент управления может переопределить 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);
    }

Если ваше приложение полностью хочет игнорировать эти сообщения, сделайте что-то вроде , показанное здесь

public class MouseMessageFilter : IMessageFilter
{
    const int WM_LBUTTONDOWN = 0x201;
    const int WM_LBUTTONUP = 0x202;
    const int WM_MOUSEMOVE = 0x200;

    public bool PreFilterMessage(ref Message m)
    {
        if (m.Msg == WM_LBUTTONDOWN)  return true;
        if (m.Msg == WM_LBUTTONUP)    return true;
        if (m.Msg == WM_MOUSEMOVE)    return true;
        return false;
    }
}

inосновной:

Application.AddMessageFilter(new MouseMessageFilter());
...