Beispiel #1
0
        internal void PostPoll()
        {
            for (int i = _pressedButtons.Count - 1; i >= 0; i--)
            {
                var button = _pressedButtons[i];
                var state  = _buttonStates[button];
                var args   = new MouseButtonEventArgs(button, state, Position);

                _buttonStates[button] = state;

                var delegates = OnMouseButton?.GetInvocationList();
                if (delegates == null)
                {
                    return;
                }
                foreach (var d in delegates)
                {
                    var e = (MouseButtonEvent)d;
                    if (e.Invoke(this, args))
                    {
                        return;
                    }
                }
            }
        }
Beispiel #2
0
        public int MouseHook(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                //    Debug.Print("MouseHook called");
                unchecked
                {
                    int wParami = wParam.ToInt32();

                    //Marshal the data from the callback.
                    var mouseData   = (HookNativeDefinitions.MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(HookNativeDefinitions.MouseHookStruct));
                    var mouseButton = WM.GetMouseButton(wParam);
                    int wheelDelta  = 0;
                    if (mouseButton == MouseButton.None && wParami == WM.MOUSEWHEEL)
                    {
                        wheelDelta = WM.GetWheelDDelta(mouseData.mouseData);
                    }

                    if (wParami == WM.MOUSEMOVE)
                    {
                        if (OnMouseMove != null)
                        {
                            OnMouseMove(mouseData.pt.x, mouseData.pt.y);
                        }
                        else
                        {
                            // mouse move is disabled ignore event
                        }
                    }
                    else if (wParami == WM.MOUSEWHEEL && OnMouseWheel != null)
                    {
                        OnMouseWheel?.Invoke(wheelDelta, mouseData.pt.x, mouseData.pt.y);
                    }
                    else if (OnMouseButton != null)
                    {
                        OnMouseButton?.Invoke(mouseButton, mouseData.pt.x, mouseData.pt.y);
                    }
                }
            }

            return(HookNativeDefinitions.CallNextHookEx(MouseHookHandle, nCode, wParam, lParam));
        }
Beispiel #3
0
 private void OnWindowMouseButton(WindowHandle *window, MouseButton button, InputAction action, KeyModifiers mods)
 => OnMouseButton?.Invoke(button, action, mods);