Exemplo n.º 1
0
        private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                switch ((MouseMessage)wParam)
                {
                case MouseMessage.WM_LBUTTONDOWN:
                    OnLeftButtonDown?.Invoke(null, new MouseEventsArgs
                    {
                        Button = MouseButtons.Left,
                        State  = MouseState.MouseDown
                    });
                    break;

                case MouseMessage.WM_LBUTTONUP:
                    OnLeftButtonUp?.Invoke(null, new MouseEventsArgs
                    {
                        Button = MouseButtons.Left,
                        State  = MouseState.MouseUp
                    });
                    break;

                case MouseMessage.WM_LBUTTONDBLCLK:
                    OnLeftDoubleClick?.Invoke(null, new MouseEventsArgs
                    {
                        Button      = MouseButtons.Left,
                        State       = MouseState.MouseUp,
                        DoubleClick = true
                    });
                    break;

                case MouseMessage.WM_RBUTTONDOWN:
                    OnRightButtonDown?.Invoke(null, new MouseEventsArgs
                    {
                        Button = MouseButtons.Right,
                        State  = MouseState.MouseUp
                    });
                    break;

                case MouseMessage.WM_RBUTTONUP:
                    OnRightButtonUp?.Invoke(null, new MouseEventsArgs
                    {
                        Button = MouseButtons.Right,
                        State  = MouseState.MouseUp
                    });
                    break;

                case MouseMessage.WM_MOUSEMOVE:
                    OnMouseMove?.Invoke(null, new MouseEventsArgs
                    {
                        Button = MouseButtons.None,
                        State  = MouseState.MouseMove
                    });
                    break;
                }
            }
            return(NativeMethods.CallNextHookEx(HookId, nCode, wParam, lParam));
        }
Exemplo n.º 2
0
 private static void OnOverrideRightButtonUp(int x, int y)
 {
     _updateRightUp = true;
     OnRightButtonUp?.Invoke(x, y);
 }
Exemplo n.º 3
0
        private void HandleMouseEvent(MouseEvent mouseEvent)
        {
            int x = mouseEvent.X;
            int y = mouseEvent.Y;

            switch (mouseEvent.HardwareEvent)
            {
            case EHARDWAREMOUSEEVENT.HARDWAREMOUSEEVENT_LBUTTONDOWN:
            {
                _updateLeftDown = true;
                HitScenes(x, y);
                OnLeftButtonDown?.Invoke(x, y);
                break;
            }

            case EHARDWAREMOUSEEVENT.HARDWAREMOUSEEVENT_LBUTTONUP:
            {
                _updateLeftUp = true;
                HitScenes(x, y);
                OnLeftButtonUp?.Invoke(x, y);
                break;
            }

            case EHARDWAREMOUSEEVENT.HARDWAREMOUSEEVENT_RBUTTONDOWN:
            {
                _updateRightDown = true;
                HitScenes(x, y);
                OnRightButtonDown?.Invoke(x, y);
                break;
            }

            case EHARDWAREMOUSEEVENT.HARDWAREMOUSEEVENT_RBUTTONUP:
            {
                _updateRightUp = true;
                HitScenes(x, y);
                OnRightButtonUp?.Invoke(x, y);
                break;
            }

            case EHARDWAREMOUSEEVENT.HARDWAREMOUSEEVENT_MOVE:
            {
                // OnMove will be called from the Update method.
                break;
            }

            case EHARDWAREMOUSEEVENT.HARDWAREMOUSEEVENT_LBUTTONDOUBLECLICK:
            {
                OnLeftButtonDoubleClicked?.Invoke(x, y);
                break;
            }

            case EHARDWAREMOUSEEVENT.HARDWAREMOUSEEVENT_RBUTTONDOUBLECLICK:
            {
                OnRightButtonDoubleClicked?.Invoke(x, y);
                break;
            }

            case EHARDWAREMOUSEEVENT.HARDWAREMOUSEEVENT_MBUTTONDOWN:
            {
                _updateMiddleDown = true;
                HitScenes(x, y);
                OnMiddleButtonDown?.Invoke(x, y);
                break;
            }

            case EHARDWAREMOUSEEVENT.HARDWAREMOUSEEVENT_MBUTTONUP:
            {
                _updateMiddleUp = true;
                HitScenes(x, y);
                OnMiddleButtonUp?.Invoke(x, y);
                break;
            }

            case EHARDWAREMOUSEEVENT.HARDWAREMOUSEEVENT_MBUTTONDOUBLECLICK:
            {
                OnMiddleButtonDoubleClicked?.Invoke(x, y);
                break;
            }

            case EHARDWAREMOUSEEVENT.HARDWAREMOUSEEVENT_WHEEL:
            {
                OnMouseWheelChanged?.Invoke(mouseEvent.WheelDelta);
                break;
            }

            default:
                throw new System.NotImplementedException();
            }
        }