From 98d312a9d49af565a7dda6ffbbc44759ecad3141 Mon Sep 17 00:00:00 2001 From: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com> Date: Fri, 15 Jul 2022 10:22:59 +0200 Subject: [PATCH] [PowerRename] Scale window size (#19378) --- .../PowerRenameUILib/MainWindow.xaml.cpp | 39 +++++++++++-------- .../PowerRenameUILib/PowerRenameUI.vcxproj | 4 +- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/src/modules/powerrename/PowerRenameUILib/MainWindow.xaml.cpp b/src/modules/powerrename/PowerRenameUILib/MainWindow.xaml.cpp index e3d2ff7759..eb16085d17 100644 --- a/src/modules/powerrename/PowerRenameUILib/MainWindow.xaml.cpp +++ b/src/modules/powerrename/PowerRenameUILib/MainWindow.xaml.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #include "microsoft.ui.xaml.window.h" #include @@ -65,32 +66,38 @@ namespace winrt::PowerRenameUI::implementation Microsoft::UI::WindowId windowId = Microsoft::UI::GetWindowIdFromWindow(m_window); + Microsoft::UI::Windowing::AppWindow appWindow = + Microsoft::UI::Windowing::AppWindow::GetFromWindowId(windowId); + appWindow.SetIcon(PowerRenameUIIco); + POINT cursorPosition{}; if (GetCursorPos(&cursorPosition)) { + ::Windows::Graphics::PointInt32 point{ cursorPosition.x, cursorPosition.y}; + Microsoft::UI::Windowing::DisplayArea displayArea = Microsoft::UI::Windowing::DisplayArea::GetFromPoint(point, Microsoft::UI::Windowing::DisplayAreaFallback::Nearest); + HMONITOR hMonitor = MonitorFromPoint(cursorPosition, MONITOR_DEFAULTTOPRIMARY); MONITORINFOEX monitorInfo; monitorInfo.cbSize = sizeof(MONITORINFOEX); GetMonitorInfo(hMonitor, &monitorInfo); - RECT rect; - if (GetWindowRect(m_window, &rect)) - { - int width = rect.right - rect.left; - int height = rect.bottom - rect.top; + UINT x_dpi; + GetDpiForMonitor(hMonitor, MONITOR_DPI_TYPE::MDT_EFFECTIVE_DPI, &x_dpi, &x_dpi); + UINT window_dpi = GetDpiForWindow(m_window); - MoveWindow(m_window, - monitorInfo.rcWork.left + (monitorInfo.rcWork.right - monitorInfo.rcWork.left - width) / 2, - monitorInfo.rcWork.top + (monitorInfo.rcWork.bottom - monitorInfo.rcWork.top - height) / 2, - width, - height, - true); - } + int width = 1400; + int height = 800; + + winrt::Windows::Graphics::RectInt32 rect; + // Scale window size + rect.Width = (int32_t)(width * (float)window_dpi / x_dpi); + rect.Height = (int32_t)(height * (float)window_dpi / x_dpi); + // Center to screen + rect.X = displayArea.WorkArea().X + displayArea.WorkArea().Width / 2 - width / 2; + rect.Y = displayArea.WorkArea().Y + displayArea.WorkArea().Height / 2 - height / 2; + + appWindow.MoveAndResize(rect); } - Microsoft::UI::Windowing::AppWindow appWindow = - Microsoft::UI::Windowing::AppWindow::GetFromWindowId(windowId); - appWindow.SetIcon(PowerRenameUIIco); - Title(hstring{ L"PowerRename" }); m_searchMRUList = winrt::single_threaded_observable_vector(); diff --git a/src/modules/powerrename/PowerRenameUILib/PowerRenameUI.vcxproj b/src/modules/powerrename/PowerRenameUILib/PowerRenameUI.vcxproj index e33536531a..24c4221ae6 100644 --- a/src/modules/powerrename/PowerRenameUILib/PowerRenameUI.vcxproj +++ b/src/modules/powerrename/PowerRenameUILib/PowerRenameUI.vcxproj @@ -70,7 +70,7 @@ _DEBUG;%(PreprocessorDefinitions) - kernel32.lib;user32.lib;dwmapi.lib;%(AdditionalDependencies) + kernel32.lib;user32.lib;dwmapi.lib;Shcore.lib;%(AdditionalDependencies) @@ -80,7 +80,7 @@ true true - kernel32.lib;user32.lib;dwmapi.lib;%(AdditionalDependencies) + kernel32.lib;user32.lib;dwmapi.lib;Shcore.lib;%(AdditionalDependencies)