user32: Test and implement GetDpiFromDpiAwarenessContext.

This commit is contained in:
Rémi Bernon 2024-05-23 10:52:45 +02:00 committed by Alexandre Julliard
parent 1172c4a94e
commit 9f834614a9
4 changed files with 58 additions and 0 deletions

View file

@ -700,6 +700,15 @@ DPI_AWARENESS WINAPI GetAwarenessFromDpiAwarenessContext( DPI_AWARENESS_CONTEXT
} }
} }
/***********************************************************************
* GetDpiFromDpiAwarenessContext (USER32.@)
*/
UINT WINAPI GetDpiFromDpiAwarenessContext( DPI_AWARENESS_CONTEXT handle )
{
UINT context = get_ntuser_dpi_context( handle );
return NTUSER_DPI_CONTEXT_GET_DPI( context );
}
/*********************************************************************** /***********************************************************************
* IsValidDpiAwarenessContext (USER32.@) * IsValidDpiAwarenessContext (USER32.@)
*/ */

View file

@ -50,6 +50,7 @@ static BOOL (WINAPI *pLogicalToPhysicalPointForPerMonitorDPI)(HWND,POINT*);
static BOOL (WINAPI *pPhysicalToLogicalPointForPerMonitorDPI)(HWND,POINT*); static BOOL (WINAPI *pPhysicalToLogicalPointForPerMonitorDPI)(HWND,POINT*);
static LONG (WINAPI *pGetAutoRotationState)(PAR_STATE); static LONG (WINAPI *pGetAutoRotationState)(PAR_STATE);
static BOOL (WINAPI *pAreDpiAwarenessContextsEqual)(DPI_AWARENESS_CONTEXT,DPI_AWARENESS_CONTEXT); static BOOL (WINAPI *pAreDpiAwarenessContextsEqual)(DPI_AWARENESS_CONTEXT,DPI_AWARENESS_CONTEXT);
static LONG (WINAPI *pGetDpiFromDpiAwarenessContext)(DPI_AWARENESS_CONTEXT);
static BOOL strict; static BOOL strict;
static int dpi, real_dpi; static int dpi, real_dpi;
@ -4156,6 +4157,50 @@ static void test_IsValidDpiAwarenessContext(void)
} }
} }
static void test_GetDpiFromDpiAwarenessContext(void)
{
UINT ret;
if (!pGetDpiFromDpiAwarenessContext)
{
win_skip( "GetDpiFromDpiAwarenessContext missing, skipping tests\n" );
return;
}
ret = pGetDpiFromDpiAwarenessContext( 0 );
ok( !ret, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
ret = pGetDpiFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x11 );
ok( ret == 0, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
ret = pGetDpiFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x12 );
ok( ret == 0, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
ret = pGetDpiFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x22 );
ok( ret == 0, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
ret = pGetDpiFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x6010 );
ok( ret == 96, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
ret = pGetDpiFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x6011 );
ok( ret == 96, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
ret = pGetDpiFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x6111 );
ok( ret == 97, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
ret = pGetDpiFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x7811 );
ok( ret == 120, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
ret = pGetDpiFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x10011 );
ok( ret == 256, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
ret = pGetDpiFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x40006010 );
ok( ret == 96, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
ret = pGetDpiFromDpiAwarenessContext( DPI_AWARENESS_CONTEXT_UNAWARE );
ok( ret == 96, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
ret = pGetDpiFromDpiAwarenessContext( DPI_AWARENESS_CONTEXT_SYSTEM_AWARE );
ok( ret == real_dpi, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
ret = pGetDpiFromDpiAwarenessContext( DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE );
ok( ret == 0, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
ret = pGetDpiFromDpiAwarenessContext( DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 );
ok( ret == 0, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
ret = pGetDpiFromDpiAwarenessContext( DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED );
ok( ret == 96, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
}
static void test_dpi_context(void) static void test_dpi_context(void)
{ {
DPI_AWARENESS awareness; DPI_AWARENESS awareness;
@ -4591,6 +4636,7 @@ START_TEST(sysparams)
pPhysicalToLogicalPointForPerMonitorDPI = (void*)GetProcAddress(hdll, "PhysicalToLogicalPointForPerMonitorDPI"); pPhysicalToLogicalPointForPerMonitorDPI = (void*)GetProcAddress(hdll, "PhysicalToLogicalPointForPerMonitorDPI");
pGetAutoRotationState = (void*)GetProcAddress(hdll, "GetAutoRotationState"); pGetAutoRotationState = (void*)GetProcAddress(hdll, "GetAutoRotationState");
pAreDpiAwarenessContextsEqual = (void*)GetProcAddress(hdll, "AreDpiAwarenessContextsEqual"); pAreDpiAwarenessContextsEqual = (void*)GetProcAddress(hdll, "AreDpiAwarenessContextsEqual");
pGetDpiFromDpiAwarenessContext = (void*)GetProcAddress(hdll, "GetDpiFromDpiAwarenessContext");
hInstance = GetModuleHandleA( NULL ); hInstance = GetModuleHandleA( NULL );
hdc = GetDC(0); hdc = GetDC(0);
@ -4623,6 +4669,7 @@ START_TEST(sysparams)
test_GetAutoRotationState( ); test_GetAutoRotationState( );
test_SetThreadDpiAwarenessContext(); test_SetThreadDpiAwarenessContext();
test_IsValidDpiAwarenessContext(); test_IsValidDpiAwarenessContext();
test_GetDpiFromDpiAwarenessContext();
change_counter = 0; change_counter = 0;
change_last_param = 0; change_last_param = 0;

View file

@ -302,6 +302,7 @@
@ stdcall GetDpiForMonitorInternal(long long ptr ptr) NtUserGetDpiForMonitor @ stdcall GetDpiForMonitorInternal(long long ptr ptr) NtUserGetDpiForMonitor
@ stdcall GetDpiForSystem() @ stdcall GetDpiForSystem()
@ stdcall GetDpiForWindow(long) @ stdcall GetDpiForWindow(long)
@ stdcall GetDpiFromDpiAwarenessContext(long)
@ stdcall GetFocus() @ stdcall GetFocus()
@ stdcall GetForegroundWindow() NtUserGetForegroundWindow @ stdcall GetForegroundWindow() NtUserGetForegroundWindow
@ stdcall GetGestureConfig(long long long ptr ptr long) @ stdcall GetGestureConfig(long long long ptr ptr long)

View file

@ -4116,6 +4116,7 @@ WINUSERAPI DWORD WINAPI GetAppCompatFlags(HTASK);
WINUSERAPI SHORT WINAPI GetAsyncKeyState(INT); WINUSERAPI SHORT WINAPI GetAsyncKeyState(INT);
WINUSERAPI BOOL WINAPI GetAutoRotationState(AR_STATE*); WINUSERAPI BOOL WINAPI GetAutoRotationState(AR_STATE*);
WINUSERAPI DPI_AWARENESS WINAPI GetAwarenessFromDpiAwarenessContext(DPI_AWARENESS_CONTEXT); WINUSERAPI DPI_AWARENESS WINAPI GetAwarenessFromDpiAwarenessContext(DPI_AWARENESS_CONTEXT);
WINUSERAPI UINT WINAPI GetDpiFromDpiAwarenessContext(DPI_AWARENESS_CONTEXT);
WINUSERAPI HWND WINAPI GetCapture(void); WINUSERAPI HWND WINAPI GetCapture(void);
WINUSERAPI UINT WINAPI GetCaretBlinkTime(void); WINUSERAPI UINT WINAPI GetCaretBlinkTime(void);
WINUSERAPI BOOL WINAPI GetCaretPos(LPPOINT); WINUSERAPI BOOL WINAPI GetCaretPos(LPPOINT);