private IntPtr WindowProcedure(IntPtr hwnd, int message, IntPtr wParam, IntPtr lParam, ref bool handled) { var lresult = IntPtr.Zero; switch ((WindowMessage)message) { case WindowMessage.NonClientAreaHitTest: handled = true; lresult = OnNonClientAreaHitTest(hwnd, message, wParam, lParam); break; case WindowMessage.DpiChanged: { var dpiX = wParam.ToLoWord(); var dpiY = wParam.ToHiWord(); var suggested = (NativeRect)System.Runtime.InteropServices.Marshal.PtrToStructure(lParam, typeof(NativeRect)); this.OnDpiChanged(new Dpi(dpiX, dpiY), suggested); handled = true; break; } case WindowMessage.EnterSizeMove: this.OnEnterSizeMove(); break; case WindowMessage.ExitSizeMove: this.OnExitSizeMove(); break; } return lresult; }
private IntPtr HwndHook(IntPtr hWnd, int message, IntPtr wParam, IntPtr lParam, ref bool handled) { var returnval = IntPtr.Zero; switch (message) { case Constants.WM_DPICHANGED: if (this.isPerMonitorDpiSupported) { var dpiX = wParam.ToLoWord(); var dpiY = wParam.ToHiWord(); this.ChangeDpi(new Dpi(dpiX, dpiY)); handled = true; } break; case Constants.WM_NCLBUTTONDOWN: this.window.isSystemMenuOpened = false; break; } return returnval; }
private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) { if (msg == (int)WM.DPICHANGED) { var dpiX = wParam.ToHiWord(); var dpiY = wParam.ToLoWord(); this.ChangeDpi(new Dpi(dpiX, dpiY)); handled = true; } return IntPtr.Zero; }
private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) { if (msg == (int)WM.NCHITTEST) { if (this.ResizeMode == ResizeMode.CanResizeWithGrip && this.WindowState == WindowState.Normal && this.resizeGrip != null) { var ptScreen = lParam.ToPoint(); var ptClient = this.resizeGrip.PointFromScreen(ptScreen); var rectTarget = new Rect(0, 0, this.resizeGrip.ActualWidth, this.resizeGrip.ActualHeight); if (rectTarget.Contains(ptClient)) { handled = true; return (IntPtr)HitTestValues.HTBOTTOMRIGHT; } } } else if (msg == (int)WM.DPICHANGED) { var dpiX = wParam.ToLoWord(); var dpiY = wParam.ToHiWord(); this.ChangeDpi(new Dpi(dpiX, dpiY)); handled = true; } return IntPtr.Zero; }