public MouseActionArgs(Point location, MouseButtons mouseButton, MouseButtonStates mouseButtonState, short wheelDelta = 0) { Location = location; MouseButton = mouseButton; MouseButtonState = mouseButtonState; WheelDelta = wheelDelta; }
static public void Reset() { _IsLeftBtnClicked = false; _IsRightBtnClicked = false; _LeftBtn = MouseButtonStates.NONE; _RightBtn = MouseButtonStates.NONE; }
public override void Dragging(GameTime gameTime, MouseButtonStates state) { if (state == MouseButtonStates.DragEnded) { return; } if (state == MouseButtonStates.DragStarted) { ScrollOffsetPreDrag = ScrollOffset; } ScrollOffset = ScrollOffsetPreDrag + MouseState.LeftButton.DragState.Movement.X * 3f; }
internal void OnMouseEnter(MouseEventArgs args) { HoverState = HoverStates.Hovering; foreach (var button in MouseButtonStates.Where(x => x.Value == ButtonState.Pressed).ToList()) { if (!args.Buttons.Contains(button.Key)) { MouseButtonStates[button.Key] = ButtonState.Released; } } MouseEnter?.Invoke(this, args); ChangeVisualState(); }
public override void Dragging(GameTime gameTime, MouseButtonStates state) { if (Parent == null || state == MouseButtonStates.DragEnded) { return; } if (state == MouseButtonStates.DragStarted) { ParentPreDrag = Parent.Position; } Parent.Position.X = ParentPreDrag.X + MouseState.LeftButton.DragState.Movement.X; Parent.Position.Y = ParentPreDrag.Y + MouseState.LeftButton.DragState.Movement.Y; }
/// <summary> /// Обновление данных /// </summary> static public void Update() { var State = Mouse.GetState(); _X = State.X; _Y = State.Y; _IsRightBtnClicked = false; _IsLeftBtnClicked = false; if (State.RightButton == ButtonState.Pressed) { _RightBtn = MouseButtonStates.PRESSED; TimeRightBtnClick.Start(); } else if (State.RightButton == ButtonState.Released && _RightBtn == MouseButtonStates.PRESSED) { _RightBtn = MouseButtonStates.RELEASED; TimeRightBtnClick.Stop(); if (TimeRightBtnClick.ElapsedMilliseconds <= 200) { _IsRightBtnClicked = true; } TimeRightBtnClick.Reset(); } else { _RightBtn = MouseButtonStates.NONE; } if (State.LeftButton == ButtonState.Pressed) { _LeftBtn = MouseButtonStates.PRESSED; TimeLeftBtnClick.Start(); } else if (State.LeftButton == ButtonState.Released && _LeftBtn == MouseButtonStates.PRESSED) { _LeftBtn = MouseButtonStates.RELEASED; TimeLeftBtnClick.Stop(); if (TimeLeftBtnClick.ElapsedMilliseconds <= 200) { _IsLeftBtnClicked = true; } TimeLeftBtnClick.Reset(); } else { _LeftBtn = MouseButtonStates.NONE; } }
public void MouseEvents_MouseEventRaisedWithCorrectValues() { const ControlKeyStates controlKeys = ControlKeyStates.LEFT_ALT_PRESSED | ControlKeyStates.CAPSLOCK_ON; const int scroll = 123; const MouseButtonStates buttons = MouseButtonStates.LeftButtonPressed; Point position = (3, 7).Pt(); const MouseEventFlags kind = MouseEventFlags.Wheeled; var api = new StubbedNativeCalls(); using var controller = new StubbedConsoleController(); var graphicsProvider = new StubbedGraphicsProvider(); var args = new ConsoleMouseEventArgs(new MOUSE_EVENT_RECORD { ButtonState = buttons, ControlKeys = controlKeys, EventFlags = kind, MousePosition = new COORD(position), Scroll = scroll }); using var sut = new ConControls.Controls.ConsoleWindow(api, controller, graphicsProvider); bool raised = false; sut.MouseEvent += OnMouse; controller.MouseEventEvent(controller, args); raised.Should().BeTrue(); raised = false; sut.MouseEvent -= OnMouse; controller.MouseEventEvent(controller, args); raised.Should().BeFalse(); void OnMouse(object sender, MouseEventArgs e) { sender.Should().Be(sut); e.ControlKeys.Should().Be(controlKeys); e.Scroll.Should().Be(scroll); e.ButtonState.Should().Be(buttons); e.Position.Should().Be(position); e.Kind.Should().Be(kind); raised = true; } }
internal MouseButtonState(MouseButtonStates state, MouseDragState dragState) { this.dragState = dragState; this.state = state; }
internal MouseButtonState(MouseButtonStates state) { this = new MouseButtonState(state, new MouseDragState()); }
private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam) { if (nCode < 0 || Enable == false) { return(API.CallNextHookEx(_hookID, nCode, wParam, lParam)); } API.MSLLHOOKSTRUCT hookStruct = (API.MSLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(API.MSLLHOOKSTRUCT)); Point location = new Point(hookStruct.pt.X, hookStruct.pt.Y); MouseButtons mouseButton = MouseButtons.None; MouseButtonStates mouseButtonState = MouseButtonStates.Move; short wheelDelta = 0; switch ((API.MouseMessages)wParam) { case API.MouseMessages.WM_NCMOUSEMOVE: case API.MouseMessages.WM_MOUSEMOVE: { mouseButton = MouseButtons.None; mouseButtonState = MouseButtonStates.Move; } break; case API.MouseMessages.WM_NCLBUTTONDOWN: case API.MouseMessages.WM_LBUTTONDOWN: { mouseButton = MouseButtons.Left; mouseButtonState = MouseButtonStates.Down; } break; case API.MouseMessages.WM_NCLBUTTONUP: case API.MouseMessages.WM_LBUTTONUP: { mouseButton = MouseButtons.Left; mouseButtonState = MouseButtonStates.Up; } break; case API.MouseMessages.WM_NCLBUTTONDBLCLK: case API.MouseMessages.WM_LBUTTONDBLCLK: { mouseButton = MouseButtons.Left; mouseButtonState = MouseButtonStates.DoubleClick; } break; case API.MouseMessages.WM_NCRBUTTONDOWN: case API.MouseMessages.WM_RBUTTONDOWN: { mouseButton = MouseButtons.Right; mouseButtonState = MouseButtonStates.Down; } break; case API.MouseMessages.WM_NCRBUTTONUP: case API.MouseMessages.WM_RBUTTONUP: { mouseButton = MouseButtons.Right; mouseButtonState = MouseButtonStates.Up; } break; case API.MouseMessages.WM_NCRBUTTONDBLCLK: case API.MouseMessages.WM_RBUTTONDBLCLK: { mouseButton = MouseButtons.Right; mouseButtonState = MouseButtonStates.DoubleClick; } break; case API.MouseMessages.WM_NCMBUTTONDOWN: case API.MouseMessages.WM_MBUTTONDOWN: { mouseButton = MouseButtons.Middle; mouseButtonState = MouseButtonStates.Down; } break; case API.MouseMessages.WM_NCMBUTTONUP: case API.MouseMessages.WM_MBUTTONUP: { mouseButton = MouseButtons.Middle; mouseButtonState = MouseButtonStates.Up; } break; case API.MouseMessages.WM_NCMBUTTONDBLCLK: case API.MouseMessages.WM_MBUTTONDBLCLK: { mouseButton = MouseButtons.Middle; mouseButtonState = MouseButtonStates.DoubleClick; } break; case API.MouseMessages.WM_NCXBUTTONDOWN: case API.MouseMessages.WM_XBUTTONDOWN: { switch ((ushort)(hookStruct.mouseData >> 16)) { case 0x0001: mouseButton = MouseButtons.XButton1; break; case 0x0002: mouseButton = MouseButtons.XButton2; break; } mouseButtonState = MouseButtonStates.Down; } break; case API.MouseMessages.WM_NCXBUTTONUP: case API.MouseMessages.WM_XBUTTONUP: { switch ((ushort)(hookStruct.mouseData >> 16)) { case 0x0001: mouseButton = MouseButtons.XButton1; break; case 0x0002: mouseButton = MouseButtons.XButton2; break; } mouseButtonState = MouseButtonStates.Up; } break; case API.MouseMessages.WM_NCXBUTTONDBLCLK: case API.MouseMessages.WM_XBUTTONDBLCLK: { switch ((ushort)(hookStruct.mouseData >> 16)) { case 0x0001: mouseButton = MouseButtons.XButton1; break; case 0x0002: mouseButton = MouseButtons.XButton2; break; } mouseButtonState = MouseButtonStates.DoubleClick; } break; case API.MouseMessages.WM_MOUSEWHEEL: { mouseButton = MouseButtons.None; mouseButtonState = MouseButtonStates.Wheel; wheelDelta = (short)(hookStruct.mouseData >> 16); } break; } if (MouseAction(new MouseActionArgs(location, mouseButton, mouseButtonState, wheelDelta))) { return((IntPtr)1); } return(API.CallNextHookEx(_hookID, nCode, wParam, lParam)); }
public override void Dragging(GameTime gameTime, MouseButtonStates state) { if (Parent != null) { Parent.Dragging(gameTime, state); } else { base.Dragging(gameTime, state); } }