Ejemplo n.º 1
0
        internal static GlobalMouseEventSourceCallbackData ToGlobalMouseEventSourceCallbackData(this CallbackData data)
        {
            var wParam = data.WParam;
            var lParam = data.LParam;

            var marshalledMouseStruct = Marshal.PtrToStructure <MouseStruct>(lParam);

            var ret = new GlobalMouseEventSourceCallbackData()
            {
                Message = (WindowMessage)wParam,
                Data    = marshalledMouseStruct,
            };

            return(ret);
        }
Ejemplo n.º 2
0
        /// <summary>
        ///     Creates <see cref="MouseInput" /> from relevant mouse data.
        /// </summary>
        /// <param name="wParam">First Windows Message parameter.</param>
        /// <param name="mouseInfo">A MouseStruct containing information from which to construct MouseEventExtArgs.</param>
        /// <returns>A new MouseEventExtArgs object.</returns>
        private static EventSourceEventArgs <MouseInput> ToMouseEventArgs(GlobalMouseEventSourceCallbackData data)
        {
            var   button     = ButtonCode.None;
            short mouseDelta = 0;

            var isMouseButtonDown = false;
            var isMouseButtonUp   = false;

            switch (data.Message)
            {
            case WindowMessage.WM_LBUTTONDOWN:
                isMouseButtonDown = true;
                button            = ButtonCode.Left;
                break;

            case WindowMessage.WM_LBUTTONUP:
                isMouseButtonUp = true;
                button          = ButtonCode.Left;
                break;

            case WindowMessage.WM_LBUTTONDBLCLK:
                isMouseButtonDown = true;
                button            = ButtonCode.Left;
                break;

            case WindowMessage.WM_RBUTTONDOWN:
                isMouseButtonDown = true;
                button            = ButtonCode.Right;
                break;

            case WindowMessage.WM_RBUTTONUP:
                isMouseButtonUp = true;
                button          = ButtonCode.Right;
                break;

            case WindowMessage.WM_RBUTTONDBLCLK:
                isMouseButtonDown = true;
                button            = ButtonCode.Right;
                break;

            case WindowMessage.WM_MBUTTONDOWN:
                isMouseButtonDown = true;
                button            = ButtonCode.Middle;
                break;

            case WindowMessage.WM_MBUTTONUP:
                isMouseButtonUp = true;
                button          = ButtonCode.Middle;
                break;

            case WindowMessage.WM_MBUTTONDBLCLK:
                isMouseButtonDown = true;
                button            = ButtonCode.Middle;
                break;

            case WindowMessage.WM_MOUSEWHEEL_V:
                button     = ButtonCode.VScroll;
                mouseDelta = data.Data.MouseDataValue;
                break;

            case WindowMessage.WM_XBUTTONDOWN:
                button = data.Data.MouseData == MouseData.XButton1_Click
                        ? ButtonCode.XButton1
                        : ButtonCode.XButton2;
                isMouseButtonDown = true;
                break;

            case WindowMessage.WM_XBUTTONUP:
                button = data.Data.MouseData == MouseData.XButton1_Click
                        ? ButtonCode.XButton1
                        : ButtonCode.XButton2;
                isMouseButtonUp = true;
                break;

            case WindowMessage.WM_XBUTTONDBLCLK:
                isMouseButtonDown = true;
                button            = data.Data.MouseData == MouseData.XButton1_Click
                        ? ButtonCode.XButton1
                        : ButtonCode.XButton2;
                break;

            case WindowMessage.WM_MOUSEWHEEL_H:
                button     = ButtonCode.HScroll;
                mouseDelta = data.Data.MouseDataValue;
                break;
            }

            var Status = ButtonStatusValue.Compute(isMouseButtonDown, isMouseButtonUp, mouseDelta);

            var ret = EventSourceEventArgs.Create(data.Data.Timestamp, new MouseInput(button, data.Data.Point, mouseDelta, Status), data);

            return(ret);
        }