コード例 #1
0
        private static IntPtr WindowProc(IntPtr hwnd, uint umsg,
                                         IntPtr wParam, IntPtr lParam)
        {
            var msg = (WM)umsg;

            switch (msg)
            {
            case WM.ERASEBKGND:
                return(new IntPtr(1));

            case WM.CLOSE:
            {
                User32Methods.PostQuitMessage(0);
                break;
            }

            case WM.PAINT:
            {
                PaintStruct ps;
                var         hdc = User32Methods.BeginPaint(hwnd, out ps);
                User32Methods.FillRect(hdc, ref ps.PaintRect,
                                       Gdi32Helpers.GetStockObject(StockObject.WHITE_BRUSH));
                User32Methods.EndPaint(hwnd, ref ps);
                break;
            }
            }
            return(User32Methods.DefWindowProc(hwnd, umsg, wParam, lParam));
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: zyj0021/WinApi
        protected override void OnPaint(ref PaintPacket packet)
        {
            PaintStruct ps;
            var         hdc = this.BeginPaint(out ps);

            User32Methods.FillRect(hdc, ref ps.PaintRect,
                                   Gdi32Helpers.GetStockObject(StockObject.WHITE_BRUSH));
            this.EndPaint(ref ps);
            base.OnPaint(ref packet);
        }
コード例 #3
0
        private static IntPtr WindowProc(IntPtr hwnd, uint umsg, IntPtr wParam, IntPtr lParam)
        {
            IntPtr result = IntPtr.Zero;

            var msg = (WM)umsg;

            switch (msg)
            {
            case WM.ERASEBKGND:
                return(new IntPtr(1));

            case WM.CLOSE: User32Methods.PostQuitMessage(0);
                break;

            case WM.PAINT:
            {
                var hdc = User32Methods.BeginPaint(hwnd, out PaintStruct ps);
                User32Methods.FillRect(hdc, ref ps.PaintRect,
                                       Gdi32Helpers.GetStockObject(StockObject.WHITE_BRUSH));
                User32Methods.EndPaint(hwnd, ref ps);
                break;
            }

            case WM.KEYDOWN: InputManager.Instance.KeyPressed((VirtualKey)wParam.ToInt32(), lParam.ToInt32() & 0x40000000);
                break;

            case WM.KEYUP: InputManager.Instance.KeyReleased((VirtualKey)wParam.ToInt32());
                break;

            case WM.CHAR: InputManager.Instance.KeyTyped((char)wParam.ToInt32());
                break;

            case WM.MOUSEMOVE:
            {
                int x = unchecked ((short)(long)lParam);
                int y = unchecked ((short)((long)lParam >> 16));
                InputManager.Instance.MouseMoved(x, y);
                break;
            }

            case WM.LBUTTONDOWN:
            {
                int x = unchecked ((short)(long)lParam);
                int y = unchecked ((short)((long)lParam >> 16));
                InputManager.Instance.MousePressed(MouseButton.Left, x, y);
                break;
            }

            case WM.LBUTTONUP:
            {
                int x = unchecked ((short)(long)lParam);
                int y = unchecked ((short)((long)lParam >> 16));
                InputManager.Instance.MouseReleased(MouseButton.Left, x, y);
                break;
            }

            case WM.RBUTTONDOWN:
            {
                int x = unchecked ((short)(long)lParam);
                int y = unchecked ((short)((long)lParam >> 16));
                InputManager.Instance.MousePressed(MouseButton.Right, x, y);
                break;
            }

            case WM.RBUTTONUP:
            {
                int x = unchecked ((short)(long)lParam);
                int y = unchecked ((short)((long)lParam >> 16));
                InputManager.Instance.MouseReleased(MouseButton.Right, x, y);
                break;
            }

            default:
                result = User32Methods.DefWindowProc(hwnd, umsg, wParam, lParam);
                break;
            }
            return(result);
        }