From 07749cb2ccc028abec86b22572f96df64e0b2c8b Mon Sep 17 00:00:00 2001 From: stax76 Date: Sat, 10 Aug 2024 11:19:23 +0200 Subject: [PATCH] title-bar fix --- src/MpvNet.Windows/Help/WinApiHelp.cs | 8 ++++---- src/MpvNet.Windows/WinForms/MainForm.cs | 14 +++++++++----- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/MpvNet.Windows/Help/WinApiHelp.cs b/src/MpvNet.Windows/Help/WinApiHelp.cs index 345f4b2..d984777 100644 --- a/src/MpvNet.Windows/Help/WinApiHelp.cs +++ b/src/MpvNet.Windows/Help/WinApiHelp.cs @@ -27,7 +27,7 @@ public static class WinApiHelp } } - public static void AdjustWindowRect(IntPtr hwnd, ref RECT rc, int dpi) + public static void AdjustWindowRectangle(IntPtr hwnd, ref RECT rc, int dpi) { uint style = (uint)GetWindowLongPtr(hwnd, -16); // GWL_STYLE uint styleEx = (uint)GetWindowLongPtr(hwnd, -20); // GWL_EXSTYLE @@ -35,13 +35,13 @@ public static class WinApiHelp if (Environment.OSVersion.Version >= WindowsTen1607) AdjustWindowRectExForDpi(ref rc, style, false, styleEx, (uint)dpi); else - Native.WinApi.AdjustWindowRect(ref rc, style, false); + AdjustWindowRect(ref rc, style, false); } public static void AddWindowBorders(IntPtr hwnd, ref RECT rc, int dpi, bool changeTop) { RECT win = rc; - AdjustWindowRect(hwnd, ref rc, dpi); + AdjustWindowRectangle(hwnd, ref rc, dpi); if (changeTop) { @@ -64,7 +64,7 @@ public static class WinApiHelp public static int GetTitleBarHeight(IntPtr hwnd, int dpi) { RECT rect = new RECT(); - AdjustWindowRect(hwnd, ref rect, dpi); + AdjustWindowRectangle(hwnd, ref rect, dpi); return -rect.Top; } diff --git a/src/MpvNet.Windows/WinForms/MainForm.cs b/src/MpvNet.Windows/WinForms/MainForm.cs index 7b890c0..4ae34d3 100644 --- a/src/MpvNet.Windows/WinForms/MainForm.cs +++ b/src/MpvNet.Windows/WinForms/MainForm.cs @@ -677,14 +677,17 @@ public partial class MainForm : Form Point middlePos = new Point(Left + Width / 2, Top + Height / 2); var rect = new RECT(new Rectangle(screen.Bounds.X, screen.Bounds.Y, width, height)); - + AddWindowBorders(Handle, ref rect, GetDpi(Handle), !Player.TitleBar); width = rect.Width; height = rect.Height; - int left = middlePos.X - width / 2; - int top = middlePos.Y - height / 2; + int left = Convert.ToInt32(middlePos.X - width / 2.0); + int top = Convert.ToInt32(middlePos.Y - height / 2.0); + + if (!Player.TitleBar) + top -= Convert.ToInt32(GetTitleBarHeight(Handle, GetDpi(Handle)) / 2.0); Rectangle currentRect = new Rectangle(Left, Top, Width, Height); @@ -784,7 +787,7 @@ public partial class MainForm : Form else { WindowState = FormWindowState.Normal; - + if (!Player.WasInitialSizeSet) SetFormPosAndSize(); } @@ -1101,7 +1104,8 @@ public partial class MainForm : Form { var nccalcsize_params = Marshal.PtrToStructure(m.LParam); RECT[] rects = nccalcsize_params.rgrc; - rects[0].Top = rects[0].Top - GetTitleBarHeight(Handle, GetDpi(Handle)); + int h = GetTitleBarHeight(Handle, GetDpi(Handle)); + rects[0].Top = rects[0].Top - h; Marshal.StructureToPtr(nccalcsize_params, m.LParam, false); } break;