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;
		}
Esempio n. 2
0
        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;
        }
Esempio n. 3
0
        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;
        }
Esempio n. 4
0
        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;
        }