예제 #1
0
        public virtual void ProcessEvents(Event e)
        {
            if (e.isKey)
            {
                OnKeyDown(this, e);
                return;
            }

            if (!viewRect.Contains(e.mousePosition))
            {
                return;
            }

            switch (e.button)
            {
            case 0:
                switch (e.type)
                {
                case EventType.MouseDown:
                    OnLeftMouseDown?.Invoke(this, e);
                    break;

                case EventType.MouseDrag:
                    OnLeftMouseDrag?.Invoke(this, e);
                    break;

                case EventType.MouseUp:
                    OnLeftMouseUp?.Invoke(this, e);
                    break;
                }
                break;

            case 1:
                switch (e.type)
                {
                case EventType.MouseDown:
                    OnRightMouseDown?.Invoke(this, e);
                    break;

                case EventType.MouseDrag:
                    OnRightMouseDrag?.Invoke(this, e);
                    break;

                case EventType.MouseUp:
                    OnRightMouseUp?.Invoke(this, e);
                    break;
                }
                break;
            }
        }
예제 #2
0
        private IntPtr MouseHookCallback(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode < 0)
            {
                return(CallNextHookEx(_hookHandle, nCode, wParam, lParam));
            }
            switch ((MouseMessages)wParam)
            {
            case MouseMessages.WM_LBUTTONDOWN:
                OnLeftMouseDown?.Invoke(this, null);
                break;

            case MouseMessages.WM_RBUTTONDOWN:
                OnRightMouseDown?.Invoke(this, null);
                break;
            }
            return(CallNextHookEx(_hookHandle, nCode, wParam, lParam));
        }
예제 #3
0
 private void MouseHook_OnLeftMouseDown(object sender, Point p)
 {
     DisposeMouseHook();
     OnLeftMouseDown?.Invoke(this, p);
 }
 /// <summary>Register background left mouse down event handler.</summary>
 /// <param name="callback">callback function </param>
 public static void ObserveLeftMouseDown(OnLeftMouseDown callback)
 {
     RemoveOnLeftMouseDown();
     _leftMouseDownGcHandle = GCHandle.Alloc(callback, GCHandleType.Normal);
     onLeftMouseDown((IntPtr)_leftMouseDownGcHandle.Value, OnLeftMouseDownFromNative);
 }