/// <summary> /// The window proc. /// </summary> /// <param name="hwnd"> /// The hwnd. /// </param> /// <param name="umsg"> /// The umsg. /// </param> /// <param name="wParam"> /// The w param. /// </param> /// <param name="lParam"> /// The l param. /// </param> /// <returns> /// The <see cref="IntPtr"/>. /// </returns> private IntPtr WindowProc(IntPtr hwnd, uint umsg, IntPtr wParam, IntPtr lParam) { var msg = (WM)umsg; switch (msg) { case WM.CREATE: { Handle = hwnd; var size = GetClientSize(); OnCreate(hwnd, size.Width, size.Height); break; } case WM.ERASEBKGND: return(new IntPtr(1)); case WM.SIZE: { var size = GetClientSize(); OnSize(size.Width, size.Height); break; } case WM.CLOSE: { OnExit(); Exit(); break; } } return(User32Methods.DefWindowProc(hwnd, umsg, wParam, lParam)); }
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)); }
/// <summary> /// The window proc. /// </summary> /// <param name="hwnd"> /// The hwnd. /// </param> /// <param name="umsg"> /// The umsg. /// </param> /// <param name="wParam"> /// The w param. /// </param> /// <param name="lParam"> /// The l param. /// </param> /// <returns> /// The <see cref="IntPtr"/>. /// </returns> private IntPtr WindowProc(IntPtr hwnd, uint umsg, IntPtr wParam, IntPtr lParam) { var msg = (WM)umsg; switch (msg) { case WM.ACTIVATE: { if (_hostConfig.HostPlacement.Frameless) { var frameSizeY = User32Methods.GetSystemMetrics(SystemMetrics.SM_CYFRAME); var frameSizeX = User32Methods.GetSystemMetrics(SystemMetrics.SM_CXFRAME); var frameMargins = new Margins(frameSizeX, frameSizeX, frameSizeY, frameSizeY); DwmApiMethods.DwmExtendFrameIntoClientArea(Handle, ref frameMargins); User32Methods.SetWindowPos(hwnd, IntPtr.Zero, 0, 0, 0, 0, WindowPositionFlags.SWP_NOZORDER | WindowPositionFlags.SWP_NOOWNERZORDER | WindowPositionFlags.SWP_NOMOVE | WindowPositionFlags.SWP_NOSIZE | WindowPositionFlags.SWP_FRAMECHANGED); } break; } case WM.CREATE: { Handle = hwnd; var size = GetClientSize(); OnCreate(hwnd, size.Width, size.Height); break; } case WM.ERASEBKGND: return(new IntPtr(1)); case WM.SIZE: { var size = GetClientSize(); OnSize(size.Width, size.Height); break; } case WM.CLOSE: { OnExit(); Exit(); Environment.Exit(0); break; } case WM.NCHITTEST: if (_hostConfig.HostPlacement.Frameless) { return((IntPtr)NativeMethods.HT_CAPTION); } break; } return(User32Methods.DefWindowProc(hwnd, umsg, wParam, lParam)); }
/// <summary> /// The window proc. /// </summary> /// <param name="hwnd"> /// The hwnd. /// </param> /// <param name="umsg"> /// The umsg. /// </param> /// <param name="wParam"> /// The w param. /// </param> /// <param name="lParam"> /// The l param. /// </param> /// <returns> /// The <see cref="IntPtr"/>. /// </returns> private IntPtr WindowProc(IntPtr hwnd, uint umsg, IntPtr wParam, IntPtr lParam) { var msg = (WM)umsg; switch (msg) { case WM.ACTIVATE: { if (mHostConfig.HostFrameless) { Margins frameMargins = new Margins(7, 7, 27, 7); DwmApiMethods.DwmExtendFrameIntoClientArea(Handle, ref frameMargins); User32Methods.SetWindowPos(hwnd, IntPtr.Zero, 0, 0, 0, 0, WindowPositionFlags.SWP_NOZORDER | WindowPositionFlags.SWP_NOOWNERZORDER | WindowPositionFlags.SWP_NOMOVE | WindowPositionFlags.SWP_NOSIZE | WindowPositionFlags.SWP_FRAMECHANGED); } break; } case WM.CREATE: { Handle = hwnd; var size = GetClientSize(); OnCreate(hwnd, size.Width, size.Height); break; } case WM.ERASEBKGND: return(new IntPtr(1)); case WM.SIZE: { var size = GetClientSize(); OnSize(size.Width, size.Height); break; } case WM.CLOSE: { OnExit(); Exit(); Environment.Exit(0); break; } case WM.NCCALCSIZE: { if (mHostConfig.HostFrameless) { return(IntPtr.Zero); } break; } case WM.NCHITTEST: { if (mHostConfig.HostFrameless) { // This might be a bit redundant to perform and should find another way // to pass the return value rather than performing a hit test again. var lRet = HitTestNCA(hwnd, wParam, lParam); return(lRet); } break; } } return(User32Methods.DefWindowProc(hwnd, umsg, wParam, lParam)); }
/// <summary> /// The window proc. /// </summary> /// <param name="hwnd"> /// The hwnd. /// </param> /// <param name="umsg"> /// The umsg. /// </param> /// <param name="wParam"> /// The w param. /// </param> /// <param name="lParam"> /// The l param. /// </param> /// <returns> /// The <see cref="IntPtr"/>. /// </returns> private IntPtr WindowProc(IntPtr hwnd, uint umsg, IntPtr wParam, IntPtr lParam) { var msg = (WM)umsg; switch (msg) { case WM.HOTKEY: { if (wParam == (IntPtr)1) { User32Methods.PostMessage(Handle, (uint)WM.CLOSE, IntPtr.Zero, IntPtr.Zero); return(IntPtr.Zero); } break; } case WM.SYSKEYDOWN: { if (_hostConfig.HostPlacement.KioskMode && (wParam == (IntPtr)VirtualKey.F4)) { return(IntPtr.Zero); } break; } case WM.CREATE: { NativeInstance = this; Handle = hwnd; var size = GetClientSize(); OnCreate(hwnd, size.Width, size.Height); break; } case WM.ERASEBKGND: return(new IntPtr(1)); case WM.NCCALCSIZE: { if (_hostConfig.HostPlacement.Frameless && _hostConfig.HostPlacement.FramelessOptions.IsResizable) { var result = User32Methods.DefWindowProc(hwnd, umsg, wParam, lParam); NativeMethods.NCCALCSIZE_PARAMS csp; csp = (NativeMethods.NCCALCSIZE_PARAMS)Marshal.PtrToStructure( lParam, typeof(NativeMethods.NCCALCSIZE_PARAMS)); csp.rgrc[0].Top -= _hostConfig.HostPlacement.FramelessOptions.WhiteStripeHeight; // # remove top whitestripe border! Marshal.StructureToPtr(csp, lParam, false); return(result); } break; } case WM.SIZE: { var size = GetClientSize(); OnSize(size.Width, size.Height); break; } case WM.CLOSE: { OnExit(); Exit(); Environment.Exit(0); break; } } return(User32Methods.DefWindowProc(hwnd, umsg, wParam, lParam)); }
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); }