void Start() { var down1 = new EventTrigger.Entry() { eventID = EventTriggerType.PointerDown }; var down2 = new EventTrigger.Entry() { eventID = EventTriggerType.PointerDown }; var up1 = new EventTrigger.Entry() { eventID = EventTriggerType.PointerUp }; var up2 = new EventTrigger.Entry() { eventID = EventTriggerType.PointerUp }; down1.callback.AddListener(x => LeftDown.Invoke()); up1.callback.AddListener(x => LeftUp.Invoke()); down2.callback.AddListener(x => RightDown.Invoke()); up2.callback.AddListener(x => RightUp.Invoke()); left.triggers.AddRange(new[] { down1, up1 }); right.triggers.AddRange(new[] { down2, up2 }); var drag = new EventTrigger.Entry() { eventID = EventTriggerType.Drag }; var up3 = new EventTrigger.Entry() { eventID = EventTriggerType.PointerUp }; drag.callback.AddListener(x => OnAcceleratorDrag.Invoke(x as PointerEventData)); up3.callback.AddListener(x => OnAcceleratorUp.Invoke(x as PointerEventData)); accelerator.triggers.AddRange(new[] { drag, up3 }); toMenuButton.onClick.AddListener(ToMenu.Invoke); }
public override int HookProcEvent(int nCode, Int32 wParam, IntPtr lParam) { //如果正常运行并且用户要监听鼠标的消息 if (nCode >= 0) { MouseButtons button = MouseButtons.None; int clickCount = 0; int delta = 0; MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); MouseEventArgs e; switch ((int)wParam) { case Const.WM_LBUTTONDOWN: LastMouseDownTimeSpan = Environment.TickCount; button = MouseButtons.Left; clickCount = 1; e = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.X, MyMouseHookStruct.pt.Y, delta); LeftDown?.Invoke(this, e); break; case Const.WM_LBUTTONUP: LastMouseDownTimeSpan = Environment.TickCount; button = MouseButtons.Left; clickCount = 1; e = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.X, MyMouseHookStruct.pt.Y, delta); LeftUp?.Invoke(this, e); break; case Const.WM_MBUTTONDOWN: button = MouseButtons.Middle; clickCount = 1; e = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.X, MyMouseHookStruct.pt.Y, delta); MiddleDown?.Invoke(this, e); break; case Const.WM_MBUTTONUP: button = MouseButtons.Middle; clickCount = 1; e = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.X, MyMouseHookStruct.pt.Y, delta); MiddleUp?.Invoke(this, e); break; case Const.WM_RBUTTONDOWN: button = MouseButtons.Right; clickCount = 1; e = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.X, MyMouseHookStruct.pt.Y, delta); RightDown?.Invoke(this, e); break; case Const.WM_RBUTTONUP: button = MouseButtons.Right; clickCount = 1; e = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.X, MyMouseHookStruct.pt.Y, delta); RightUp?.Invoke(this, e); break; case Const.WM_MOUSEWHEEL: if (!mouseLeftDown) { button = MouseButtons.Middle; clickCount = 0; delta = MyMouseHookStruct.hWnd >> 16; e = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.X, MyMouseHookStruct.pt.Y, delta); MouseWheel?.Invoke(this, e); } break; case Const.WM_MOUSEMOVE: button = MouseButtons.None; clickCount = 0; e = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.X, MyMouseHookStruct.pt.Y, delta); MouseMove?.Invoke(this, e); break; } } return(CallNextHookEx(hwndHook, nCode, wParam, lParam)); }