From 6f7f387b1b8ace2171e29886254285567377cfe2 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Wed, 19 Aug 2020 21:21:26 +0200 Subject: [PATCH] Use GDI Scaling for dpi-unaware system dialogs Fall back to system scaling when GDI scaling fails or is unavailable. --- include/wx/msw/private/dpiaware.h | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/include/wx/msw/private/dpiaware.h b/include/wx/msw/private/dpiaware.h index 8467ef3b30..cab54e8af2 100644 --- a/include/wx/msw/private/dpiaware.h +++ b/include/wx/msw/private/dpiaware.h @@ -22,13 +22,14 @@ namespace wxMSWImpl { // ---------------------------------------------------------------------------- -// Temporarily change the DPI Awareness context to System +// Temporarily change the DPI Awareness context to GDIScaled or System // ---------------------------------------------------------------------------- class AutoSystemDpiAware { - #define WXDPI_AWARENESS_CONTEXT_UNAWARE ((WXDPI_AWARENESS_CONTEXT)-1) - #define WXDPI_AWARENESS_CONTEXT_SYSTEM_AWARE ((WXDPI_AWARENESS_CONTEXT)-2) + #define WXDPI_AWARENESS_CONTEXT_UNAWARE ((WXDPI_AWARENESS_CONTEXT)-1) + #define WXDPI_AWARENESS_CONTEXT_SYSTEM_AWARE ((WXDPI_AWARENESS_CONTEXT)-2) + #define WXDPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED ((WXDPI_AWARENESS_CONTEXT)-5) typedef WXDPI_AWARENESS_CONTEXT (WINAPI *SetThreadDpiAwarenessContext_t)(WXDPI_AWARENESS_CONTEXT); @@ -46,7 +47,12 @@ public: if ( m_pfnSetThreadDpiAwarenessContext ) { m_prevContext = m_pfnSetThreadDpiAwarenessContext( - WXDPI_AWARENESS_CONTEXT_SYSTEM_AWARE); + WXDPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED); + if ( !m_prevContext ) + { + m_prevContext = m_pfnSetThreadDpiAwarenessContext( + WXDPI_AWARENESS_CONTEXT_SYSTEM_AWARE); + } } }