Recognize touch as MouseDown event

前端 未结 4 2021
没有蜡笔的小新
没有蜡笔的小新 2020-12-31 18:58

I am building a puzzle game in C#, winforms for a touch screen.

I am able to handle touch events on mouse handlers, in fact, i did nothing at all, but it already rec

4条回答
  •  我在风中等你
    2020-12-31 19:29

    Thanks @PiotrWolkowski

    You were correct about the way i should follow... Some other issues appear, but i solved the initial problem overriding the WndProc as showed in the following:

    protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {
                case Win32.WM_POINTERDOWN:
                case Win32.WM_POINTERUP:
                case Win32.WM_POINTERUPDATE:
                case Win32.WM_POINTERCAPTURECHANGED:
                    break;
    
                default:
                    base.WndProc(ref m);
                    return;
            }
            int pointerID = Win32.GET_POINTER_ID(m.WParam);
            Win32.POINTER_INFO pi = new Win32.POINTER_INFO();
            if (!Win32.GetPointerInfo(pointerID, ref pi))
            {
                Win32.CheckLastError();
            }
            Point pt = PointToClient(pi.PtPixelLocation.ToPoint());
            MouseEventArgs me = new MouseEventArgs(System.Windows.Forms.MouseButtons.Left, 1, pt.X, pt.Y, 0);
            switch (m.Msg)
            {
                case Win32.WM_POINTERDOWN:
                        Console.WriteLine("TOCOU" + pt);
                        (Parent as Jogo).Form1_MouseDown((this as object), me);
                    break;
    
                case Win32.WM_POINTERUP:
                        Console.WriteLine("LEVANTOU");
                        (Parent as Jogo).Form1_MouseUp((this as object), me);
                    break;
    
                case Win32.WM_POINTERUPDATE:
                        //Console.WriteLine("UPDATE");
                        (Parent as Jogo).Form1_MouseMove((this as object), me);
                    break;
            }
        }
    

    It was supported by an "Win32.cs" that can be downloaded here:

    https://gist.github.com/RSchwoerer/bc5c04899c0510aefca24f088a79cebf

    Hope this is helpful for you;)

提交回复
热议问题