[PowerRename] Scale window size (#19378)

This commit is contained in:
Stefan Markovic
2022-07-15 10:22:59 +02:00
committed by GitHub
parent 35797e8680
commit 98d312a9d4
2 changed files with 25 additions and 18 deletions

View File

@@ -17,6 +17,7 @@
#include <string> #include <string>
#include <sstream> #include <sstream>
#include <vector> #include <vector>
#include <shellscalingapi.h>
#include "microsoft.ui.xaml.window.h" #include "microsoft.ui.xaml.window.h"
#include <winrt/Microsoft.UI.Interop.h> #include <winrt/Microsoft.UI.Interop.h>
@@ -65,32 +66,38 @@ namespace winrt::PowerRenameUI::implementation
Microsoft::UI::WindowId windowId = Microsoft::UI::WindowId windowId =
Microsoft::UI::GetWindowIdFromWindow(m_window); Microsoft::UI::GetWindowIdFromWindow(m_window);
Microsoft::UI::Windowing::AppWindow appWindow =
Microsoft::UI::Windowing::AppWindow::GetFromWindowId(windowId);
appWindow.SetIcon(PowerRenameUIIco);
POINT cursorPosition{}; POINT cursorPosition{};
if (GetCursorPos(&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); HMONITOR hMonitor = MonitorFromPoint(cursorPosition, MONITOR_DEFAULTTOPRIMARY);
MONITORINFOEX monitorInfo; MONITORINFOEX monitorInfo;
monitorInfo.cbSize = sizeof(MONITORINFOEX); monitorInfo.cbSize = sizeof(MONITORINFOEX);
GetMonitorInfo(hMonitor, &monitorInfo); GetMonitorInfo(hMonitor, &monitorInfo);
RECT rect; UINT x_dpi;
if (GetWindowRect(m_window, &rect)) GetDpiForMonitor(hMonitor, MONITOR_DPI_TYPE::MDT_EFFECTIVE_DPI, &x_dpi, &x_dpi);
{ UINT window_dpi = GetDpiForWindow(m_window);
int width = rect.right - rect.left;
int height = rect.bottom - rect.top;
MoveWindow(m_window, int width = 1400;
monitorInfo.rcWork.left + (monitorInfo.rcWork.right - monitorInfo.rcWork.left - width) / 2, int height = 800;
monitorInfo.rcWork.top + (monitorInfo.rcWork.bottom - monitorInfo.rcWork.top - height) / 2,
width, winrt::Windows::Graphics::RectInt32 rect;
height, // Scale window size
true); 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" }); Title(hstring{ L"PowerRename" });
m_searchMRUList = winrt::single_threaded_observable_vector<hstring>(); m_searchMRUList = winrt::single_threaded_observable_vector<hstring>();

View File

@@ -70,7 +70,7 @@
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile> </ClCompile>
<Link> <Link>
<AdditionalDependencies>kernel32.lib;user32.lib;dwmapi.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>kernel32.lib;user32.lib;dwmapi.lib;Shcore.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'=='Release'"> <ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
@@ -80,7 +80,7 @@
<Link> <Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>kernel32.lib;user32.lib;dwmapi.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>kernel32.lib;user32.lib;dwmapi.lib;Shcore.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>