public void DeferWindowPos(IWindow window, IWindowLocation location) { var flags = Win32.SWP.SWP_FRAMECHANGED | Win32.SWP.SWP_NOACTIVATE | Win32.SWP.SWP_NOCOPYBITS | Win32.SWP.SWP_NOZORDER | Win32.SWP.SWP_NOOWNERZORDER; if (location.State == WindowState.Maximized) { _toMaximize.Add(window); flags = flags | Win32.SWP.SWP_NOMOVE | Win32.SWP.SWP_NOSIZE; } else if (location.State == WindowState.Minimized) { _toMinimize.Add(window); flags = flags | Win32.SWP.SWP_NOMOVE | Win32.SWP.SWP_NOSIZE; } else { _toNormal.Add(window); } // Calculate final position for window var offset = window.Offset; int X = location.X + offset.X; int Y = location.Y + offset.Y; int Width = location.Width + offset.Width; int Height = location.Height + offset.Height; Win32.DeferWindowPos(_info, window.Handle, IntPtr.Zero, X, Y, Width, Height, flags); }
public void ShowInLocation(IWindowLocation location) { this.Invoke((MethodInvoker)(() => { this.Location = new Point(location.X, location.Y); this.Height = location.Height; this.Width = location.Width; this.Show(); _showTimer.Stop(); _showTimer.Start(); })); }
public void DeferWindowPos(IWindow window, IWindowLocation location) { var flags = Win32.SWP.SWP_FRAMECHANGED | Win32.SWP.SWP_NOACTIVATE | Win32.SWP.SWP_NOCOPYBITS | Win32.SWP.SWP_NOZORDER | Win32.SWP.SWP_NOOWNERZORDER; if (location.State == WindowState.Maximized) { _toMaximize.Add(window); flags = flags | Win32.SWP.SWP_NOMOVE | Win32.SWP.SWP_NOSIZE; } else if (location.State == WindowState.Minimized) { _toMinimize.Add(window); flags = flags | Win32.SWP.SWP_NOMOVE | Win32.SWP.SWP_NOSIZE; } else { _toNormal.Add(window); } Win32.DeferWindowPos(_info, window.Handle, IntPtr.Zero, location.X, location.Y, location.Width, location.Height, flags); }