#include "pch.h" #include "util.h" #include typedef BOOL(WINAPI* GetDpiForMonitorInternalFunc)(HMONITOR, UINT, UINT*, UINT*); UINT GetDpiForMonitor(HMONITOR monitor) noexcept { UINT dpi{}; if (wil::unique_hmodule user32{ LoadLibrary(L"user32.dll") }) { if (auto func = reinterpret_cast(GetProcAddress(user32.get(), "GetDpiForMonitorInternal"))) { func(monitor, 0, &dpi, &dpi); } } if (dpi == 0) { if (wil::unique_hdc hdc{ GetDC(nullptr) }) { dpi = GetDeviceCaps(hdc.get(), LOGPIXELSX); } } return (dpi == 0) ? DPIAware::DEFAULT_DPI : dpi; }