Exemplo n.º 1
0
        public void SetMousePosition(Vector2 position)
        {
            POINT pt = new POINT {
                x = (int)position.x, y = (int)position.y
            };

            WinUser.ClientToScreen(Window.GetWindowClass().GetHWND(), ref pt);
            WinUser.SetCursorPos(pt.x, pt.y);
        }
Exemplo n.º 2
0
        public void PlatformUpdate()
        {
            POINT mouse = new POINT();

            WinUser.GetCursorPos(ref mouse);
            WinUser.ScreenToClient(Window.GetWindowClass().GetHWND(), ref mouse);

            Vector2 mousePos = new Vector2(mouse.x, mouse.y);

            if (mousePos != mousePosition)
            {
                // TPDP Put left
                eventCallback(new MouseMovedEvent(mousePos.x, mousePos.y, mouseButtons[0]));
                mousePosition = mousePos;
            }
        }
Exemplo n.º 3
0
        public static IntPtr WndProc(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam)
        {
            IntPtr result = new IntPtr();
            Window window = Window.GetWindowClass();

            if (window == null)
            {
                return(WinUser.DefWindowProcW(hWnd, msg, wParam, lParam));
            }

            InputManager inputManager = window.GetInputManager();

            switch (msg)
            {
            case WinUser.WM_ACTIVATE:
            {
                if (wParam.ToInt32().HighWord() != 0)
                {
                    // active
                }
                else
                {
                    // inactive
                }
                return(new IntPtr(0));
            }

            case WinUser.WM_SYSCOMMAND:
            {
                switch (wParam.ToInt32())
                {
                case WinUser.SC_SCREENSAVE:
                case WinUser.SC_MONITORPOWER:
                    return(new IntPtr(0));
                }
                result = WinUser.DefWindowProcW(hWnd, msg, wParam, lParam);
            }
            break;

            case WinUser.WM_SETFOCUS:
                FocusCallback(window, true);
                break;

            case WinUser.WM_KILLFOCUS:
                FocusCallback(window, false);
                break;

            case WinUser.WM_CLOSE:
            case WinUser.WM_DESTROY:
                WinUser.PostQuitMessage(0);
                break;

            case WinUser.WM_KEYDOWN:
            case WinUser.WM_KEYUP:
            case WinUser.WM_SYSKEYDOWN:
            case WinUser.WM_SYSKEYUP:
                InputManager.KeyCallback(inputManager, (uint)lParam.ToInt32(), (uint)wParam.ToInt32(), msg);
                break;

            case WinUser.WM_LBUTTONDOWN:
            case WinUser.WM_LBUTTONUP:
            case WinUser.WM_RBUTTONDOWN:
            case WinUser.WM_RBUTTONUP:
            case WinUser.WM_MBUTTONDOWN:
            case WinUser.WM_MBUTTONUP:
                InputManager.MouseButtonCallback(hWnd, inputManager, msg, (uint)lParam.ToInt32().LowWord(), (uint)lParam.ToInt32().LowWord());
                break;

            case WinUser.WM_SIZE:
                ResizeCallback(window, lParam.ToInt32().LowWord(), lParam.ToInt32().HighWord());
                break;

            default:
                result = WinUser.DefWindowProcW(hWnd, msg, wParam, lParam);
                break;
            }
            return(result);
        }