Alexandre Julliard : user32/tests: Add tests for GetDpiForSystem().

Alexandre Julliard julliard at winehq.org
Wed Apr 11 16:12:55 CDT 2018


Module: wine
Branch: master
Commit: 9d5e33b7413944994c3dbb862eb37309f8b73ee7
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=9d5e33b7413944994c3dbb862eb37309f8b73ee7

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Wed Apr 11 16:01:28 2018 +0200

user32/tests: Add tests for GetDpiForSystem().

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/user32/tests/sysparams.c | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/dlls/user32/tests/sysparams.c b/dlls/user32/tests/sysparams.c
index d4e315f..5b185b9 100644
--- a/dlls/user32/tests/sysparams.c
+++ b/dlls/user32/tests/sysparams.c
@@ -44,6 +44,7 @@ static BOOL (WINAPI *pSetProcessDPIAware)(void);
 static BOOL (WINAPI *pSetProcessDpiAwarenessContext)(DPI_AWARENESS_CONTEXT);
 static BOOL (WINAPI *pGetProcessDpiAwarenessInternal)(HANDLE,DPI_AWARENESS*);
 static BOOL (WINAPI *pSetProcessDpiAwarenessInternal)(DPI_AWARENESS);
+static UINT (WINAPI *pGetDpiForSystem)(void);
 static DPI_AWARENESS_CONTEXT (WINAPI *pGetThreadDpiAwarenessContext)(void);
 static DPI_AWARENESS_CONTEXT (WINAPI *pSetThreadDpiAwarenessContext)(DPI_AWARENESS_CONTEXT);
 static DPI_AWARENESS_CONTEXT (WINAPI *pGetWindowDpiAwarenessContext)(HWND);
@@ -198,6 +199,13 @@ static DWORD get_real_dpi(void)
 {
     DWORD dpi;
 
+    if (pSetThreadDpiAwarenessContext)
+    {
+        DPI_AWARENESS_CONTEXT context = pSetThreadDpiAwarenessContext( DPI_AWARENESS_CONTEXT_SYSTEM_AWARE );
+        dpi = pGetDpiForSystem();
+        pSetThreadDpiAwarenessContext( context );
+        return dpi;
+    }
     if (get_reg_dword(HKEY_CURRENT_USER, "Control Panel\\Desktop", "LogPixels", &dpi))
         return dpi;
     if (get_reg_dword(HKEY_CURRENT_CONFIG, "Software\\Fonts", "LogPixels", &dpi))
@@ -3008,6 +3016,8 @@ static void test_dpi_aware(void)
         DPI_AWARENESS awareness;
         DPI_AWARENESS_CONTEXT context;
         ULONG_PTR i;
+        UINT dpi;
+        HDC hdc = GetDC( 0 );
 
         context = pGetThreadDpiAwarenessContext();
         todo_wine
@@ -3017,6 +3027,12 @@ static void test_dpi_aware(void)
         ok( awareness == DPI_AWARENESS_UNAWARE, "wrong awareness %u\n", awareness );
         todo_wine
         ok( !pIsProcessDPIAware(), "already aware\n" );
+        dpi = pGetDpiForSystem();
+        todo_wine_if (real_dpi != USER_DEFAULT_SCREEN_DPI)
+        ok( dpi == USER_DEFAULT_SCREEN_DPI, "wrong dpi %u\n", dpi );
+        dpi = GetDeviceCaps( hdc, LOGPIXELSX );
+        todo_wine_if (real_dpi != USER_DEFAULT_SCREEN_DPI)
+        ok( dpi == USER_DEFAULT_SCREEN_DPI, "wrong dpi %u\n", dpi );
         SetLastError( 0xdeadbeef );
         ret = pSetProcessDpiAwarenessContext( NULL );
         ok( !ret, "got %d\n", ret );
@@ -3028,6 +3044,7 @@ static void test_dpi_aware(void)
         ret = pSetProcessDpiAwarenessContext( DPI_AWARENESS_CONTEXT_SYSTEM_AWARE );
         ok( ret, "got %d\n", ret );
         ok( pIsProcessDPIAware(), "not aware\n" );
+        real_dpi = pGetDpiForSystem();
         SetLastError( 0xdeadbeef );
         ret = pSetProcessDpiAwarenessContext( DPI_AWARENESS_CONTEXT_SYSTEM_AWARE );
         ok( !ret, "got %d\n", ret );
@@ -3071,6 +3088,11 @@ static void test_dpi_aware(void)
         ok( context == (DPI_AWARENESS_CONTEXT)0x80000011, "wrong context %p\n", context );
         awareness = pGetAwarenessFromDpiAwarenessContext( context );
         ok( awareness == DPI_AWARENESS_SYSTEM_AWARE, "wrong awareness %u\n", awareness );
+        dpi = pGetDpiForSystem();
+        ok( dpi == USER_DEFAULT_SCREEN_DPI, "wrong dpi %u\n", dpi );
+        dpi = GetDeviceCaps( hdc, LOGPIXELSX );
+        todo_wine_if (real_dpi != USER_DEFAULT_SCREEN_DPI)
+        ok( dpi == USER_DEFAULT_SCREEN_DPI, "wrong dpi %u\n", dpi );
         ok( !pIsProcessDPIAware(), "still aware\n" );
         context = pGetThreadDpiAwarenessContext();
         ok( context == (DPI_AWARENESS_CONTEXT)0x10, "wrong context %p\n", context );
@@ -3080,6 +3102,10 @@ static void test_dpi_aware(void)
         ok( context == (DPI_AWARENESS_CONTEXT)0x10, "wrong context %p\n", context );
         awareness = pGetAwarenessFromDpiAwarenessContext( context );
         ok( awareness == DPI_AWARENESS_UNAWARE, "wrong awareness %u\n", awareness );
+        dpi = pGetDpiForSystem();
+        ok( dpi == real_dpi, "wrong dpi %u/%u\n", dpi, real_dpi );
+        dpi = GetDeviceCaps( hdc, LOGPIXELSX );
+        ok( dpi == real_dpi, "wrong dpi %u\n", dpi );
         context = pGetThreadDpiAwarenessContext();
         ok( context == (DPI_AWARENESS_CONTEXT)0x12, "wrong context %p\n", context );
         awareness = pGetAwarenessFromDpiAwarenessContext( context );
@@ -3088,6 +3114,10 @@ static void test_dpi_aware(void)
         ok( context == (DPI_AWARENESS_CONTEXT)0x12, "wrong context %p\n", context );
         awareness = pGetAwarenessFromDpiAwarenessContext( context );
         ok( awareness == DPI_AWARENESS_PER_MONITOR_AWARE, "wrong awareness %u\n", awareness );
+        dpi = pGetDpiForSystem();
+        ok( dpi == real_dpi, "wrong dpi %u/%u\n", dpi, real_dpi );
+        dpi = GetDeviceCaps( hdc, LOGPIXELSX );
+        ok( dpi == real_dpi, "wrong dpi %u\n", dpi );
         ok( pIsProcessDPIAware(), "not aware\n" );
         context = pGetThreadDpiAwarenessContext();
         ok( context == (DPI_AWARENESS_CONTEXT)0x11, "wrong context %p\n", context );
@@ -3152,6 +3182,7 @@ static void test_dpi_aware(void)
                 break;
             }
         }
+        ReleaseDC( 0, hdc );
     }
     else win_skip( "SetProcessDpiAwarenessContext not supported\n" );
 
@@ -3161,6 +3192,7 @@ static void test_dpi_aware(void)
     ret = pIsProcessDPIAware();
     ok(ret, "got %d\n", ret);
 
+    if (pGetDpiForSystem) real_dpi = pGetDpiForSystem();
     dpi = real_dpi;
     test_GetSystemMetrics();
 }
@@ -3236,6 +3268,7 @@ START_TEST(sysparams)
     pChangeDisplaySettingsExA = (void*)GetProcAddress(hdll, "ChangeDisplaySettingsExA");
     pIsProcessDPIAware = (void*)GetProcAddress(hdll, "IsProcessDPIAware");
     pSetProcessDPIAware = (void*)GetProcAddress(hdll, "SetProcessDPIAware");
+    pGetDpiForSystem = (void*)GetProcAddress(hdll, "GetDpiForSystem");
     pSetProcessDpiAwarenessContext = (void*)GetProcAddress(hdll, "SetProcessDpiAwarenessContext");
     pGetProcessDpiAwarenessInternal = (void*)GetProcAddress(hdll, "GetProcessDpiAwarenessInternal");
     pSetProcessDpiAwarenessInternal = (void*)GetProcAddress(hdll, "SetProcessDpiAwarenessInternal");




More information about the wine-cvs mailing list