ReactOS 0.4.16-dev-2498-g8632030
sysparams.c File Reference
#include <assert.h>
#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
#include "wine/test.h"
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "winreg.h"
#include "winuser.h"
#include "winnls.h"
Include dependency graph for sysparams.c:

Go to the source code of this file.

Classes

struct  LOGFONT16
 

Macros

#define eq(received, expected, label, type)    ok((received) == (expected), "%s: got " type " instead of " type "\n", (label),(received),(expected))
 
#define SPI_SETBEEP_REGKEY   "Control Panel\\Sound"
 
#define SPI_SETBEEP_VALNAME   "Beep"
 
#define SPI_SETMOUSE_REGKEY   "Control Panel\\Mouse"
 
#define SPI_SETMOUSE_VALNAME1   "MouseThreshold1"
 
#define SPI_SETMOUSE_VALNAME2   "MouseThreshold2"
 
#define SPI_SETMOUSE_VALNAME3   "MouseSpeed"
 
#define SPI_SETBORDER_REGKEY   "Control Panel\\Desktop\\WindowMetrics"
 
#define SPI_SETBORDER_REGKEY2   "Control Panel\\Desktop"
 
#define SPI_SETBORDER_VALNAME   "BorderWidth"
 
#define SPI_METRIC_REGKEY   "Control Panel\\Desktop\\WindowMetrics"
 
#define SPI_SCROLLWIDTH_VALNAME   "ScrollWidth"
 
#define SPI_SCROLLHEIGHT_VALNAME   "ScrollHeight"
 
#define SPI_CAPTIONWIDTH_VALNAME   "CaptionWidth"
 
#define SPI_CAPTIONHEIGHT_VALNAME   "CaptionHeight"
 
#define SPI_CAPTIONFONT_VALNAME   "CaptionFont"
 
#define SPI_SMCAPTIONWIDTH_VALNAME   "SmCaptionWidth"
 
#define SPI_SMCAPTIONHEIGHT_VALNAME   "SmCaptionHeight"
 
#define SPI_SMCAPTIONFONT_VALNAME   "SmCaptionFont"
 
#define SPI_MENUWIDTH_VALNAME   "MenuWidth"
 
#define SPI_MENUHEIGHT_VALNAME   "MenuHeight"
 
#define SPI_MENUFONT_VALNAME   "MenuFont"
 
#define SPI_STATUSFONT_VALNAME   "StatusFont"
 
#define SPI_MESSAGEFONT_VALNAME   "MessageFont"
 
#define SPI_SETKEYBOARDSPEED_REGKEY   "Control Panel\\Keyboard"
 
#define SPI_SETKEYBOARDSPEED_VALNAME   "KeyboardSpeed"
 
#define SPI_ICONHORIZONTALSPACING_REGKEY   "Control Panel\\Desktop\\WindowMetrics"
 
#define SPI_ICONHORIZONTALSPACING_REGKEY2   "Control Panel\\Desktop"
 
#define SPI_ICONHORIZONTALSPACING_VALNAME   "IconSpacing"
 
#define SPI_ICONVERTICALSPACING_REGKEY   "Control Panel\\Desktop\\WindowMetrics"
 
#define SPI_ICONVERTICALSPACING_REGKEY2   "Control Panel\\Desktop"
 
#define SPI_ICONVERTICALSPACING_VALNAME   "IconVerticalSpacing"
 
#define SPI_MINIMIZEDMETRICS_REGKEY   "Control Panel\\Desktop\\WindowMetrics"
 
#define SPI_MINWIDTH_VALNAME   "MinWidth"
 
#define SPI_MINHORZGAP_VALNAME   "MinHorzGap"
 
#define SPI_MINVERTGAP_VALNAME   "MinVertGap"
 
#define SPI_MINARRANGE_VALNAME   "MinArrange"
 
#define SPI_SETSCREENSAVETIMEOUT_REGKEY   "Control Panel\\Desktop"
 
#define SPI_SETSCREENSAVETIMEOUT_VALNAME   "ScreenSaveTimeOut"
 
#define SPI_SETSCREENSAVEACTIVE_REGKEY   "Control Panel\\Desktop"
 
#define SPI_SETSCREENSAVEACTIVE_VALNAME   "ScreenSaveActive"
 
#define SPI_SETGRIDGRANULARITY_REGKEY   "Control Panel\\Desktop"
 
#define SPI_SETGRIDGRANULARITY_VALNAME   "GridGranularity"
 
#define SPI_SETKEYBOARDDELAY_REGKEY   "Control Panel\\Keyboard"
 
#define SPI_SETKEYBOARDDELAY_VALNAME   "KeyboardDelay"
 
#define SPI_SETICONTITLEWRAP_REGKEY1   "Control Panel\\Desktop\\WindowMetrics"
 
#define SPI_SETICONTITLEWRAP_REGKEY2   "Control Panel\\Desktop"
 
#define SPI_SETICONTITLEWRAP_VALNAME   "IconTitleWrap"
 
#define SPI_SETMENUDROPALIGNMENT_REGKEY1   "Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows"
 
#define SPI_SETMENUDROPALIGNMENT_REGKEY2   "Control Panel\\Desktop"
 
#define SPI_SETMENUDROPALIGNMENT_VALNAME   "MenuDropAlignment"
 
#define SPI_SETDOUBLECLKWIDTH_REGKEY1   "Control Panel\\Mouse"
 
#define SPI_SETDOUBLECLKWIDTH_REGKEY2   "Control Panel\\Desktop"
 
#define SPI_SETDOUBLECLKWIDTH_VALNAME   "DoubleClickWidth"
 
#define SPI_SETDOUBLECLKHEIGHT_REGKEY1   "Control Panel\\Mouse"
 
#define SPI_SETDOUBLECLKHEIGHT_REGKEY2   "Control Panel\\Desktop"
 
#define SPI_SETDOUBLECLKHEIGHT_VALNAME   "DoubleClickHeight"
 
#define SPI_SETDOUBLECLICKTIME_REGKEY   "Control Panel\\Mouse"
 
#define SPI_SETDOUBLECLICKTIME_VALNAME   "DoubleClickSpeed"
 
#define SPI_SETMOUSEBUTTONSWAP_REGKEY   "Control Panel\\Mouse"
 
#define SPI_SETMOUSEBUTTONSWAP_VALNAME   "SwapMouseButtons"
 
#define SPI_SETWORKAREA_REGKEY   "Control Panel\\Desktop"
 
#define SPI_SETWORKAREA_VALNAME   "WINE_WorkArea"
 
#define SPI_SETSHOWSOUNDS_REGKEY   "Control Panel\\Accessibility\\ShowSounds"
 
#define SPI_SETSHOWSOUNDS_VALNAME   "On"
 
#define SPI_SETKEYBOARDPREF_REGKEY   "Control Panel\\Accessibility\\Keyboard Preference"
 
#define SPI_SETKEYBOARDPREF_VALNAME   "On"
 
#define SPI_SETKEYBOARDPREF_REGKEY_LEGACY   "Control Panel\\Accessibility"
 
#define SPI_SETKEYBOARDPREF_VALNAME_LEGACY   "Keyboard Preference"
 
#define SPI_SETSCREENREADER_REGKEY   "Control Panel\\Accessibility\\Blind Access"
 
#define SPI_SETSCREENREADER_VALNAME   "On"
 
#define SPI_SETSCREENREADER_REGKEY_LEGACY   "Control Panel\\Accessibility"
 
#define SPI_SETSCREENREADER_VALNAME_LEGACY   "Blind Access"
 
#define SPI_SETFONTSMOOTHING_REGKEY   "Control Panel\\Desktop"
 
#define SPI_SETFONTSMOOTHING_VALNAME   "FontSmoothing"
 
#define SPI_SETFONTSMOOTHINGTYPE_VALNAME   "FontSmoothingType"
 
#define SPI_SETFONTSMOOTHINGCONTRAST_VALNAME   "FontSmoothingGamma"
 
#define SPI_SETFONTSMOOTHINGORIENTATION_VALNAME   "FontSmoothingOrientation"
 
#define SPI_SETLOWPOWERACTIVE_REGKEY   "Control Panel\\Desktop"
 
#define SPI_SETLOWPOWERACTIVE_VALNAME   "LowPowerActive"
 
#define SPI_SETPOWEROFFACTIVE_REGKEY   "Control Panel\\Desktop"
 
#define SPI_SETPOWEROFFACTIVE_VALNAME   "PowerOffActive"
 
#define SPI_SETDRAGFULLWINDOWS_REGKEY   "Control Panel\\Desktop"
 
#define SPI_SETDRAGFULLWINDOWS_VALNAME   "DragFullWindows"
 
#define SPI_SETSNAPTODEFBUTTON_REGKEY   "Control Panel\\Mouse"
 
#define SPI_SETSNAPTODEFBUTTON_VALNAME   "SnapToDefaultButton"
 
#define SPI_SETMOUSEHOVERWIDTH_REGKEY   "Control Panel\\Mouse"
 
#define SPI_SETMOUSEHOVERWIDTH_VALNAME   "MouseHoverWidth"
 
#define SPI_SETMOUSEHOVERHEIGHT_REGKEY   "Control Panel\\Mouse"
 
#define SPI_SETMOUSEHOVERHEIGHT_VALNAME   "MouseHoverHeight"
 
#define SPI_SETMOUSEHOVERTIME_REGKEY   "Control Panel\\Mouse"
 
#define SPI_SETMOUSEHOVERTIME_VALNAME   "MouseHoverTime"
 
#define SPI_SETMOUSESCROLLCHARS_REGKEY   "Control Panel\\Desktop"
 
#define SPI_SETMOUSESCROLLCHARS_VALNAME   "WheelScrollChars"
 
#define SPI_SETMOUSESCROLLLINES_REGKEY   "Control Panel\\Desktop"
 
#define SPI_SETMOUSESCROLLLINES_VALNAME   "WheelScrollLines"
 
#define SPI_SETMENUSHOWDELAY_REGKEY   "Control Panel\\Desktop"
 
#define SPI_SETMENUSHOWDELAY_VALNAME   "MenuShowDelay"
 
#define SPI_SETDESKWALLPAPER_REGKEY   "Control Panel\\Desktop"
 
#define SPI_SETDESKWALLPAPER_VALNAME   "Wallpaper"
 
#define WINE_CURRENT_USER_REGKEY   "Wine"
 
#define run_in_process(a, b)   run_in_process_( __FILE__, __LINE__, a, b )
 
#define test_reg_key(subKey, valName, testValue)    _test_reg_key( subKey, NULL, valName, NULL, testValue, REG_SZ, FALSE )
 
#define test_reg_key_optional(subKey, valName, testValue)    _test_reg_key( subKey, NULL, valName, NULL, testValue, REG_SZ, TRUE )
 
#define test_reg_key_ex(subKey1, subKey2, valName, testValue)    _test_reg_key( subKey1, subKey2, valName, NULL, testValue, REG_SZ, FALSE )
 
#define test_reg_key_ex2(subKey1, subKey2, valName1, valName2, testValue)    _test_reg_key( subKey1, subKey2, valName1, valName2, testValue, REG_SZ, FALSE )
 
#define test_reg_key_ex2_optional(subKey1, subKey2, valName1, valName2, testValue)    _test_reg_key( subKey1, subKey2, valName1, valName2, testValue, REG_SZ, TRUE )
 
#define test_reg_key_dword(subKey, valName, testValue)    _test_reg_key( subKey, NULL, valName, NULL, testValue, REG_DWORD, FALSE )
 
#define test_reg_metric(KEY, VAL, val)
 
#define test_reg_metric2(KEY1, KEY2, VAL, val)
 
#define test_reg_font(KEY, VAL, LF)
 
#define TEST_NONCLIENTMETRICS_REG(ncm)
 
#define ok_gsm(i, e)
 
#define ok_gsm_2(i, e1, e2)
 
#define ok_gsm_3(i, e1, e2, e3)
 

Typedefs

typedef struct LOGFONT16LPLOGFONT16
 

Functions

static BOOL (WINAPI *pIsProcessDPIAware)(void)
 
static UINT (WINAPI *pGetDpiForSystem)(void)
 
static UINT UINT *static DPI_AWARENESS_CONTEXT (WINAPI *pGetThreadDpiAwarenessContext)(void)
 
static DPI_AWARENESS (WINAPI *pGetAwarenessFromDpiAwarenessContext)(DPI_AWARENESS_CONTEXT)
 
static INT (WINAPI *pGetSystemMetricsForDpi)(INT
 
static POINT *static POINT *static LONG (WINAPI *pGetAutoRotationState)(PAR_STATE)
 
static DWORD WINAPI SysParamsThreadFunc (LPVOID lpParam)
 
static LRESULT CALLBACK SysParamsTestWndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
 
static void run_in_process_ (const char *file, int line, char **argv, const char *args)
 
static BOOL get_reg_dword (HKEY base, const char *key_name, const char *value_name, DWORD *value)
 
static DWORD get_real_dpi (void)
 
static void test_change_message (int action, int optional)
 
static void flush_change_messages (void)
 
static BOOL test_error_msg (int rc, const char *name)
 
static void _test_reg_key (LPCSTR subKey1, LPCSTR subKey2, LPCSTR valName1, LPCSTR valName2, const void *exp_value, DWORD exp_type, BOOL optional)
 
static UINT metricfromreg (const char *keyname, const char *valname, int dpi)
 
static int lffromreg (const char *keyname, const char *valname, LOGFONTA *plf)
 
static void test_SPI_SETBEEP (void)
 
static BOOL run_spi_setmouse_test (int curr_val[], POINT *req_change, POINT *proj_change, int nchange)
 
static void test_SPI_SETMOUSE (void)
 
static BOOL test_setborder (UINT curr_val, int usesetborder, int dpi)
 
static void test_SPI_SETBORDER (void)
 
static void test_SPI_SETKEYBOARDSPEED (void)
 
static BOOL dotest_spi_iconhorizontalspacing (INT curr_val)
 
static void test_SPI_ICONHORIZONTALSPACING (void)
 
static void test_SPI_SETSCREENSAVETIMEOUT (void)
 
static void test_SPI_SETSCREENSAVEACTIVE (void)
 
static void test_SPI_SETGRIDGRANULARITY (void)
 
static void test_SPI_SETKEYBOARDDELAY (void)
 
static BOOL dotest_spi_iconverticalspacing (INT curr_val)
 
static void test_SPI_ICONVERTICALSPACING (void)
 
static void test_SPI_SETICONTITLEWRAP (void)
 
static void test_SPI_SETMENUDROPALIGNMENT (void)
 
static void test_SPI_SETDOUBLECLKWIDTH (void)
 
static void test_SPI_SETDOUBLECLKHEIGHT (void)
 
static void test_SPI_SETDOUBLECLICKTIME (void)
 
static void test_SPI_SETMOUSEBUTTONSWAP (void)
 
static void test_SPI_SETFASTTASKSWITCH (void)
 
static void test_SPI_SETDRAGFULLWINDOWS (void)
 
static int get_tmheight (LOGFONTA *plf, int flag)
 
static int get_tmheightW (LOGFONTW *plf, int flag)
 
static void test_GetSystemMetrics (void)
 
static void test_SPI_SETNONCLIENTMETRICS (void)
 
static void test_SPI_SETMINIMIZEDMETRICS (void)
 
static void test_SPI_SETICONMETRICS (void)
 
static void test_SPI_SETWORKAREA (void)
 
static void test_SPI_SETSHOWSOUNDS (void)
 
static void test_SPI_SETKEYBOARDPREF (void)
 
static void test_SPI_SETSCREENREADER (void)
 
static void test_SPI_SETFONTSMOOTHING (void)
 
static void test_SPI_SETLOWPOWERACTIVE (void)
 
static void test_SPI_SETPOWEROFFACTIVE (void)
 
static void test_SPI_SETSNAPTODEFBUTTON (void)
 
static void test_SPI_SETMOUSEHOVERWIDTH (void)
 
static void test_SPI_SETMOUSEHOVERHEIGHT (void)
 
static void test_SPI_SETMOUSEHOVERTIME (void)
 
static void test_SPI_SETWHEELSCROLLLINES (void)
 
static void test_SPI_SETMENUSHOWDELAY (void)
 
static void test_SPI_SETWHEELSCROLLCHARS (void)
 
static void test_SPI_SETWALLPAPER (void)
 
static void test_WM_DISPLAYCHANGE (void)
 
static LONG _GdiGetCharDimensions (HDC hdc, LPTEXTMETRICA lptm, LONG *height)
 
static void get_text_metr_size (HDC hdc, LOGFONTA *plf, TEXTMETRICA *ptm, UINT *psz)
 
static INT CALLBACK enum_all_fonts_proc (const LOGFONTA *elf, const TEXTMETRICA *ntm, DWORD type, LPARAM lparam)
 
static BOOL is_font_enumerated (const char *name)
 
static int get_cursor_size (int size)
 
static void compare_font (const LOGFONTW *lf1, const LOGFONTW *lf2, int dpi, int custom_dpi, int line)
 
static void test_metrics_for_dpi (int custom_dpi)
 
static BOOL get_primary_adapter_name (CHAR *name)
 
static BOOL CALLBACK test_enum_display_settings (HMONITOR hmonitor, HDC hdc, LPRECT rect, LPARAM lparam)
 
static void test_EnumDisplaySettings (void)
 
static void test_GetSysColorBrush (void)
 
static void test_dpi_stock_objects (HDC hdc)
 
static void scale_point_dpi (POINT *pt, UINT src_dpi, UINT target_dpi)
 
static void scale_rect_dpi (RECT *rect, UINT src_dpi, UINT target_dpi)
 
static void scale_point_dpi_aware (POINT *pt, DPI_AWARENESS from, DPI_AWARENESS to)
 
static void scale_rect_dpi_aware (RECT *rect, DPI_AWARENESS from, DPI_AWARENESS to)
 
static void test_dpi_mapping (void)
 
static void test_dpi_aware (void)
 
static void test_SetProcessDpiAwarenessContext (ULONG arg)
 
static void test_SetThreadDpiAwarenessContext (void)
 
static void test_IsValidDpiAwarenessContext (void)
 
static void test_GetDpiFromDpiAwarenessContext (void)
 
static void test_AreDpiAwarenessContextsEqual (void)
 
static void test_GetAwarenessFromDpiAwarenessContext (void)
 
static void test_dpi_context (void)
 
static LRESULT CALLBACK dpi_winproc (HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
 
static void test_dpi_window (void)
 
static void test_GetAutoRotationState (void)
 
static void test_LOGFONT_charset (void)
 
 START_TEST (sysparams)
 

Variables

static UINT
 
static DWORD
 
static BOOL
 
static DPI_AWARENESS_CONTEXT
 
static BOOL strict
 
static int dpi
 
static int real_dpi
 
static HWND ghTestWnd
 
static int change_counter
 
static int change_last_param
 
static int last_bpp
 
static BOOL displaychange_ok = FALSE
 
static BOOL displaychange_test_active = FALSE
 
static HANDLE displaychange_sem = 0
 
static const charsetmouse_valuenames [3]
 
static UINT smcxsmsize = 999999999
 
static int gsm_error_ctr
 

Macro Definition Documentation

◆ eq

#define eq (   received,
  expected,
  label,
  type 
)     ok((received) == (expected), "%s: got " type " instead of " type "\n", (label),(received),(expected))

Definition at line 58 of file sysparams.c.

◆ ok_gsm

#define ok_gsm (   i,
  e 
)
Value:
{\
int exp = (e);\
int act = GetSystemMetrics( (i));\
if( exp != act) gsm_error_ctr++;\
ok( !( exp != act),"GetSystemMetrics(%s): expected %d actual %d\n", #i, exp,act);\
}
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define e
Definition: ke_i.h:82
DWORD exp
Definition: msg.c:18625
static int gsm_error_ctr
Definition: sysparams.c:2690
int WINAPI GetSystemMetrics(_In_ int)

Definition at line 2692 of file sysparams.c.

◆ ok_gsm_2

#define ok_gsm_2 (   i,
  e1,
  e2 
)
Value:
{\
int exp1 = (e1);\
int exp2 = (e2);\
int act = GetSystemMetrics( (i));\
if( exp1 != act && exp2 != act) gsm_error_ctr++;\
ok( !( exp1 != act && exp2 != act), "GetSystemMetrics(%s): expected %d or %d actual %d\n", #i, exp1, exp2, act);\
}
_ACRTIMP double __cdecl exp2(double)
Definition: mathf.c:68

Definition at line 2699 of file sysparams.c.

◆ ok_gsm_3

#define ok_gsm_3 (   i,
  e1,
  e2,
  e3 
)
Value:
{\
int exp1 = (e1);\
int exp2 = (e2);\
int exp3 = (e3);\
int act = GetSystemMetrics( (i));\
if( exp1 != act && exp2 != act && exp3 != act) gsm_error_ctr++;\
ok( !( exp1 != act && exp2 != act && exp3 != act),"GetSystemMetrics(%s): expected %d or %d or %d actual %d\n", #i, exp1, exp2, exp3, act);\
}

Definition at line 2707 of file sysparams.c.

◆ run_in_process

#define run_in_process (   a,
  b 
)    run_in_process_( __FILE__, __LINE__, a, b )

Definition at line 177 of file sysparams.c.

◆ SPI_CAPTIONFONT_VALNAME

#define SPI_CAPTIONFONT_VALNAME   "CaptionFont"

Definition at line 76 of file sysparams.c.

◆ SPI_CAPTIONHEIGHT_VALNAME

#define SPI_CAPTIONHEIGHT_VALNAME   "CaptionHeight"

Definition at line 75 of file sysparams.c.

◆ SPI_CAPTIONWIDTH_VALNAME

#define SPI_CAPTIONWIDTH_VALNAME   "CaptionWidth"

Definition at line 74 of file sysparams.c.

◆ SPI_ICONHORIZONTALSPACING_REGKEY

#define SPI_ICONHORIZONTALSPACING_REGKEY   "Control Panel\\Desktop\\WindowMetrics"

Definition at line 88 of file sysparams.c.

◆ SPI_ICONHORIZONTALSPACING_REGKEY2

#define SPI_ICONHORIZONTALSPACING_REGKEY2   "Control Panel\\Desktop"

Definition at line 89 of file sysparams.c.

◆ SPI_ICONHORIZONTALSPACING_VALNAME

#define SPI_ICONHORIZONTALSPACING_VALNAME   "IconSpacing"

Definition at line 90 of file sysparams.c.

◆ SPI_ICONVERTICALSPACING_REGKEY

#define SPI_ICONVERTICALSPACING_REGKEY   "Control Panel\\Desktop\\WindowMetrics"

Definition at line 91 of file sysparams.c.

◆ SPI_ICONVERTICALSPACING_REGKEY2

#define SPI_ICONVERTICALSPACING_REGKEY2   "Control Panel\\Desktop"

Definition at line 92 of file sysparams.c.

◆ SPI_ICONVERTICALSPACING_VALNAME

#define SPI_ICONVERTICALSPACING_VALNAME   "IconVerticalSpacing"

Definition at line 93 of file sysparams.c.

◆ SPI_MENUFONT_VALNAME

#define SPI_MENUFONT_VALNAME   "MenuFont"

Definition at line 82 of file sysparams.c.

◆ SPI_MENUHEIGHT_VALNAME

#define SPI_MENUHEIGHT_VALNAME   "MenuHeight"

Definition at line 81 of file sysparams.c.

◆ SPI_MENUWIDTH_VALNAME

#define SPI_MENUWIDTH_VALNAME   "MenuWidth"

Definition at line 80 of file sysparams.c.

◆ SPI_MESSAGEFONT_VALNAME

#define SPI_MESSAGEFONT_VALNAME   "MessageFont"

Definition at line 84 of file sysparams.c.

◆ SPI_METRIC_REGKEY

#define SPI_METRIC_REGKEY   "Control Panel\\Desktop\\WindowMetrics"

Definition at line 71 of file sysparams.c.

◆ SPI_MINARRANGE_VALNAME

#define SPI_MINARRANGE_VALNAME   "MinArrange"

Definition at line 98 of file sysparams.c.

◆ SPI_MINHORZGAP_VALNAME

#define SPI_MINHORZGAP_VALNAME   "MinHorzGap"

Definition at line 96 of file sysparams.c.

◆ SPI_MINIMIZEDMETRICS_REGKEY

#define SPI_MINIMIZEDMETRICS_REGKEY   "Control Panel\\Desktop\\WindowMetrics"

Definition at line 94 of file sysparams.c.

◆ SPI_MINVERTGAP_VALNAME

#define SPI_MINVERTGAP_VALNAME   "MinVertGap"

Definition at line 97 of file sysparams.c.

◆ SPI_MINWIDTH_VALNAME

#define SPI_MINWIDTH_VALNAME   "MinWidth"

Definition at line 95 of file sysparams.c.

◆ SPI_SCROLLHEIGHT_VALNAME

#define SPI_SCROLLHEIGHT_VALNAME   "ScrollHeight"

Definition at line 73 of file sysparams.c.

◆ SPI_SCROLLWIDTH_VALNAME

#define SPI_SCROLLWIDTH_VALNAME   "ScrollWidth"

Definition at line 72 of file sysparams.c.

◆ SPI_SETBEEP_REGKEY

#define SPI_SETBEEP_REGKEY   "Control Panel\\Sound"

Definition at line 62 of file sysparams.c.

◆ SPI_SETBEEP_VALNAME

#define SPI_SETBEEP_VALNAME   "Beep"

Definition at line 63 of file sysparams.c.

◆ SPI_SETBORDER_REGKEY

#define SPI_SETBORDER_REGKEY   "Control Panel\\Desktop\\WindowMetrics"

Definition at line 68 of file sysparams.c.

◆ SPI_SETBORDER_REGKEY2

#define SPI_SETBORDER_REGKEY2   "Control Panel\\Desktop"

Definition at line 69 of file sysparams.c.

◆ SPI_SETBORDER_VALNAME

#define SPI_SETBORDER_VALNAME   "BorderWidth"

Definition at line 70 of file sysparams.c.

◆ SPI_SETDESKWALLPAPER_REGKEY

#define SPI_SETDESKWALLPAPER_REGKEY   "Control Panel\\Desktop"

Definition at line 160 of file sysparams.c.

◆ SPI_SETDESKWALLPAPER_VALNAME

#define SPI_SETDESKWALLPAPER_VALNAME   "Wallpaper"

Definition at line 161 of file sysparams.c.

◆ SPI_SETDOUBLECLICKTIME_REGKEY

#define SPI_SETDOUBLECLICKTIME_REGKEY   "Control Panel\\Mouse"

Definition at line 119 of file sysparams.c.

◆ SPI_SETDOUBLECLICKTIME_VALNAME

#define SPI_SETDOUBLECLICKTIME_VALNAME   "DoubleClickSpeed"

Definition at line 120 of file sysparams.c.

◆ SPI_SETDOUBLECLKHEIGHT_REGKEY1

#define SPI_SETDOUBLECLKHEIGHT_REGKEY1   "Control Panel\\Mouse"

Definition at line 116 of file sysparams.c.

◆ SPI_SETDOUBLECLKHEIGHT_REGKEY2

#define SPI_SETDOUBLECLKHEIGHT_REGKEY2   "Control Panel\\Desktop"

Definition at line 117 of file sysparams.c.

◆ SPI_SETDOUBLECLKHEIGHT_VALNAME

#define SPI_SETDOUBLECLKHEIGHT_VALNAME   "DoubleClickHeight"

Definition at line 118 of file sysparams.c.

◆ SPI_SETDOUBLECLKWIDTH_REGKEY1

#define SPI_SETDOUBLECLKWIDTH_REGKEY1   "Control Panel\\Mouse"

Definition at line 113 of file sysparams.c.

◆ SPI_SETDOUBLECLKWIDTH_REGKEY2

#define SPI_SETDOUBLECLKWIDTH_REGKEY2   "Control Panel\\Desktop"

Definition at line 114 of file sysparams.c.

◆ SPI_SETDOUBLECLKWIDTH_VALNAME

#define SPI_SETDOUBLECLKWIDTH_VALNAME   "DoubleClickWidth"

Definition at line 115 of file sysparams.c.

◆ SPI_SETDRAGFULLWINDOWS_REGKEY

#define SPI_SETDRAGFULLWINDOWS_REGKEY   "Control Panel\\Desktop"

Definition at line 144 of file sysparams.c.

◆ SPI_SETDRAGFULLWINDOWS_VALNAME

#define SPI_SETDRAGFULLWINDOWS_VALNAME   "DragFullWindows"

Definition at line 145 of file sysparams.c.

◆ SPI_SETFONTSMOOTHING_REGKEY

#define SPI_SETFONTSMOOTHING_REGKEY   "Control Panel\\Desktop"

Definition at line 135 of file sysparams.c.

◆ SPI_SETFONTSMOOTHING_VALNAME

#define SPI_SETFONTSMOOTHING_VALNAME   "FontSmoothing"

Definition at line 136 of file sysparams.c.

◆ SPI_SETFONTSMOOTHINGCONTRAST_VALNAME

#define SPI_SETFONTSMOOTHINGCONTRAST_VALNAME   "FontSmoothingGamma"

Definition at line 138 of file sysparams.c.

◆ SPI_SETFONTSMOOTHINGORIENTATION_VALNAME

#define SPI_SETFONTSMOOTHINGORIENTATION_VALNAME   "FontSmoothingOrientation"

Definition at line 139 of file sysparams.c.

◆ SPI_SETFONTSMOOTHINGTYPE_VALNAME

#define SPI_SETFONTSMOOTHINGTYPE_VALNAME   "FontSmoothingType"

Definition at line 137 of file sysparams.c.

◆ SPI_SETGRIDGRANULARITY_REGKEY

#define SPI_SETGRIDGRANULARITY_REGKEY   "Control Panel\\Desktop"

Definition at line 103 of file sysparams.c.

◆ SPI_SETGRIDGRANULARITY_VALNAME

#define SPI_SETGRIDGRANULARITY_VALNAME   "GridGranularity"

Definition at line 104 of file sysparams.c.

◆ SPI_SETICONTITLEWRAP_REGKEY1

#define SPI_SETICONTITLEWRAP_REGKEY1   "Control Panel\\Desktop\\WindowMetrics"

Definition at line 107 of file sysparams.c.

◆ SPI_SETICONTITLEWRAP_REGKEY2

#define SPI_SETICONTITLEWRAP_REGKEY2   "Control Panel\\Desktop"

Definition at line 108 of file sysparams.c.

◆ SPI_SETICONTITLEWRAP_VALNAME

#define SPI_SETICONTITLEWRAP_VALNAME   "IconTitleWrap"

Definition at line 109 of file sysparams.c.

◆ SPI_SETKEYBOARDDELAY_REGKEY

#define SPI_SETKEYBOARDDELAY_REGKEY   "Control Panel\\Keyboard"

Definition at line 105 of file sysparams.c.

◆ SPI_SETKEYBOARDDELAY_VALNAME

#define SPI_SETKEYBOARDDELAY_VALNAME   "KeyboardDelay"

Definition at line 106 of file sysparams.c.

◆ SPI_SETKEYBOARDPREF_REGKEY

#define SPI_SETKEYBOARDPREF_REGKEY   "Control Panel\\Accessibility\\Keyboard Preference"

Definition at line 127 of file sysparams.c.

◆ SPI_SETKEYBOARDPREF_REGKEY_LEGACY

#define SPI_SETKEYBOARDPREF_REGKEY_LEGACY   "Control Panel\\Accessibility"

Definition at line 129 of file sysparams.c.

◆ SPI_SETKEYBOARDPREF_VALNAME

#define SPI_SETKEYBOARDPREF_VALNAME   "On"

Definition at line 128 of file sysparams.c.

◆ SPI_SETKEYBOARDPREF_VALNAME_LEGACY

#define SPI_SETKEYBOARDPREF_VALNAME_LEGACY   "Keyboard Preference"

Definition at line 130 of file sysparams.c.

◆ SPI_SETKEYBOARDSPEED_REGKEY

#define SPI_SETKEYBOARDSPEED_REGKEY   "Control Panel\\Keyboard"

Definition at line 86 of file sysparams.c.

◆ SPI_SETKEYBOARDSPEED_VALNAME

#define SPI_SETKEYBOARDSPEED_VALNAME   "KeyboardSpeed"

Definition at line 87 of file sysparams.c.

◆ SPI_SETLOWPOWERACTIVE_REGKEY

#define SPI_SETLOWPOWERACTIVE_REGKEY   "Control Panel\\Desktop"

Definition at line 140 of file sysparams.c.

◆ SPI_SETLOWPOWERACTIVE_VALNAME

#define SPI_SETLOWPOWERACTIVE_VALNAME   "LowPowerActive"

Definition at line 141 of file sysparams.c.

◆ SPI_SETMENUDROPALIGNMENT_REGKEY1

#define SPI_SETMENUDROPALIGNMENT_REGKEY1   "Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows"

Definition at line 110 of file sysparams.c.

◆ SPI_SETMENUDROPALIGNMENT_REGKEY2

#define SPI_SETMENUDROPALIGNMENT_REGKEY2   "Control Panel\\Desktop"

Definition at line 111 of file sysparams.c.

◆ SPI_SETMENUDROPALIGNMENT_VALNAME

#define SPI_SETMENUDROPALIGNMENT_VALNAME   "MenuDropAlignment"

Definition at line 112 of file sysparams.c.

◆ SPI_SETMENUSHOWDELAY_REGKEY

#define SPI_SETMENUSHOWDELAY_REGKEY   "Control Panel\\Desktop"

Definition at line 158 of file sysparams.c.

◆ SPI_SETMENUSHOWDELAY_VALNAME

#define SPI_SETMENUSHOWDELAY_VALNAME   "MenuShowDelay"

Definition at line 159 of file sysparams.c.

◆ SPI_SETMOUSE_REGKEY

#define SPI_SETMOUSE_REGKEY   "Control Panel\\Mouse"

Definition at line 64 of file sysparams.c.

◆ SPI_SETMOUSE_VALNAME1

#define SPI_SETMOUSE_VALNAME1   "MouseThreshold1"

Definition at line 65 of file sysparams.c.

◆ SPI_SETMOUSE_VALNAME2

#define SPI_SETMOUSE_VALNAME2   "MouseThreshold2"

Definition at line 66 of file sysparams.c.

◆ SPI_SETMOUSE_VALNAME3

#define SPI_SETMOUSE_VALNAME3   "MouseSpeed"

Definition at line 67 of file sysparams.c.

◆ SPI_SETMOUSEBUTTONSWAP_REGKEY

#define SPI_SETMOUSEBUTTONSWAP_REGKEY   "Control Panel\\Mouse"

Definition at line 121 of file sysparams.c.

◆ SPI_SETMOUSEBUTTONSWAP_VALNAME

#define SPI_SETMOUSEBUTTONSWAP_VALNAME   "SwapMouseButtons"

Definition at line 122 of file sysparams.c.

◆ SPI_SETMOUSEHOVERHEIGHT_REGKEY

#define SPI_SETMOUSEHOVERHEIGHT_REGKEY   "Control Panel\\Mouse"

Definition at line 150 of file sysparams.c.

◆ SPI_SETMOUSEHOVERHEIGHT_VALNAME

#define SPI_SETMOUSEHOVERHEIGHT_VALNAME   "MouseHoverHeight"

Definition at line 151 of file sysparams.c.

◆ SPI_SETMOUSEHOVERTIME_REGKEY

#define SPI_SETMOUSEHOVERTIME_REGKEY   "Control Panel\\Mouse"

Definition at line 152 of file sysparams.c.

◆ SPI_SETMOUSEHOVERTIME_VALNAME

#define SPI_SETMOUSEHOVERTIME_VALNAME   "MouseHoverTime"

Definition at line 153 of file sysparams.c.

◆ SPI_SETMOUSEHOVERWIDTH_REGKEY

#define SPI_SETMOUSEHOVERWIDTH_REGKEY   "Control Panel\\Mouse"

Definition at line 148 of file sysparams.c.

◆ SPI_SETMOUSEHOVERWIDTH_VALNAME

#define SPI_SETMOUSEHOVERWIDTH_VALNAME   "MouseHoverWidth"

Definition at line 149 of file sysparams.c.

◆ SPI_SETMOUSESCROLLCHARS_REGKEY

#define SPI_SETMOUSESCROLLCHARS_REGKEY   "Control Panel\\Desktop"

Definition at line 154 of file sysparams.c.

◆ SPI_SETMOUSESCROLLCHARS_VALNAME

#define SPI_SETMOUSESCROLLCHARS_VALNAME   "WheelScrollChars"

Definition at line 155 of file sysparams.c.

◆ SPI_SETMOUSESCROLLLINES_REGKEY

#define SPI_SETMOUSESCROLLLINES_REGKEY   "Control Panel\\Desktop"

Definition at line 156 of file sysparams.c.

◆ SPI_SETMOUSESCROLLLINES_VALNAME

#define SPI_SETMOUSESCROLLLINES_VALNAME   "WheelScrollLines"

Definition at line 157 of file sysparams.c.

◆ SPI_SETPOWEROFFACTIVE_REGKEY

#define SPI_SETPOWEROFFACTIVE_REGKEY   "Control Panel\\Desktop"

Definition at line 142 of file sysparams.c.

◆ SPI_SETPOWEROFFACTIVE_VALNAME

#define SPI_SETPOWEROFFACTIVE_VALNAME   "PowerOffActive"

Definition at line 143 of file sysparams.c.

◆ SPI_SETSCREENREADER_REGKEY

#define SPI_SETSCREENREADER_REGKEY   "Control Panel\\Accessibility\\Blind Access"

Definition at line 131 of file sysparams.c.

◆ SPI_SETSCREENREADER_REGKEY_LEGACY

#define SPI_SETSCREENREADER_REGKEY_LEGACY   "Control Panel\\Accessibility"

Definition at line 133 of file sysparams.c.

◆ SPI_SETSCREENREADER_VALNAME

#define SPI_SETSCREENREADER_VALNAME   "On"

Definition at line 132 of file sysparams.c.

◆ SPI_SETSCREENREADER_VALNAME_LEGACY

#define SPI_SETSCREENREADER_VALNAME_LEGACY   "Blind Access"

Definition at line 134 of file sysparams.c.

◆ SPI_SETSCREENSAVEACTIVE_REGKEY

#define SPI_SETSCREENSAVEACTIVE_REGKEY   "Control Panel\\Desktop"

Definition at line 101 of file sysparams.c.

◆ SPI_SETSCREENSAVEACTIVE_VALNAME

#define SPI_SETSCREENSAVEACTIVE_VALNAME   "ScreenSaveActive"

Definition at line 102 of file sysparams.c.

◆ SPI_SETSCREENSAVETIMEOUT_REGKEY

#define SPI_SETSCREENSAVETIMEOUT_REGKEY   "Control Panel\\Desktop"

Definition at line 99 of file sysparams.c.

◆ SPI_SETSCREENSAVETIMEOUT_VALNAME

#define SPI_SETSCREENSAVETIMEOUT_VALNAME   "ScreenSaveTimeOut"

Definition at line 100 of file sysparams.c.

◆ SPI_SETSHOWSOUNDS_REGKEY

#define SPI_SETSHOWSOUNDS_REGKEY   "Control Panel\\Accessibility\\ShowSounds"

Definition at line 125 of file sysparams.c.

◆ SPI_SETSHOWSOUNDS_VALNAME

#define SPI_SETSHOWSOUNDS_VALNAME   "On"

Definition at line 126 of file sysparams.c.

◆ SPI_SETSNAPTODEFBUTTON_REGKEY

#define SPI_SETSNAPTODEFBUTTON_REGKEY   "Control Panel\\Mouse"

Definition at line 146 of file sysparams.c.

◆ SPI_SETSNAPTODEFBUTTON_VALNAME

#define SPI_SETSNAPTODEFBUTTON_VALNAME   "SnapToDefaultButton"

Definition at line 147 of file sysparams.c.

◆ SPI_SETWORKAREA_REGKEY

#define SPI_SETWORKAREA_REGKEY   "Control Panel\\Desktop"

Definition at line 123 of file sysparams.c.

◆ SPI_SETWORKAREA_VALNAME

#define SPI_SETWORKAREA_VALNAME   "WINE_WorkArea"

Definition at line 124 of file sysparams.c.

◆ SPI_SMCAPTIONFONT_VALNAME

#define SPI_SMCAPTIONFONT_VALNAME   "SmCaptionFont"

Definition at line 79 of file sysparams.c.

◆ SPI_SMCAPTIONHEIGHT_VALNAME

#define SPI_SMCAPTIONHEIGHT_VALNAME   "SmCaptionHeight"

Definition at line 78 of file sysparams.c.

◆ SPI_SMCAPTIONWIDTH_VALNAME

#define SPI_SMCAPTIONWIDTH_VALNAME   "SmCaptionWidth"

Definition at line 77 of file sysparams.c.

◆ SPI_STATUSFONT_VALNAME

#define SPI_STATUSFONT_VALNAME   "StatusFont"

Definition at line 83 of file sysparams.c.

◆ TEST_NONCLIENTMETRICS_REG

#define TEST_NONCLIENTMETRICS_REG (   ncm)
Value:
do { \
/*FIXME: test_reg_metric2( SPI_SETBORDER_REGKEY2, SPI_SETBORDER_REGKEY, SPI_SETBORDER_VALNAME, (ncm).iBorderWidth);*/\
test_reg_metric( SPI_METRIC_REGKEY, SPI_SCROLLWIDTH_VALNAME, (ncm).iScrollWidth);\
test_reg_metric( SPI_METRIC_REGKEY, SPI_SCROLLHEIGHT_VALNAME, (ncm).iScrollHeight);\
/*FIXME: test_reg_metric( SPI_METRIC_REGKEY, SPI_CAPTIONWIDTH_VALNAME, (ncm).iCaptionWidth);*/\
test_reg_metric( SPI_METRIC_REGKEY, SPI_CAPTIONHEIGHT_VALNAME, (ncm).iCaptionHeight);\
test_reg_metric( SPI_METRIC_REGKEY, SPI_SMCAPTIONWIDTH_VALNAME, (ncm).iSmCaptionWidth);\
test_reg_metric( SPI_METRIC_REGKEY, SPI_SMCAPTIONHEIGHT_VALNAME, (ncm).iSmCaptionHeight);\
test_reg_metric( SPI_METRIC_REGKEY, SPI_MENUWIDTH_VALNAME, (ncm).iMenuWidth);\
test_reg_metric( SPI_METRIC_REGKEY, SPI_MENUHEIGHT_VALNAME, (ncm).iMenuHeight);\
test_reg_font( SPI_METRIC_REGKEY, SPI_MENUFONT_VALNAME, (ncm).lfMenuFont);\
test_reg_font( SPI_METRIC_REGKEY, SPI_CAPTIONFONT_VALNAME, (ncm).lfCaptionFont);\
test_reg_font( SPI_METRIC_REGKEY, SPI_SMCAPTIONFONT_VALNAME, (ncm).lfSmCaptionFont);\
test_reg_font( SPI_METRIC_REGKEY, SPI_STATUSFONT_VALNAME, (ncm).lfStatusFont);\
test_reg_font( SPI_METRIC_REGKEY, SPI_MESSAGEFONT_VALNAME, (ncm).lfMessageFont); } while(0)
#define SPI_MESSAGEFONT_VALNAME
Definition: sysparams.c:84
#define SPI_SCROLLHEIGHT_VALNAME
Definition: sysparams.c:73
#define SPI_CAPTIONFONT_VALNAME
Definition: sysparams.c:76
#define SPI_MENUFONT_VALNAME
Definition: sysparams.c:82
#define SPI_SCROLLWIDTH_VALNAME
Definition: sysparams.c:72
#define SPI_SMCAPTIONFONT_VALNAME
Definition: sysparams.c:79
#define SPI_CAPTIONHEIGHT_VALNAME
Definition: sysparams.c:75
#define SPI_MENUHEIGHT_VALNAME
Definition: sysparams.c:81
#define SPI_SMCAPTIONHEIGHT_VALNAME
Definition: sysparams.c:78
#define SPI_MENUWIDTH_VALNAME
Definition: sysparams.c:80
#define SPI_STATUSFONT_VALNAME
Definition: sysparams.c:83
#define SPI_SMCAPTIONWIDTH_VALNAME
Definition: sysparams.c:77
#define SPI_METRIC_REGKEY
Definition: sysparams.c:71

Definition at line 1460 of file sysparams.c.

◆ test_reg_font

#define test_reg_font (   KEY,
  VAL,
  LF 
)
Value:
do { \
LOGFONTA lfreg;\
lffromreg( KEY, VAL, &lfreg);\
ok( (lfreg.lfHeight < 0 ? (LF).lfHeight == MulDiv( lfreg.lfHeight, dpi, real_dpi ) : \
MulDiv( -(LF).lfHeight , 72, dpi) == lfreg.lfHeight )&&\
(LF).lfWidth == lfreg.lfWidth &&\
(LF).lfWeight == lfreg.lfWeight &&\
!strcmp( (LF).lfFaceName, lfreg.lfFaceName)\
, "wrong value \"%s\" in registry %ld, %ld\n", VAL, (LF).lfHeight, lfreg.lfHeight);\
} while(0)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
Definition: string.c:3319
static int real_dpi
Definition: sysparams.c:56
static int dpi
Definition: sysparams.c:56
INT WINAPI MulDiv(INT nNumber, INT nNumerator, INT nDenominator)
Definition: muldiv.c:25
Definition: btrfs.h:143
LONG lfHeight
Definition: dimm.idl:42
LONG lfWeight
Definition: dimm.idl:46
CHAR lfFaceName[LF_FACESIZE]
Definition: dimm.idl:55
LONG lfWidth
Definition: dimm.idl:43
#define LF
Definition: telnetd.h:26
#define VAL(data, px, pl, pos)
Definition: driver.h:91

Definition at line 1449 of file sysparams.c.

◆ test_reg_key

#define test_reg_key (   subKey,
  valName,
  testValue 
)     _test_reg_key( subKey, NULL, valName, NULL, testValue, REG_SZ, FALSE )

Definition at line 481 of file sysparams.c.

◆ test_reg_key_dword

#define test_reg_key_dword (   subKey,
  valName,
  testValue 
)     _test_reg_key( subKey, NULL, valName, NULL, testValue, REG_DWORD, FALSE )

Definition at line 491 of file sysparams.c.

◆ test_reg_key_ex

#define test_reg_key_ex (   subKey1,
  subKey2,
  valName,
  testValue 
)     _test_reg_key( subKey1, subKey2, valName, NULL, testValue, REG_SZ, FALSE )

Definition at line 485 of file sysparams.c.

◆ test_reg_key_ex2

#define test_reg_key_ex2 (   subKey1,
  subKey2,
  valName1,
  valName2,
  testValue 
)     _test_reg_key( subKey1, subKey2, valName1, valName2, testValue, REG_SZ, FALSE )

Definition at line 487 of file sysparams.c.

◆ test_reg_key_ex2_optional

#define test_reg_key_ex2_optional (   subKey1,
  subKey2,
  valName1,
  valName2,
  testValue 
)     _test_reg_key( subKey1, subKey2, valName1, valName2, testValue, REG_SZ, TRUE )

Definition at line 489 of file sysparams.c.

◆ test_reg_key_optional

#define test_reg_key_optional (   subKey,
  valName,
  testValue 
)     _test_reg_key( subKey, NULL, valName, NULL, testValue, REG_SZ, TRUE )

Definition at line 483 of file sysparams.c.

◆ test_reg_metric

#define test_reg_metric (   KEY,
  VAL,
  val 
)
Value:
do { \
INT regval;\
regval = metricfromreg( KEY, VAL, dpi);\
ok( regval==val, "wrong value \"%s\" in registry %d, expected %d\n", VAL, regval, val);\
} while(0)
GLuint GLfloat * val
Definition: glext.h:7180
static UINT metricfromreg(const char *keyname, const char *valname, int dpi)
Definition: sysparams.c:496
int32_t INT
Definition: typedefs.h:58

Definition at line 1436 of file sysparams.c.

◆ test_reg_metric2

#define test_reg_metric2 (   KEY1,
  KEY2,
  VAL,
  val 
)
Value:
do { \
INT regval;\
regval = metricfromreg( KEY1, VAL, dpi);\
if( regval != val) regval = metricfromreg( KEY2, VAL, dpi);\
ok( regval==val, "wrong value \"%s\" in registry %d, expected %d\n", VAL, regval, val);\
} while(0)

Definition at line 1442 of file sysparams.c.

◆ WINE_CURRENT_USER_REGKEY

#define WINE_CURRENT_USER_REGKEY   "Wine"

Definition at line 164 of file sysparams.c.

Typedef Documentation

◆ LPLOGFONT16

Function Documentation

◆ _GdiGetCharDimensions()

static LONG _GdiGetCharDimensions ( HDC  hdc,
LPTEXTMETRICA  lptm,
LONG height 
)
static

Definition at line 2652 of file sysparams.c.

2653{
2654 SIZE sz;
2655 static const CHAR alphabet[] = {
2656 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q',
2657 'r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H',
2658 'I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',0};
2659
2660 if(lptm && !GetTextMetricsA(hdc, lptm)) return 0;
2661
2662 if(!GetTextExtentPointA(hdc, alphabet, 52, &sz)) return 0;
2663
2664 if (height) *height = sz.cy;
2665 return (sz.cx / 26 + 1) / 2;
2666}
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
HDC hdc
Definition: main.c:9
static LPTEXTMETRICW lptm
Definition: font.c:42
LONG cx
Definition: kdterminal.h:27
LONG cy
Definition: kdterminal.h:28
BOOL WINAPI GetTextMetricsA(_In_ HDC, _Out_ LPTEXTMETRICA)
Definition: text.c:200
BOOL WINAPI GetTextExtentPointA(_In_ HDC hdc, _In_reads_(c) LPCSTR lpString, _In_ int c, _Out_ LPSIZE lpsz)
char CHAR
Definition: xmlstorage.h:175

Referenced by get_text_metr_size().

◆ _test_reg_key()

static void _test_reg_key ( LPCSTR  subKey1,
LPCSTR  subKey2,
LPCSTR  valName1,
LPCSTR  valName2,
const void exp_value,
DWORD  exp_type,
BOOL  optional 
)
static

Definition at line 345 of file sysparams.c.

347{
349 DWORD valueLen;
350 DWORD type;
351 HKEY hKey;
352 LONG rc;
353 int found=0;
354
355 *value='\0';
356 valueLen=sizeof(value);
357 RegOpenKeyA( HKEY_CURRENT_USER, subKey1, &hKey );
358 rc=RegQueryValueExA( hKey, valName1, NULL, &type, (LPBYTE)value, &valueLen );
359 RegCloseKey( hKey );
360 if (rc==ERROR_SUCCESS)
361 {
362 ok( type == exp_type, "wrong type %lu/%lu\n", type, exp_type );
363 switch (exp_type)
364 {
365 case REG_DWORD:
366 ok( *(DWORD *)value == *(DWORD *)exp_value,
367 "Wrong value in registry: %s %s %08lx/%08lx\n",
368 subKey1, valName1, *(DWORD *)value, *(DWORD *)exp_value );
369 break;
370 case REG_SZ:
371 ok( !strcmp( exp_value, value ),
372 "Wrong value in registry: %s %s '%s' instead of '%s'\n",
373 subKey1, valName1, value, (const char *)exp_value );
374 break;
375 }
376 found++;
377 }
378 else if (strict)
379 {
380 ok(0,"Missing registry entry: subKey=%s, valName=%s\n",
381 subKey1, valName1);
382 }
383 if (valName2)
384 {
385 *value='\0';
386 valueLen=sizeof(value);
387 RegOpenKeyA( HKEY_CURRENT_USER, subKey1, &hKey );
388 rc=RegQueryValueExA( hKey, valName2, NULL, &type, (LPBYTE)value, &valueLen );
389 RegCloseKey( hKey );
390 if (rc==ERROR_SUCCESS)
391 {
392 ok( type == exp_type, "wrong type %lu/%lu\n", type, exp_type );
393 switch (exp_type)
394 {
395 case REG_DWORD:
396 ok( *(DWORD *)value == *(DWORD *)exp_value,
397 "Wrong value in registry: %s %s %08lx/%08lx\n",
398 subKey1, valName1, *(DWORD *)value, *(DWORD *)exp_value );
399 break;
400 case REG_SZ:
401 ok( !strcmp( exp_value, value ),
402 "Wrong value in registry: %s %s '%s' instead of '%s'\n",
403 subKey1, valName1, value, (const char *)exp_value );
404 break;
405 }
406 found++;
407 }
408 else if (strict)
409 {
410 ok( 0,"Missing registry entry: subKey=%s, valName=%s\n",
411 subKey1, valName2 );
412 }
413 }
414 if (subKey2 && !strict)
415 {
416 *value='\0';
417 valueLen=sizeof(value);
418 RegOpenKeyA( HKEY_CURRENT_USER, subKey2, &hKey );
419 rc=RegQueryValueExA( hKey, valName1, NULL, &type, (LPBYTE)value, &valueLen );
420 RegCloseKey( hKey );
421 if (rc==ERROR_SUCCESS)
422 {
423 ok( type == exp_type, "wrong type %lu/%lu\n", type, exp_type );
424 switch (exp_type)
425 {
426 case REG_DWORD:
427 ok( *(DWORD *)value == *(DWORD *)exp_value,
428 "Wrong value in registry: %s %s %08lx/%08lx\n",
429 subKey1, valName1, *(DWORD *)value, *(DWORD *)exp_value );
430 break;
431 case REG_SZ:
432 ok( !strcmp( exp_value, value ),
433 "Wrong value in registry: %s %s '%s' instead of '%s'\n",
434 subKey1, valName1, value, (const char *)exp_value );
435 break;
436 }
437 found++;
438 }
439 else if (strict)
440 {
441 ok( 0,"Missing registry entry: subKey=%s, valName=%s\n",
442 subKey2, valName1 );
443 }
444 if (valName2)
445 {
446 *value='\0';
447 valueLen=sizeof(value);
448 RegOpenKeyA( HKEY_CURRENT_USER, subKey2, &hKey );
449 rc=RegQueryValueExA( hKey, valName2, NULL, &type, (LPBYTE)value, &valueLen );
450 RegCloseKey( hKey );
451 if (rc==ERROR_SUCCESS)
452 {
453 ok( type == exp_type, "wrong type %lu/%lu\n", type, exp_type );
454 switch (exp_type)
455 {
456 case REG_DWORD:
457 ok( *(DWORD *)value == *(DWORD *)exp_value,
458 "Wrong value in registry: %s %s %08lx/%08lx\n",
459 subKey1, valName1, *(DWORD *)value, *(DWORD *)exp_value );
460 break;
461 case REG_SZ:
462 ok( !strcmp( exp_value, value ),
463 "Wrong value in registry: %s %s '%s' instead of '%s'\n",
464 subKey1, valName1, value, (const char *)exp_value );
465 break;
466 }
467 found++;
468 }
469 else if (strict)
470 {
471 ok( 0,"Missing registry entry: subKey=%s, valName=%s\n",
472 subKey2, valName2 );
473 }
474 }
475 }
476 ok(found || optional,
477 "Missing registry values: %s or %s in keys: %s or %s\n",
478 valName1, (valName2?valName2:"<n/a>"), subKey1, (subKey2?subKey2:"<n/a>") );
479}
@ optional
Definition: SystemMenu.c:34
#define ok(value,...)
Definition: atltest.h:57
#define RegCloseKey(hKey)
Definition: registry.h:49
#define ERROR_SUCCESS
Definition: deptool.c:10
#define NULL
Definition: types.h:112
LONG WINAPI RegOpenKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:3234
LONG WINAPI RegQueryValueExA(_In_ HKEY hkeyorg, _In_ LPCSTR name, _In_ LPDWORD reserved, _Out_opt_ LPDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ LPDWORD count)
Definition: reg.c:4009
#define MAX_PATH
Definition: compat.h:34
unsigned long DWORD
Definition: ntddk_ex.h:95
FxAutoRegKey hKey
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
#define REG_SZ
Definition: layer.c:22
static BOOL strict
Definition: sysparams.c:55
long LONG
Definition: pedump.c:60
#define REG_DWORD
Definition: sdbapi.c:615
unsigned char * LPBYTE
Definition: typedefs.h:53
Definition: pdh_main.c:96
#define HKEY_CURRENT_USER
Definition: winreg.h:11

◆ BOOL()

static BOOL ( WINAPI pIsProcessDPIAware)
static

◆ compare_font()

static void compare_font ( const LOGFONTW lf1,
const LOGFONTW lf2,
int  dpi,
int  custom_dpi,
int  line 
)
static

Definition at line 2958 of file sysparams.c.

2959{
2960 ok_(__FILE__,line)( lf2->lfHeight == (dpi == custom_dpi) ? lf1->lfHeight : MulDiv( lf1->lfHeight, custom_dpi, 2 * dpi ),
2961 "wrong lfHeight %ld vs %ld\n", lf1->lfHeight, lf2->lfHeight );
2962 ok_(__FILE__,line)( abs( lf1->lfWidth - MulDiv( lf2->lfWidth, dpi, custom_dpi )) <= 1,
2963 "wrong lfWidth %ld vs %ld\n", lf1->lfWidth, lf2->lfWidth );
2964 ok_(__FILE__,line)( !memcmp( &lf1->lfEscapement, &lf2->lfEscapement,
2965 offsetof( LOGFONTW, lfFaceName ) - offsetof( LOGFONTW, lfEscapement )),
2966 "font differs\n" );
2967 ok_(__FILE__,line)( !lstrcmpW( lf1->lfFaceName, lf2->lfFaceName ), "wrong face name %s vs %s\n",
2969}
#define ok_(x1, x2)
Definition: atltest.h:61
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
Definition: locale.c:4152
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
Definition: string.c:2802
#define abs(i)
Definition: fconv.c:206
#define wine_dbgstr_w
Definition: kernel32.h:34
#define offsetof(TYPE, MEMBER)
LONG lfHeight
Definition: dimm.idl:59
WCHAR lfFaceName[LF_FACESIZE]
Definition: dimm.idl:72
LONG lfWidth
Definition: dimm.idl:60
LONG lfEscapement
Definition: dimm.idl:61
Definition: parser.c:49

Referenced by test_metrics_for_dpi().

◆ dotest_spi_iconhorizontalspacing()

static BOOL dotest_spi_iconhorizontalspacing ( INT  curr_val)
static

Definition at line 911 of file sysparams.c.

912{
913 BOOL rc;
914 INT spacing, regval, min_val = MulDiv( 32, dpi, USER_DEFAULT_SCREEN_DPI );
915 ICONMETRICSA im;
916
919 if (!test_error_msg(rc,"SPI_ICONHORIZONTALSPACING")) return FALSE;
920 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
922 curr_val = max( curr_val, min_val );
923 /* The registry keys depend on the Windows version and the values too
924 * let's test (works on win95,ME,NT4,2k,XP)
925 */
927 if( regval != curr_val)
929 ok( curr_val == regval,
930 "wrong value in registry %d, expected %d\n", regval, curr_val);
931 /* compare with what SPI_ICONHORIZONTALSPACING returns */
933 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
934 eq( spacing, curr_val, "ICONHORIZONTALSPACING", "%d");
935 /* and with a system metrics */
936 eq( GetSystemMetrics( SM_CXICONSPACING ), curr_val, "SM_CXICONSPACING", "%d" );
937 /* and with what SPI_GETICONMETRICS returns */
938 im.cbSize = sizeof(ICONMETRICSA);
939 rc=SystemParametersInfoA( SPI_GETICONMETRICS, sizeof(ICONMETRICSA), &im, FALSE );
940 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
941 eq( im.iHorzSpacing, curr_val, "SPI_GETICONMETRICS", "%d" );
942 return TRUE;
943}
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
#define SPI_ICONHORIZONTALSPACING_REGKEY2
Definition: sysparams.c:89
#define eq(received, expected, label, type)
Definition: sysparams.c:58
static void test_change_message(int action, int optional)
Definition: sysparams.c:291
#define SPI_ICONHORIZONTALSPACING_REGKEY
Definition: sysparams.c:88
#define SPI_ICONHORIZONTALSPACING_VALNAME
Definition: sysparams.c:90
static BOOL test_error_msg(int rc, const char *name)
Definition: sysparams.c:313
#define max(a, b)
Definition: svc.c:63
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
#define SPIF_SENDCHANGE
Definition: winuser.h:1600
#define SPIF_UPDATEINIFILE
Definition: winuser.h:1599
BOOL WINAPI SystemParametersInfoA(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)
#define SPI_ICONHORIZONTALSPACING
Definition: winuser.h:1373
#define USER_DEFAULT_SCREEN_DPI
Definition: winuser.h:5085
#define SM_CXICONSPACING
Definition: winuser.h:1012

Referenced by test_SPI_ICONHORIZONTALSPACING().

◆ dotest_spi_iconverticalspacing()

static BOOL dotest_spi_iconverticalspacing ( INT  curr_val)
static

Definition at line 1080 of file sysparams.c.

1081{
1082 BOOL rc;
1083 INT spacing, regval, min_val = MulDiv( 32, dpi, USER_DEFAULT_SCREEN_DPI );
1084 ICONMETRICSA im;
1085
1088 if (!test_error_msg(rc,"SPI_ICONVERTICALSPACING")) return FALSE;
1089 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
1091 curr_val = max( curr_val, min_val );
1092 /* The registry keys depend on the Windows version and the values too
1093 * let's test (works on win95,ME,NT4,2k,XP)
1094 */
1096 if( regval != curr_val)
1098 ok( curr_val == regval,
1099 "wrong value in registry %d, expected %d\n", regval, curr_val);
1100 /* compare with what SPI_ICONVERTICALSPACING returns */
1101 rc=SystemParametersInfoA( SPI_ICONVERTICALSPACING, 0, &spacing, 0 );
1102 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
1103 eq( spacing, curr_val, "ICONVERTICALSPACING", "%d" );
1104 /* and with a system metrics */
1105 eq( GetSystemMetrics( SM_CYICONSPACING ), curr_val, "SM_CYICONSPACING", "%d" );
1106 /* and with what SPI_GETICONMETRICS returns */
1107 im.cbSize = sizeof(ICONMETRICSA);
1108 rc=SystemParametersInfoA( SPI_GETICONMETRICS, sizeof(ICONMETRICSA), &im, FALSE );
1109 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
1110 eq( im.iVertSpacing, curr_val, "SPI_GETICONMETRICS", "%d" );
1111 return TRUE;
1112}
#define SPI_ICONVERTICALSPACING_REGKEY2
Definition: sysparams.c:92
#define SPI_ICONVERTICALSPACING_VALNAME
Definition: sysparams.c:93
#define SPI_ICONVERTICALSPACING_REGKEY
Definition: sysparams.c:91
#define SPI_ICONVERTICALSPACING
Definition: winuser.h:1384
#define SM_CYICONSPACING
Definition: winuser.h:1013

Referenced by test_SPI_ICONVERTICALSPACING().

◆ DPI_AWARENESS()

static DPI_AWARENESS ( WINAPI pGetAwarenessFromDpiAwarenessContext)
static

◆ DPI_AWARENESS_CONTEXT()

static UINT UINT *static DPI_AWARENESS_CONTEXT ( WINAPI pGetThreadDpiAwarenessContext)
static

◆ dpi_winproc()

static LRESULT CALLBACK dpi_winproc ( HWND  hwnd,
UINT  msg,
WPARAM  wp,
LPARAM  lp 
)
static

Definition at line 4419 of file sysparams.c.

4420{
4421 DPI_AWARENESS_CONTEXT ctx = pGetWindowDpiAwarenessContext( hwnd );
4422 DPI_AWARENESS_CONTEXT ctx2 = pGetThreadDpiAwarenessContext();
4423 DWORD pos, pos2;
4424
4425 ok( pGetAwarenessFromDpiAwarenessContext( ctx ) == pGetAwarenessFromDpiAwarenessContext( ctx2 ),
4426 "msg %04x wrong awareness %p / %p\n", msg, ctx, ctx2 );
4427 pSetThreadDpiAwarenessContext( DPI_AWARENESS_CONTEXT_UNAWARE );
4428 pos = GetMessagePos();
4429 pSetThreadDpiAwarenessContext( DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE );
4430 pos2 = GetMessagePos();
4431 ok( pos == pos2, "wrong pos %08lx / %08lx\n", pos, pos2 );
4432 pSetThreadDpiAwarenessContext( ctx2 );
4433 return DefWindowProcA( hwnd, msg, wp, lp );
4434}
#define msg(x)
Definition: auth_time.c:54
static DPI_AWARENESS_CONTEXT
Definition: sysparams.c:52
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
#define DPI_AWARENESS_CONTEXT_UNAWARE
Definition: windef.h:87
#define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE
Definition: windef.h:89
DWORD WINAPI GetMessagePos(void)
Definition: message.c:1351
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)

Referenced by START_TEST(), and test_dpi_window().

◆ enum_all_fonts_proc()

static INT CALLBACK enum_all_fonts_proc ( const LOGFONTA elf,
const TEXTMETRICA ntm,
DWORD  type,
LPARAM  lparam 
)
static

Definition at line 2717 of file sysparams.c.

2718{
2719 return lstrcmpiA(elf->lfFaceName, (const char *)lparam);
2720}
@ lparam
Definition: SystemMenu.c:31
int WINAPI lstrcmpiA(LPCSTR str1, LPCSTR str2)
Definition: locale.c:4133

Referenced by is_font_enumerated().

◆ flush_change_messages()

◆ get_cursor_size()

static int get_cursor_size ( int  size)
static

Definition at line 2734 of file sysparams.c.

2735{
2736 /* only certain sizes are allowed for cursors */
2737 if (size >= 64) return 64;
2738 if (size >= 48) return 48;
2739 return 32;
2740}
GLsizeiptr size
Definition: glext.h:5919

Referenced by test_GetSystemMetrics().

◆ get_primary_adapter_name()

static BOOL get_primary_adapter_name ( CHAR name)
static

Definition at line 3130 of file sysparams.c.

3131{
3132 DISPLAY_DEVICEA dd;
3133 DWORD adapter;
3134
3135 dd.cb = sizeof(dd);
3136 for (adapter = 0; EnumDisplayDevicesA(NULL, adapter, &dd, 0); ++adapter)
3137 {
3139 {
3141 return TRUE;
3142 }
3143 }
3144
3145 return FALSE;
3146}
return adapter
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
Definition: lstring.c:100
DWORD StateFlags
Definition: wingdi.h:3258
CHAR DeviceName[32]
Definition: wingdi.h:3256
Definition: name.c:39
BOOL WINAPI EnumDisplayDevicesA(LPCSTR lpDevice, DWORD iDevNum, PDISPLAY_DEVICEA lpDisplayDevice, DWORD dwFlags)
Definition: display.c:23
#define DISPLAY_DEVICE_PRIMARY_DEVICE
Definition: wingdi.h:1398

Referenced by test_EnumDisplaySettings().

◆ get_real_dpi()

static DWORD get_real_dpi ( void  )
static

Definition at line 214 of file sysparams.c.

215{
217 DWORD dpi;
218
219 if (pSetThreadDpiAwarenessContext)
220 {
221 ctx = pSetThreadDpiAwarenessContext( DPI_AWARENESS_CONTEXT_SYSTEM_AWARE );
222 ok( ctx == (DPI_AWARENESS_CONTEXT)0x80006010, "got %p\n", ctx );
223 dpi = pGetDpiForSystem();
224 ok( dpi, "GetDpiForSystem failed\n" );
225 /* restore process-wide DPI awareness context */
226 ctx = pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x80006010 );
227 ok( ctx == (DPI_AWARENESS_CONTEXT)((UINT_PTR)0x11 | (dpi << 8)), "got %p\n", ctx );
228 return dpi;
229 }
230 if (get_reg_dword(HKEY_CURRENT_USER, "Control Panel\\Desktop", "LogPixels", &dpi))
231 return dpi;
232 if (get_reg_dword(HKEY_CURRENT_CONFIG, "Software\\Fonts", "LogPixels", &dpi))
233 return dpi;
235}
static BOOL get_reg_dword(HKEY base, const char *key_name, const char *value_name, DWORD *value)
Definition: sysparams.c:195
unsigned __int3264 UINT_PTR
Definition: mstsclib_h.h:274
#define DPI_AWARENESS_CONTEXT_SYSTEM_AWARE
Definition: windef.h:88
#define HKEY_CURRENT_CONFIG
Definition: winreg.h:15

Referenced by START_TEST().

◆ get_reg_dword()

static BOOL get_reg_dword ( HKEY  base,
const char key_name,
const char value_name,
DWORD value 
)
static

Definition at line 195 of file sysparams.c.

196{
197 HKEY key;
198 DWORD type, data, size = sizeof(data);
199 BOOL ret = FALSE;
200
202 {
203 if (RegQueryValueExA(key, value_name, NULL, &type, (void *)&data, &size) == ERROR_SUCCESS &&
204 type == REG_DWORD)
205 {
206 *value = data;
207 ret = TRUE;
208 }
210 }
211 return ret;
212}
return ret
Definition: mutex.c:146
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
Definition: copy.c:22

Referenced by get_real_dpi().

◆ get_text_metr_size()

static void get_text_metr_size ( HDC  hdc,
LOGFONTA plf,
TEXTMETRICA ptm,
UINT psz 
)
static

Definition at line 2670 of file sysparams.c.

2671{
2672 HFONT hfont, hfontsav;
2674 if( !ptm) ptm = &tm;
2675 hfont = CreateFontIndirectA( plf);
2676 if( !hfont || ( hfontsav = SelectObject( hdc, hfont)) == NULL ) {
2677 ptm->tmHeight = -1;
2678 if( psz) *psz = 10;
2679 if( hfont) DeleteObject( hfont);
2680 return;
2681 }
2682 GetTextMetricsA( hdc, ptm);
2683 if( psz)
2684 if( !(*psz = _GdiGetCharDimensions( hdc, ptm, NULL)))
2685 *psz = 10;
2686 SelectObject( hdc, hfontsav);
2688}
static HFONT hfont
pKey DeleteObject()
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
static LONG _GdiGetCharDimensions(HDC hdc, LPTEXTMETRICA lptm, LONG *height)
Definition: sysparams.c:2652
LONG tmHeight
Definition: wingdi.h:2807
HFONT WINAPI CreateFontIndirectA(_In_ const LOGFONTA *)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1546

Referenced by test_GetSystemMetrics().

◆ get_tmheight()

static int get_tmheight ( LOGFONTA plf,
int  flag 
)
static

Definition at line 1477 of file sysparams.c.

1478{
1480 HDC hdc = GetDC(0);
1485 ReleaseDC( 0, hdc );
1486 return tm.tmHeight + (flag ? tm.tmExternalLeading : 0);
1487}
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean flag
Definition: glfuncs.h:52
static HDC
Definition: imagelist.c:88
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
HDC WINAPI GetDC(_In_opt_ HWND)

Referenced by test_SPI_SETNONCLIENTMETRICS().

◆ get_tmheightW()

static int get_tmheightW ( LOGFONTW plf,
int  flag 
)
static

Definition at line 1489 of file sysparams.c.

1490{
1492 HDC hdc = GetDC(0);
1497 ReleaseDC( 0, hdc );
1498 return tm.tmHeight + (flag ? tm.tmExternalLeading : 0);
1499}
BOOL WINAPI GetTextMetricsW(_In_ HDC, _Out_ LPTEXTMETRICW)
Definition: text.c:221
HFONT WINAPI CreateFontIndirectW(_In_ const LOGFONTW *)

Referenced by test_metrics_for_dpi().

◆ INT()

static INT ( WINAPI pGetSystemMetricsForDpi)
static

◆ is_font_enumerated()

static BOOL is_font_enumerated ( const char name)
static

Definition at line 2722 of file sysparams.c.

2723{
2725 BOOL ret = FALSE;
2726
2728 ret = TRUE;
2729
2730 DeleteDC(hdc);
2731 return ret;
2732}
LONG_PTR LPARAM
Definition: minwindef.h:175
static INT CALLBACK enum_all_fonts_proc(const LOGFONTA *elf, const TEXTMETRICA *ntm, DWORD type, LPARAM lparam)
Definition: sysparams.c:2717
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
int WINAPI EnumFontFamiliesA(_In_ HDC, _In_opt_ LPCSTR, _In_ FONTENUMPROCA, _In_ LPARAM)
BOOL WINAPI DeleteDC(_In_ HDC)

Referenced by test_GetSystemMetrics().

◆ lffromreg()

static int lffromreg ( const char keyname,
const char valname,
LOGFONTA plf 
)
static

Definition at line 534 of file sysparams.c.

535{
536 HKEY hkey;
537 LOGFONTW lfw;
538 DWORD ret, size, type;
539
540 RegOpenKeyA( HKEY_CURRENT_USER, keyname, &hkey );
541 size = sizeof( lfw);
542 ret=RegQueryValueExA( hkey, valname, NULL, &type, (LPBYTE)&lfw, &size );
543 RegCloseKey( hkey );
544 ok( ret == ERROR_SUCCESS, "Key \"%s\" value \"%s\" not found\n", keyname, valname);
545 if( ret != ERROR_SUCCESS)
546 return FALSE;
547 if( size <= sizeof( LOGFONT16)) {
548 LOGFONT16 *plf16 = (LOGFONT16*) &lfw;
549 plf->lfHeight = plf16->lfHeight;
550 plf->lfWidth = plf16->lfWidth;
551 plf->lfEscapement = plf16->lfEscapement;
552 plf->lfOrientation = plf16->lfOrientation;
553 plf->lfWeight = plf16->lfWeight;
554 plf->lfItalic = plf16->lfItalic;
555 plf->lfUnderline = plf16->lfUnderline;
556 plf->lfStrikeOut = plf16->lfStrikeOut;
557 plf->lfCharSet = plf16->lfCharSet;
558 plf->lfOutPrecision = plf16->lfOutPrecision;
559 plf->lfClipPrecision = plf16->lfClipPrecision;
560 plf->lfQuality = plf16->lfQuality;
562 memcpy( plf->lfFaceName, plf16->lfFaceName, LF_FACESIZE );
563 } else if( size <= sizeof( LOGFONTA)) {
564 plf = (LOGFONTA*) &lfw;
565 } else {
566 plf->lfHeight = lfw.lfHeight;
567 plf->lfWidth = lfw.lfWidth;
568 plf->lfEscapement = lfw.lfEscapement;
569 plf->lfOrientation = lfw.lfOrientation;
570 plf->lfWeight = lfw.lfWeight;
571 plf->lfItalic = lfw.lfItalic;
572 plf->lfUnderline = lfw.lfUnderline;
573 plf->lfStrikeOut = lfw.lfStrikeOut;
574 plf->lfCharSet = lfw.lfCharSet;
577 plf->lfQuality = lfw.lfQuality;
581
582 }
583 return TRUE;
584}
#define LF_FACESIZE
Definition: dimm.idl:39
#define CP_ACP
Definition: compat.h:109
#define WideCharToMultiByte
Definition: compat.h:111
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
BYTE lfStrikeOut
Definition: sysparams.c:524
BYTE lfCharSet
Definition: sysparams.c:525
BYTE lfPitchAndFamily
Definition: sysparams.c:529
BYTE lfClipPrecision
Definition: sysparams.c:527
CHAR lfFaceName[LF_FACESIZE]
Definition: sysparams.c:530
BYTE lfUnderline
Definition: sysparams.c:523
INT16 lfWeight
Definition: sysparams.c:521
INT16 lfHeight
Definition: sysparams.c:517
INT16 lfEscapement
Definition: sysparams.c:519
INT16 lfWidth
Definition: sysparams.c:518
BYTE lfOutPrecision
Definition: sysparams.c:526
BYTE lfQuality
Definition: sysparams.c:528
BYTE lfItalic
Definition: sysparams.c:522
INT16 lfOrientation
Definition: sysparams.c:520
BYTE lfStrikeOut
Definition: dimm.idl:49
BYTE lfClipPrecision
Definition: dimm.idl:52
BYTE lfUnderline
Definition: dimm.idl:48
BYTE lfQuality
Definition: dimm.idl:53
BYTE lfOutPrecision
Definition: dimm.idl:51
LONG lfOrientation
Definition: dimm.idl:45
BYTE lfItalic
Definition: dimm.idl:47
BYTE lfPitchAndFamily
Definition: dimm.idl:54
LONG lfEscapement
Definition: dimm.idl:44
BYTE lfCharSet
Definition: dimm.idl:50
BYTE lfOutPrecision
Definition: dimm.idl:68
BYTE lfStrikeOut
Definition: dimm.idl:66
BYTE lfItalic
Definition: dimm.idl:64
LONG lfWeight
Definition: dimm.idl:63
LONG lfOrientation
Definition: dimm.idl:62
BYTE lfUnderline
Definition: dimm.idl:65
BYTE lfClipPrecision
Definition: dimm.idl:69
BYTE lfCharSet
Definition: dimm.idl:67
BYTE lfQuality
Definition: dimm.idl:70
BYTE lfPitchAndFamily
Definition: dimm.idl:71

◆ LONG()

static POINT *static POINT *static LONG ( WINAPI pGetAutoRotationState)
static

◆ metricfromreg()

static UINT metricfromreg ( const char keyname,
const char valname,
int  dpi 
)
static

Definition at line 496 of file sysparams.c.

497{
498 HKEY hkey;
499 char buf[64];
500 DWORD ret;
501 DWORD size, type;
502 int value;
503
504 RegOpenKeyA( HKEY_CURRENT_USER, keyname, &hkey );
505 size = sizeof(buf);
506 ret=RegQueryValueExA( hkey, valname, NULL, &type, (LPBYTE)buf, &size );
507 RegCloseKey( hkey );
508 if( ret != ERROR_SUCCESS) return -1;
509 value = atoi( buf);
510 if( value < 0)
511 value = ( -value * dpi + 720) / 1440;
512 return value;
513}
_ACRTIMP int __cdecl atoi(const char *)
Definition: string.c:1715
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751

Referenced by dotest_spi_iconhorizontalspacing(), dotest_spi_iconverticalspacing(), test_GetSystemMetrics(), test_setborder(), test_SPI_SETBORDER(), test_SPI_SETICONMETRICS(), test_SPI_SETICONTITLEWRAP(), test_SPI_SETMINIMIZEDMETRICS(), and test_SPI_SETNONCLIENTMETRICS().

◆ run_in_process_()

static void run_in_process_ ( const char file,
int  line,
char **  argv,
const char args 
)
static

Definition at line 178 of file sysparams.c.

179{
180 STARTUPINFOA startup = {.cb = sizeof(STARTUPINFOA)};
182 char cmdline[MAX_PATH * 2];
183 DWORD ret;
184
185 sprintf( cmdline, "%s %s %s", argv[0], argv[1], args );
187 ok_(file, line)( ret, "CreateProcessA failed, error %lu\n", GetLastError() );
188 if (!ret) return;
189
190 wait_child_process( info.hProcess );
191 CloseHandle( info.hThread );
192 CloseHandle( info.hProcess );
193}
static void startup(void)
#define CloseHandle
Definition: compat.h:739
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessA(const char *app_name, char *cmd_line, SECURITY_ATTRIBUTES *process_attr, SECURITY_ATTRIBUTES *thread_attr, BOOL inherit, DWORD flags, void *env, const char *cur_dir, STARTUPINFOA *startup_info, PROCESS_INFORMATION *info)
Definition: process.c:686
#define sprintf
Definition: sprintf.c:45
#define argv
Definition: mplay32.c:18
struct _STARTUPINFOA STARTUPINFOA
#define wait_child_process
Definition: test.h:159
TCHAR * cmdline
Definition: stretchblt.cpp:32
Definition: match.c:390
Definition: fci.c:127

◆ run_spi_setmouse_test()

static BOOL run_spi_setmouse_test ( int  curr_val[],
POINT req_change,
POINT proj_change,
int  nchange 
)
static

Definition at line 655 of file sysparams.c.

656{
657 BOOL rc;
658 INT mi[3];
659 static int aw_turn = 0;
660
661 char buf[20];
662 int i;
663
664 aw_turn++;
665 rc = FALSE;
666 SetLastError(0xdeadbeef);
667 if (aw_turn % 2) /* call unicode on odd (non even) calls */
669 else
671 if (!test_error_msg(rc,"SPI_SETMOUSE")) return FALSE;
672
673 ok(rc, "SystemParametersInfo: rc=%d err=%ld\n", rc, GetLastError());
675 for (i = 0; i < 3; i++)
676 {
677 sprintf( buf, "%d", curr_val[i] );
679 }
680
682 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
683 ok(mi[0] == curr_val[0], "expected X threshold %d, got %d\n", curr_val[0], mi[0]);
684 ok(mi[1] == curr_val[1], "expected Y threshold %d, got %d\n", curr_val[1], mi[1]);
685 ok(mi[2] == curr_val[2] || broken(mi[2] == 1) /* Win10 1709+ */,
686 "expected acceleration %d, got %d\n", curr_val[2], mi[2]);
687
689 ok(rc, "SystemParametersInfoW: rc=%d err=%ld\n", rc, GetLastError());
690 ok(mi[0] == curr_val[0], "expected X threshold %d, got %d\n", curr_val[0], mi[0]);
691 ok(mi[1] == curr_val[1], "expected Y threshold %d, got %d\n", curr_val[1], mi[1]);
692 ok(mi[2] == curr_val[2] || broken(mi[2] == 1) /* Win10 1709+ */,
693 "expected acceleration %d, got %d\n", curr_val[2], mi[2]);
694
695 if (0)
696 {
697 /* FIXME: this always fails for me - AJ */
698 for (i = 0; i < nchange; i++)
699 {
700 POINT mv;
702 mouse_event( MOUSEEVENTF_MOVE, req_change[i].x, req_change[i].y, 0, 0 );
703 GetCursorPos( &mv );
704 ok( proj_change[i].x == mv.x, "Projected dx and real dx comparison. May fail under high load.\n" );
705 ok( proj_change[i].y == mv.y, "Projected dy equals real dy. May fail under high load.\n" );
706 }
707 }
708 return TRUE;
709}
#define broken(x)
Definition: atltest.h:178
#define SetLastError(x)
Definition: compat.h:752
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
static const char * setmouse_valuenames[3]
Definition: sysparams.c:646
#define SPI_SETMOUSE_REGKEY
Definition: sysparams.c:64
#define test_reg_key(subKey, valName, testValue)
Definition: sysparams.c:481
static MONITORINFO mi
Definition: win.c:9400
long y
Definition: polytest.cpp:48
long x
Definition: polytest.cpp:48
#define MOUSEEVENTF_ABSOLUTE
Definition: winuser.h:1205
void WINAPI mouse_event(_In_ DWORD, _In_ DWORD, _In_ DWORD, _In_ DWORD, _In_ ULONG_PTR)
BOOL WINAPI GetCursorPos(_Out_ LPPOINT)
Definition: cursoricon.c:3064
#define SPI_GETMOUSE
Definition: winuser.h:1366
#define MOUSEEVENTF_MOVE
Definition: winuser.h:1194
BOOL WINAPI SystemParametersInfoW(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)
#define SPI_SETMOUSE
Definition: winuser.h:1367

Referenced by test_SPI_SETMOUSE().

◆ scale_point_dpi()

static void scale_point_dpi ( POINT pt,
UINT  src_dpi,
UINT  target_dpi 
)
static

Definition at line 3461 of file sysparams.c.

3462{
3463 pt->x = MulDiv( pt->x, target_dpi, src_dpi );
3464 pt->y = MulDiv( pt->y, target_dpi, src_dpi );
3465}
#define pt(x, y)
Definition: drawing.c:79

Referenced by scale_point_dpi_aware().

◆ scale_point_dpi_aware()

static void scale_point_dpi_aware ( POINT pt,
DPI_AWARENESS  from,
DPI_AWARENESS  to 
)
static

Definition at line 3475 of file sysparams.c.

3476{
3481}
static void scale_point_dpi(POINT *pt, UINT src_dpi, UINT target_dpi)
Definition: sysparams.c:3461
CardRegion * from
Definition: spigame.cpp:19
@ DPI_AWARENESS_UNAWARE
Definition: windef.h:82

Referenced by test_dpi_mapping().

◆ scale_rect_dpi()

static void scale_rect_dpi ( RECT rect,
UINT  src_dpi,
UINT  target_dpi 
)
static

Definition at line 3467 of file sysparams.c.

3468{
3469 rect->left = MulDiv( rect->left, target_dpi, src_dpi );
3470 rect->top = MulDiv( rect->top, target_dpi, src_dpi );
3471 rect->right = MulDiv( rect->right, target_dpi, src_dpi );
3472 rect->bottom = MulDiv( rect->bottom, target_dpi, src_dpi );
3473}
& rect
Definition: startmenu.cpp:1413

Referenced by scale_rect_dpi_aware(), and test_dpi_mapping().

◆ scale_rect_dpi_aware()

static void scale_rect_dpi_aware ( RECT rect,
DPI_AWARENESS  from,
DPI_AWARENESS  to 
)
static

Definition at line 3483 of file sysparams.c.

3484{
3489}
static void scale_rect_dpi(RECT *rect, UINT src_dpi, UINT target_dpi)
Definition: sysparams.c:3467

Referenced by test_dpi_mapping().

◆ START_TEST()

START_TEST ( sysparams  )

Definition at line 4602 of file sysparams.c.

4603{
4604 int argc;
4605 char** argv;
4606 WNDCLASSA wc;
4607 MSG msg;
4608 HDC hdc;
4612
4613 hdll = GetModuleHandleA("user32.dll");
4614 pIsProcessDPIAware = (void*)GetProcAddress(hdll, "IsProcessDPIAware");
4615 pSetProcessDPIAware = (void*)GetProcAddress(hdll, "SetProcessDPIAware");
4616 pGetDpiForSystem = (void*)GetProcAddress(hdll, "GetDpiForSystem");
4617 pGetDpiForWindow = (void*)GetProcAddress(hdll, "GetDpiForWindow");
4618 pGetDpiForMonitorInternal = (void*)GetProcAddress(hdll, "GetDpiForMonitorInternal");
4619 pSetProcessDpiAwarenessContext = (void*)GetProcAddress(hdll, "SetProcessDpiAwarenessContext");
4620 pGetProcessDpiAwarenessInternal = (void*)GetProcAddress(hdll, "GetProcessDpiAwarenessInternal");
4621 pSetProcessDpiAwarenessInternal = (void*)GetProcAddress(hdll, "SetProcessDpiAwarenessInternal");
4622 pGetThreadDpiAwarenessContext = (void*)GetProcAddress(hdll, "GetThreadDpiAwarenessContext");
4623 pSetThreadDpiAwarenessContext = (void*)GetProcAddress(hdll, "SetThreadDpiAwarenessContext");
4624 pGetWindowDpiAwarenessContext = (void*)GetProcAddress(hdll, "GetWindowDpiAwarenessContext");
4625 pGetAwarenessFromDpiAwarenessContext = (void*)GetProcAddress(hdll, "GetAwarenessFromDpiAwarenessContext");
4626 pIsValidDpiAwarenessContext = (void*)GetProcAddress(hdll, "IsValidDpiAwarenessContext");
4627 pGetSystemMetricsForDpi = (void*)GetProcAddress(hdll, "GetSystemMetricsForDpi");
4628 pSystemParametersInfoForDpi = (void*)GetProcAddress(hdll, "SystemParametersInfoForDpi");
4629 pAdjustWindowRectExForDpi = (void*)GetProcAddress(hdll, "AdjustWindowRectExForDpi");
4630 pLogicalToPhysicalPointForPerMonitorDPI = (void*)GetProcAddress(hdll, "LogicalToPhysicalPointForPerMonitorDPI");
4631 pPhysicalToLogicalPointForPerMonitorDPI = (void*)GetProcAddress(hdll, "PhysicalToLogicalPointForPerMonitorDPI");
4632 pGetAutoRotationState = (void*)GetProcAddress(hdll, "GetAutoRotationState");
4633 pAreDpiAwarenessContextsEqual = (void*)GetProcAddress(hdll, "AreDpiAwarenessContextsEqual");
4634 pGetDpiFromDpiAwarenessContext = (void*)GetProcAddress(hdll, "GetDpiFromDpiAwarenessContext");
4635
4637 hdc = GetDC(0);
4640 ReleaseDC( 0, hdc);
4641
4642 /* This test requires interactivity, if we don't have it, give up */
4645
4647 strict=(argc >= 3 && strcmp(argv[2],"strict")==0);
4648
4649 if (argc > 3 && !strcmp( argv[2], "SetProcessDpiAwarenessContext" ))
4650 {
4652 return;
4653 }
4654
4655 trace("dpi %d real_dpi %d, strict %d\n", dpi, real_dpi, strict);
4656
4658
4659 trace("testing GetSystemMetrics with your current desktop settings\n");
4661 test_metrics_for_dpi( 192 );
4670
4671 change_counter = 0;
4673
4674 wc.lpszClassName = "SysParamsTestClass";
4677 wc.hInstance = hInstance;
4679 wc.hCursor = LoadCursorA( 0, (LPCSTR)IDC_ARROW );
4680 wc.hbrBackground = (HBRUSH)( COLOR_WINDOW + 1 );
4681 wc.lpszMenuName = 0;
4682 wc.cbClsExtra = 0;
4683 wc.cbWndExtra = 0;
4684 RegisterClassA( &wc );
4685 wc.lpszClassName = "DpiTestClass";
4687 RegisterClassA( &wc );
4688
4689 ghTestWnd = CreateWindowA( "SysParamsTestClass", "Test System Parameters Application",
4690 WS_OVERLAPPEDWINDOW, 0, 0, 100, 100, 0, 0, hInstance, NULL );
4691
4693 assert( hThread );
4695
4696 while( GetMessageA( &msg, 0, 0, 0 )) {
4699 }
4700
4701 if (pSetThreadDpiAwarenessContext)
4702 {
4706 }
4707 else win_skip( "SetThreadDpiAwarenessContext not supported\n" );
4708
4710
4711 if (!pSetProcessDpiAwarenessContext || !pSetThreadDpiAwarenessContext || !pGetThreadDpiAwarenessContext)
4712 win_skip( "SetProcessDpiAwarenessContext not supported\n" );
4713 else
4714 {
4715 run_in_process( argv, "SetProcessDpiAwarenessContext 0x6010" );
4716 run_in_process( argv, "SetProcessDpiAwarenessContext 0x11" );
4717 run_in_process( argv, "SetProcessDpiAwarenessContext 0x12" );
4718 run_in_process( argv, "SetProcessDpiAwarenessContext 0x22" );
4719 run_in_process( argv, "SetProcessDpiAwarenessContext 0x40006010" );
4720 run_in_process( argv, "SetProcessDpiAwarenessContext 0x80006010" );
4721 run_in_process( argv, "SetProcessDpiAwarenessContext 0x80000012" );
4722 run_in_process( argv, "SetProcessDpiAwarenessContext 0x80000022" );
4723
4724 /* user32 allows abstract DPI contexts to be used */
4725 run_in_process( argv, "SetProcessDpiAwarenessContext 0xffffffff" );
4726 run_in_process( argv, "SetProcessDpiAwarenessContext 0xfffffffe" );
4727 run_in_process( argv, "SetProcessDpiAwarenessContext 0xfffffffd" );
4728 run_in_process( argv, "SetProcessDpiAwarenessContext 0xfffffffc" );
4729 run_in_process( argv, "SetProcessDpiAwarenessContext 0xfffffffb" );
4730 }
4731}
#define trace
Definition: atltest.h:70
HINSTANCE hInstance
Definition: charmap.c:19
#define GetProcAddress(x, y)
Definition: compat.h:753
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
Definition: loader.c:812
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
Definition: thread.c:137
MonoAssembly int argc
Definition: metahost.c:107
#define assert(_expr)
Definition: assert.h:32
_ACRTIMP __msvcrt_ulong __cdecl strtoul(const char *, char **, int)
Definition: string.c:1859
DWORD dwThreadId
Definition: fdebug.c:31
#define win_skip
Definition: minitest.h:67
static void test_EnumDisplaySettings(void)
Definition: sysparams.c:3177
static DWORD WINAPI SysParamsThreadFunc(LPVOID lpParam)
Definition: sysparams.c:2594
static void test_GetAwarenessFromDpiAwarenessContext(void)
Definition: sysparams.c:4241
static int change_last_param
Definition: sysparams.c:172
static void test_dpi_context(void)
Definition: sysparams.c:4287
static LRESULT CALLBACK dpi_winproc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
Definition: sysparams.c:4419
static void test_dpi_mapping(void)
Definition: sysparams.c:3491
static void test_dpi_window(void)
Definition: sysparams.c:4436
static void test_GetSysColorBrush(void)
Definition: sysparams.c:3396
static void test_GetAutoRotationState(void)
Definition: sysparams.c:4557
static void test_GetDpiFromDpiAwarenessContext(void)
Definition: sysparams.c:4113
static DWORD get_real_dpi(void)
Definition: sysparams.c:214
static void test_AreDpiAwarenessContextsEqual(void)
Definition: sysparams.c:4157
static void test_SetThreadDpiAwarenessContext(void)
Definition: sysparams.c:3950
#define run_in_process(a, b)
Definition: sysparams.c:177
static void test_LOGFONT_charset(void)
Definition: sysparams.c:4578
static void test_GetSystemMetrics(void)
Definition: sysparams.c:2742
static LRESULT CALLBACK SysParamsTestWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
Definition: sysparams.c:237
static void test_dpi_aware(void)
Definition: sysparams.c:3796
static void test_metrics_for_dpi(int custom_dpi)
Definition: sysparams.c:2971
static void test_SetProcessDpiAwarenessContext(ULONG arg)
Definition: sysparams.c:3818
static void test_IsValidDpiAwarenessContext(void)
Definition: sysparams.c:4022
HANDLE hThread
Definition: wizard.c:28
#define WS_OVERLAPPEDWINDOW
Definition: pedump.c:637
int winetest_get_mainargs(char ***pargv)
static PVOID hdll
Definition: shimdbg.c:126
HBRUSH hbrBackground
Definition: winuser.h:3278
HICON hIcon
Definition: winuser.h:3276
HINSTANCE hInstance
Definition: winuser.h:3275
HCURSOR hCursor
Definition: winuser.h:3277
int cbWndExtra
Definition: winuser.h:3274
UINT style
Definition: winuser.h:3271
LPCSTR lpszMenuName
Definition: winuser.h:3279
LPCSTR lpszClassName
Definition: winuser.h:3280
WNDPROC lpfnWndProc
Definition: winuser.h:3272
int cbClsExtra
Definition: winuser.h:3273
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1829
#define ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION
Definition: winerror.h:1285
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
#define LOGPIXELSY
Definition: wingdi.h:719
#define CS_VREDRAW
Definition: winuser.h:666
LRESULT WINAPI DispatchMessageA(_In_ const MSG *)
BOOL WINAPI TranslateMessage(_In_ const MSG *)
#define COLOR_WINDOW
Definition: winuser.h:929
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
Definition: winuser.h:4469
#define SPI_SETBEEP
Definition: winuser.h:1365
#define CS_HREDRAW
Definition: winuser.h:661
#define IDC_ARROW
Definition: winuser.h:695
#define IDI_APPLICATION
Definition: winuser.h:712
ATOM WINAPI RegisterClassA(_In_ CONST WNDCLASSA *)
HICON WINAPI LoadIconA(_In_opt_ HINSTANCE hInstance, _In_ LPCSTR lpIconName)
Definition: cursoricon.c:2429
#define CS_OWNDC
Definition: winuser.h:663
BOOL WINAPI GetMessageA(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
HCURSOR WINAPI LoadCursorA(_In_opt_ HINSTANCE, _In_ LPCSTR)
Definition: cursoricon.c:2459
const char * LPCSTR
Definition: xmlstorage.h:183

◆ SysParamsTestWndProc()

static LRESULT CALLBACK SysParamsTestWndProc ( HWND  hWnd,
UINT  msg,
WPARAM  wParam,
LPARAM  lParam 
)
static

Definition at line 237 of file sysparams.c.

239{
240 switch (msg) {
241
242 case WM_DISPLAYCHANGE:
243 ok(displaychange_ok, "Unexpected WM_DISPLAYCHANGE message\n");
247 break;
248
249 case WM_SETTINGCHANGE:
250 if (wParam == SPI_SETHANDEDNESS) break; /* ignore */
252 if (displaychange_test_active) break;
254 else if (change_last_param != wParam)
255 {
256 switch (wParam)
257 {
258 /* ignore these messages when caused by other actions */
260 case SPI_SETWORKAREA:
261#ifdef __REACTOS__
262 case SPI_SETBORDER: /* WS03 */
263 case SPI_SETNONCLIENTMETRICS: /* WS03 */
264#endif
265 break;
266 default:
267 ok( 0, "too many changes counter=%d last change=%Iu\n", change_counter, wParam );
268 break;
269 }
270 }
271 break;
272
273 case WM_DESTROY:
274 PostQuitMessage( 0 );
275 break;
276
277 /* drop through */
278 default:
279 return( DefWindowProcA( hWnd, msg, wParam, lParam ) );
280 }
281
282 return 0;
283}
HWND hWnd
Definition: settings.c:17
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
static BOOL displaychange_test_active
Definition: sysparams.c:174
static BOOL displaychange_ok
Definition: sysparams.c:174
static HANDLE displaychange_sem
Definition: sysparams.c:175
static int last_bpp
Definition: sysparams.c:173
BOOL WINAPI DECLSPEC_HOTPATCH ReleaseSemaphore(IN HANDLE hSemaphore, IN LONG lReleaseCount, IN LPLONG lpPreviousCount)
Definition: synch.c:491
#define SPI_SETBORDER
Definition: winuser.h:1369
#define SPI_SETHANDEDNESS
Definition: winuser.h:1591
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
#define WM_SETTINGCHANGE
Definition: winuser.h:1657
#define WM_DESTROY
Definition: winuser.h:1637

Referenced by START_TEST().

◆ SysParamsThreadFunc()

static DWORD WINAPI SysParamsThreadFunc ( LPVOID  lpParam)
static

Definition at line 2594 of file sysparams.c.

2595{
2596 test_SPI_SETBEEP(); /* 1 */
2597 test_SPI_SETMOUSE(); /* 4 */
2598 test_SPI_SETBORDER(); /* 6 */
2599 test_SPI_SETKEYBOARDSPEED(); /* 10 */
2603 test_SPI_SETGRIDGRANULARITY(); /* 19 */
2604 test_SPI_SETKEYBOARDDELAY(); /* 23 */
2606 test_SPI_SETICONTITLEWRAP(); /* 26 */
2608 test_SPI_SETDOUBLECLKWIDTH(); /* 29 */
2609 test_SPI_SETDOUBLECLKHEIGHT(); /* 30 */
2610 test_SPI_SETDOUBLECLICKTIME(); /* 32 */
2611 test_SPI_SETMOUSEBUTTONSWAP(); /* 33 */
2612 test_SPI_SETFASTTASKSWITCH(); /* 36 */
2613 test_SPI_SETDRAGFULLWINDOWS(); /* 37 */
2614 /* test_WM_DISPLAYCHANGE seems to be somewhat buggy on
2615 * some versions of Windows (Vista, Win2k8, Win7B) in that
2616 * not all metrics are properly restored. Problems are
2617 * SM_CXMAXTRACK, SM_CYMAXTRACK
2618 * Fortunately setting the Non-Client metrics like in
2619 * test_SPI_SETNONCLIENTMETRICS will correct this. That is why
2620 * we do the DISPLAY change now... */
2624 test_SPI_SETICONMETRICS(); /* 46 */
2625 test_SPI_SETWORKAREA(); /* 47 */
2626 test_SPI_SETSHOWSOUNDS(); /* 57 */
2627 test_SPI_SETKEYBOARDPREF(); /* 69 */
2628 test_SPI_SETSCREENREADER(); /* 71 */
2629 test_SPI_SETFONTSMOOTHING(); /* 75 */
2630 test_SPI_SETLOWPOWERACTIVE(); /* 85 */
2631 test_SPI_SETPOWEROFFACTIVE(); /* 86 */
2632 test_SPI_SETSNAPTODEFBUTTON(); /* 95 */
2633 test_SPI_SETMOUSEHOVERWIDTH(); /* 99 */
2634 test_SPI_SETMOUSEHOVERHEIGHT(); /* 101 */
2635 test_SPI_SETMOUSEHOVERTIME(); /* 103 */
2636 test_SPI_SETWHEELSCROLLLINES(); /* 105 */
2637 test_SPI_SETMENUSHOWDELAY(); /* 107 */
2638 test_SPI_SETWHEELSCROLLCHARS(); /* 108 */
2639 test_SPI_SETWALLPAPER(); /* 115 */
2640
2641
2643 return 0;
2644}
static void test_SPI_SETSCREENREADER(void)
Definition: sysparams.c:2002
static void test_SPI_SETBORDER(void)
Definition: sysparams.c:823
static void test_SPI_SETWHEELSCROLLLINES(void)
Definition: sysparams.c:2352
static void test_SPI_SETICONMETRICS(void)
Definition: sysparams.c:1755
static void test_SPI_SETKEYBOARDDELAY(void)
Definition: sysparams.c:1042
static void test_SPI_SETLOWPOWERACTIVE(void)
Definition: sysparams.c:2120
static void test_SPI_SETSHOWSOUNDS(void)
Definition: sysparams.c:1928
static void test_SPI_SETKEYBOARDSPEED(void)
Definition: sysparams.c:875
static void test_SPI_SETICONTITLEWRAP(void)
Definition: sysparams.c:1135
static void test_SPI_SETWALLPAPER(void)
Definition: sysparams.c:2471
static void test_SPI_SETBEEP(void)
Definition: sysparams.c:586
static void test_SPI_SETMOUSEHOVERWIDTH(void)
Definition: sysparams.c:2234
static void test_SPI_SETMOUSEBUTTONSWAP(void)
Definition: sysparams.c:1346
static void test_SPI_SETKEYBOARDPREF(void)
Definition: sysparams.c:1966
static void test_SPI_SETSCREENSAVEACTIVE(void)
Definition: sysparams.c:1001
static void test_SPI_SETDOUBLECLICKTIME(void)
Definition: sysparams.c:1289
static void test_SPI_SETMOUSE(void)
Definition: sysparams.c:711
static void test_WM_DISPLAYCHANGE(void)
Definition: sysparams.c:2496
static void test_SPI_SETFONTSMOOTHING(void)
Definition: sysparams.c:2038
static void test_SPI_SETMINIMIZEDMETRICS(void)
Definition: sysparams.c:1628
static void test_SPI_SETWHEELSCROLLCHARS(void)
Definition: sysparams.c:2432
static void test_SPI_SETDRAGFULLWINDOWS(void)
Definition: sysparams.c:1398
static void test_SPI_SETPOWEROFFACTIVE(void)
Definition: sysparams.c:2159
static void test_SPI_SETSNAPTODEFBUTTON(void)
Definition: sysparams.c:2198
static void test_SPI_SETWORKAREA(void)
Definition: sysparams.c:1875
static void test_SPI_SETMOUSEHOVERTIME(void)
Definition: sysparams.c:2310
static void test_SPI_SETFASTTASKSWITCH(void)
Definition: sysparams.c:1382
static void test_SPI_ICONVERTICALSPACING(void)
Definition: sysparams.c:1114
static void test_SPI_SETMENUSHOWDELAY(void)
Definition: sysparams.c:2392
static void test_SPI_SETDOUBLECLKWIDTH(void)
Definition: sysparams.c:1220
static void test_SPI_SETMENUDROPALIGNMENT(void)
Definition: sysparams.c:1180
static void test_SPI_ICONHORIZONTALSPACING(void)
Definition: sysparams.c:945
static void test_SPI_SETGRIDGRANULARITY(void)
Definition: sysparams.c:1037
static void test_SPI_SETDOUBLECLKHEIGHT(void)
Definition: sysparams.c:1254
static void test_SPI_SETSCREENSAVETIMEOUT(void)
Definition: sysparams.c:964
static void test_SPI_SETNONCLIENTMETRICS(void)
Definition: sysparams.c:1504
static void test_SPI_SETMOUSEHOVERHEIGHT(void)
Definition: sysparams.c:2272

Referenced by START_TEST().

◆ test_AreDpiAwarenessContextsEqual()

static void test_AreDpiAwarenessContextsEqual ( void  )
static

Definition at line 4157 of file sysparams.c.

4158{
4159 BOOL ret;
4160
4161 if (!pAreDpiAwarenessContextsEqual)
4162 {
4163 win_skip( "AreDpiAwarenessContextsEqual missing, skipping tests\n" );
4164 return;
4165 }
4166
4167 ret = pAreDpiAwarenessContextsEqual( 0, 0 );
4168 ok( !ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4169
4170 ret = pAreDpiAwarenessContextsEqual( (DPI_AWARENESS_CONTEXT)0x12, (DPI_AWARENESS_CONTEXT)0x12 );
4171 ok( ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4172 ret = pAreDpiAwarenessContextsEqual( (DPI_AWARENESS_CONTEXT)0x22, (DPI_AWARENESS_CONTEXT)0x22 );
4173 ok( ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4174 ret = pAreDpiAwarenessContextsEqual( (DPI_AWARENESS_CONTEXT)0x6010, (DPI_AWARENESS_CONTEXT)0x6010 );
4175 ok( ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4176 ret = pAreDpiAwarenessContextsEqual( (DPI_AWARENESS_CONTEXT)0x6011, (DPI_AWARENESS_CONTEXT)0x6011 );
4177 ok( ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4178 ret = pAreDpiAwarenessContextsEqual( (DPI_AWARENESS_CONTEXT)0x6111, (DPI_AWARENESS_CONTEXT)0x6111 );
4179 ok( ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4180 ret = pAreDpiAwarenessContextsEqual( (DPI_AWARENESS_CONTEXT)0x7811, (DPI_AWARENESS_CONTEXT)0x7811 );
4181 ok( ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4182 ret = pAreDpiAwarenessContextsEqual( (DPI_AWARENESS_CONTEXT)0x40006010, (DPI_AWARENESS_CONTEXT)0x40006010 );
4183 ok( ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4184
4185 ret = pAreDpiAwarenessContextsEqual( DPI_AWARENESS_CONTEXT_UNAWARE, DPI_AWARENESS_CONTEXT_UNAWARE );
4186 ok( ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4188 ok( ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4190 ok( ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4192 ok( ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4194 ok( ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4195
4196 ret = pAreDpiAwarenessContextsEqual( DPI_AWARENESS_CONTEXT_UNAWARE, (DPI_AWARENESS_CONTEXT)0x6010 );
4197 ok( ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4198 ret = pAreDpiAwarenessContextsEqual( (DPI_AWARENESS_CONTEXT)0x6010, DPI_AWARENESS_CONTEXT_UNAWARE );
4199 ok( ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4200 ret = pAreDpiAwarenessContextsEqual( DPI_AWARENESS_CONTEXT_UNAWARE, (DPI_AWARENESS_CONTEXT)0x10 );
4201 ok( !ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4202
4203 ret = pAreDpiAwarenessContextsEqual( DPI_AWARENESS_CONTEXT_SYSTEM_AWARE, (DPI_AWARENESS_CONTEXT)((UINT_PTR)0x11 | (real_dpi << 8)) );
4204 ok( ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4205 ret = pAreDpiAwarenessContextsEqual( (DPI_AWARENESS_CONTEXT)((UINT_PTR)0x11 | (real_dpi << 8)), DPI_AWARENESS_CONTEXT_SYSTEM_AWARE );
4206 ok( ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4207 ret = pAreDpiAwarenessContextsEqual( DPI_AWARENESS_CONTEXT_SYSTEM_AWARE, (DPI_AWARENESS_CONTEXT)0x11 );
4208 ok( !ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4209
4210 ret = pAreDpiAwarenessContextsEqual( DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE, (DPI_AWARENESS_CONTEXT)0x12 );
4211 ok( ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4212 ret = pAreDpiAwarenessContextsEqual( (DPI_AWARENESS_CONTEXT)0x12, DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE );
4213 ok( ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4214 ret = pAreDpiAwarenessContextsEqual( DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2, (DPI_AWARENESS_CONTEXT)0x22 );
4215 ok( ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4216 ret = pAreDpiAwarenessContextsEqual( (DPI_AWARENESS_CONTEXT)0x22, DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 );
4217 ok( ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4218 ret = pAreDpiAwarenessContextsEqual( DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED, (DPI_AWARENESS_CONTEXT)0x40006010 );
4219 ok( ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4220 ret = pAreDpiAwarenessContextsEqual( (DPI_AWARENESS_CONTEXT)0x40006010, DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED );
4221 ok( ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4222 ret = pAreDpiAwarenessContextsEqual( DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED, (DPI_AWARENESS_CONTEXT)0x40000010 );
4223 ok( !ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4224
4225 ret = pAreDpiAwarenessContextsEqual( (DPI_AWARENESS_CONTEXT)0x10, (DPI_AWARENESS_CONTEXT)0x6010 );
4226 ok( !ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4227 ret = pAreDpiAwarenessContextsEqual( (DPI_AWARENESS_CONTEXT)0x11, (DPI_AWARENESS_CONTEXT)0x6011 );
4228 ok( !ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4229 ret = pAreDpiAwarenessContextsEqual( (DPI_AWARENESS_CONTEXT)0x12, (DPI_AWARENESS_CONTEXT)0x6012 );
4230 ok( !ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4231 ret = pAreDpiAwarenessContextsEqual( (DPI_AWARENESS_CONTEXT)0x22, (DPI_AWARENESS_CONTEXT)0x6022 );
4232 ok( !ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4233 ret = pAreDpiAwarenessContextsEqual( (DPI_AWARENESS_CONTEXT)0x20006010, (DPI_AWARENESS_CONTEXT)0x6010 );
4234 ok( !ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4235 ret = pAreDpiAwarenessContextsEqual( (DPI_AWARENESS_CONTEXT)0x40006010, (DPI_AWARENESS_CONTEXT)0x6010 );
4236 ok( !ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4237 ret = pAreDpiAwarenessContextsEqual( (DPI_AWARENESS_CONTEXT)0x80006010, (DPI_AWARENESS_CONTEXT)0x6010 );
4238 ok( ret, "AreDpiAwarenessContextsEqual returned %u\n", ret );
4239}
#define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2
Definition: windef.h:90
#define DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED
Definition: windef.h:91

Referenced by START_TEST().

◆ test_change_message()

static void test_change_message ( int  action,
int  optional 
)
static

Definition at line 291 of file sysparams.c.

292{
294 if (change_counter==0 && optional==1)
295 return;
296 ok( change_counter >= 1, "Missed a message: change_counter=%d\n", change_counter );
297 change_counter = 0;
298#ifdef __REACTOS__
299 ok( action == change_last_param || broken(action == SPI_SETBORDER) || broken(action == SPI_SETNONCLIENTMETRICS), "Wrong action got %d expected %d\n", change_last_param, action );
300#else
301 ok( action == change_last_param, "Wrong action got %d expected %d\n", change_last_param, action );
302#endif
304}
action
Definition: namespace.c:707

Referenced by dotest_spi_iconhorizontalspacing(), dotest_spi_iconverticalspacing(), run_spi_setmouse_test(), test_setborder(), test_SPI_SETBEEP(), test_SPI_SETBORDER(), test_SPI_SETDOUBLECLICKTIME(), test_SPI_SETDOUBLECLKHEIGHT(), test_SPI_SETDOUBLECLKWIDTH(), test_SPI_SETDRAGFULLWINDOWS(), test_SPI_SETFONTSMOOTHING(), test_SPI_SETICONTITLEWRAP(), test_SPI_SETKEYBOARDDELAY(), test_SPI_SETKEYBOARDPREF(), test_SPI_SETKEYBOARDSPEED(), test_SPI_SETLOWPOWERACTIVE(), test_SPI_SETMENUDROPALIGNMENT(), test_SPI_SETMENUSHOWDELAY(), test_SPI_SETMOUSEBUTTONSWAP(), test_SPI_SETMOUSEHOVERHEIGHT(), test_SPI_SETMOUSEHOVERTIME(), test_SPI_SETMOUSEHOVERWIDTH(), test_SPI_SETNONCLIENTMETRICS(), test_SPI_SETPOWEROFFACTIVE(), test_SPI_SETSCREENREADER(), test_SPI_SETSCREENSAVEACTIVE(), test_SPI_SETSCREENSAVETIMEOUT(), test_SPI_SETSHOWSOUNDS(), test_SPI_SETSNAPTODEFBUTTON(), test_SPI_SETWALLPAPER(), test_SPI_SETWHEELSCROLLCHARS(), test_SPI_SETWHEELSCROLLLINES(), and test_SPI_SETWORKAREA().

◆ test_dpi_aware()

static void test_dpi_aware ( void  )
static

Definition at line 3796 of file sysparams.c.

3797{
3798 BOOL ret;
3799
3800 if (!pIsProcessDPIAware)
3801 {
3802 win_skip("IsProcessDPIAware not available\n");
3803 return;
3804 }
3805
3806 ret = pSetProcessDPIAware();
3807 ok(ret, "got %d\n", ret);
3808
3809 ret = pIsProcessDPIAware();
3810 ok(ret, "got %d\n", ret);
3811
3812 dpi = real_dpi;
3815 test_metrics_for_dpi( 192 );
3816}

Referenced by START_TEST().

◆ test_dpi_context()

static void test_dpi_context ( void  )
static

Definition at line 4287 of file sysparams.c.

4288{
4289 DPI_AWARENESS awareness;
4291 BOOL ret;
4292 UINT dpi;
4293 HDC hdc = GetDC( 0 );
4294
4295 context = pGetThreadDpiAwarenessContext();
4296 ok( context == (DPI_AWARENESS_CONTEXT)0x6010, "wrong context %p\n", context );
4297 awareness = pGetAwarenessFromDpiAwarenessContext( context );
4298 ok( awareness == DPI_AWARENESS_UNAWARE, "wrong awareness %u\n", awareness );
4299 ok( !pIsProcessDPIAware(), "already aware\n" );
4300 dpi = pGetDpiForSystem();
4302 ok( dpi == USER_DEFAULT_SCREEN_DPI, "wrong dpi %u\n", dpi );
4305 ok( dpi == USER_DEFAULT_SCREEN_DPI, "wrong dpi %u\n", dpi );
4306 SetLastError( 0xdeadbeef );
4307 ret = pSetProcessDpiAwarenessContext( NULL );
4308 ok( !ret, "got %d\n", ret );
4309 ok( GetLastError() == ERROR_INVALID_PARAMETER, "wrong error %lu\n", GetLastError() );
4310 SetLastError( 0xdeadbeef );
4311 ret = pSetProcessDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)-6 );
4312 ok( !ret, "got %d\n", ret );
4313 ok( GetLastError() == ERROR_INVALID_PARAMETER, "wrong error %lu\n", GetLastError() );
4314 ret = pSetProcessDpiAwarenessContext( DPI_AWARENESS_CONTEXT_SYSTEM_AWARE );
4315 ok( ret, "got %d\n", ret );
4316 ok( pIsProcessDPIAware(), "not aware\n" );
4317 real_dpi = pGetDpiForSystem();
4318 SetLastError( 0xdeadbeef );
4319 ret = pSetProcessDpiAwarenessContext( DPI_AWARENESS_CONTEXT_SYSTEM_AWARE );
4320 ok( !ret, "got %d\n", ret );
4321 ok( GetLastError() == ERROR_ACCESS_DENIED, "wrong error %lu\n", GetLastError() );
4322 SetLastError( 0xdeadbeef );
4323 ret = pSetProcessDpiAwarenessContext( DPI_AWARENESS_CONTEXT_UNAWARE );
4324 ok( !ret, "got %d\n", ret );
4325 ok( GetLastError() == ERROR_ACCESS_DENIED, "wrong error %lu\n", GetLastError() );
4326
4327 ret = pSetProcessDpiAwarenessInternal( DPI_AWARENESS_INVALID );
4328 ok( !ret, "got %d\n", ret );
4329 ok( GetLastError() == ERROR_INVALID_PARAMETER, "wrong error %lu\n", GetLastError() );
4330 ret = pSetProcessDpiAwarenessInternal( DPI_AWARENESS_UNAWARE );
4331 ok( !ret, "got %d\n", ret );
4332 ok( GetLastError() == ERROR_ACCESS_DENIED, "wrong error %lu\n", GetLastError() );
4333 ret = pGetProcessDpiAwarenessInternal( 0, &awareness );
4334 ok( ret, "got %d\n", ret );
4335 ok( awareness == DPI_AWARENESS_SYSTEM_AWARE, "wrong value %d\n", awareness );
4336 ret = pGetProcessDpiAwarenessInternal( GetCurrentProcess(), &awareness );
4337 ok( ret, "got %d\n", ret );
4338 ok( awareness == DPI_AWARENESS_SYSTEM_AWARE, "wrong value %d\n", awareness );
4339 SetLastError(0xdeadbeef);
4340 ret = pGetProcessDpiAwarenessInternal( (HANDLE)0xdeadbeef, &awareness );
4341 todo_wine
4342 ok( !ret || broken(ret) /* <= win10 1709 */, "got %d\n", ret );
4343 if (!ret)
4344 {
4345 ok( GetLastError() == ERROR_INVALID_PARAMETER, "got %lu\n", GetLastError() );
4346 ok( awareness == DPI_AWARENESS_INVALID, "wrong value %d\n", awareness );
4347 }
4348 else ok( awareness == DPI_AWARENESS_UNAWARE, "wrong value %d\n", awareness );
4349
4350 ret = pIsProcessDPIAware();
4351 ok(ret, "got %d\n", ret);
4352 context = pGetThreadDpiAwarenessContext();
4353 ok( context == (DPI_AWARENESS_CONTEXT)0x6011, "wrong context %p\n", context );
4354 awareness = pGetAwarenessFromDpiAwarenessContext( context );
4355 ok( awareness == DPI_AWARENESS_SYSTEM_AWARE, "wrong awareness %u\n", awareness );
4356 SetLastError( 0xdeadbeef );
4357 context = pSetThreadDpiAwarenessContext( 0 );
4358 ok( !context, "got %p\n", context );
4359 ok( GetLastError() == ERROR_INVALID_PARAMETER, "wrong error %lu\n", GetLastError() );
4360 SetLastError( 0xdeadbeef );
4361 context = pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)-6 );
4362 ok( !context, "got %p\n", context );
4363 ok( GetLastError() == ERROR_INVALID_PARAMETER, "wrong error %lu\n", GetLastError() );
4364 context = pSetThreadDpiAwarenessContext( DPI_AWARENESS_CONTEXT_UNAWARE );
4365 ok( context == (DPI_AWARENESS_CONTEXT)0x80006011, "wrong context %p\n", context );
4366 awareness = pGetAwarenessFromDpiAwarenessContext( context );
4367 ok( awareness == DPI_AWARENESS_SYSTEM_AWARE, "wrong awareness %u\n", awareness );
4368 dpi = pGetDpiForSystem();
4369 ok( dpi == USER_DEFAULT_SCREEN_DPI, "wrong dpi %u\n", dpi );
4371 ok( dpi == USER_DEFAULT_SCREEN_DPI, "wrong dpi %u\n", dpi );
4372 ok( !pIsProcessDPIAware(), "still aware\n" );
4373 context = pGetThreadDpiAwarenessContext();
4374 ok( context == (DPI_AWARENESS_CONTEXT)0x6010, "wrong context %p\n", context );
4375 awareness = pGetAwarenessFromDpiAwarenessContext( context );
4376 ok( awareness == DPI_AWARENESS_UNAWARE, "wrong awareness %u\n", awareness );
4377 context = pSetThreadDpiAwarenessContext( DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE );
4378 ok( context == (DPI_AWARENESS_CONTEXT)0x6010, "wrong context %p\n", context );
4379 awareness = pGetAwarenessFromDpiAwarenessContext( context );
4380 ok( awareness == DPI_AWARENESS_UNAWARE, "wrong awareness %u\n", awareness );
4381 dpi = pGetDpiForSystem();
4382 ok( dpi == real_dpi, "wrong dpi %u/%u\n", dpi, real_dpi );
4384 ok( dpi == real_dpi, "wrong dpi %u\n", dpi );
4385 context = pGetThreadDpiAwarenessContext();
4386 ok( context == (DPI_AWARENESS_CONTEXT)0x12, "wrong context %p\n", context );
4387 awareness = pGetAwarenessFromDpiAwarenessContext( context );
4388 ok( awareness == DPI_AWARENESS_PER_MONITOR_AWARE, "wrong awareness %u\n", awareness );
4389 context = pSetThreadDpiAwarenessContext( DPI_AWARENESS_CONTEXT_SYSTEM_AWARE );
4390 ok( context == (DPI_AWARENESS_CONTEXT)0x12, "wrong context %p\n", context );
4391 awareness = pGetAwarenessFromDpiAwarenessContext( context );
4392 ok( awareness == DPI_AWARENESS_PER_MONITOR_AWARE, "wrong awareness %u\n", awareness );
4393 dpi = pGetDpiForSystem();
4394 ok( dpi == real_dpi, "wrong dpi %u/%u\n", dpi, real_dpi );
4396 ok( dpi == real_dpi, "wrong dpi %u\n", dpi );
4397 ok( pIsProcessDPIAware(), "not aware\n" );
4398 context = pGetThreadDpiAwarenessContext();
4399 ok( context == (DPI_AWARENESS_CONTEXT)0x6011, "wrong context %p\n", context );
4400 context = pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x80006010 );
4401 ok( context == (DPI_AWARENESS_CONTEXT)0x6011, "wrong context %p\n", context );
4402 context = pGetThreadDpiAwarenessContext();
4403 ok( context == (DPI_AWARENESS_CONTEXT)0x6011, "wrong context %p\n", context );
4404 context = pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x80006011 );
4405 ok( context == (DPI_AWARENESS_CONTEXT)0x80006011, "wrong context %p\n", context );
4406 context = pGetThreadDpiAwarenessContext();
4407 ok( context == (DPI_AWARENESS_CONTEXT)0x6011, "wrong context %p\n", context );
4408 context = pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x12 );
4409 ok( context == (DPI_AWARENESS_CONTEXT)0x80006011, "wrong context %p\n", context );
4410 context = pSetThreadDpiAwarenessContext( context );
4411 ok( context == (DPI_AWARENESS_CONTEXT)0x12, "wrong context %p\n", context );
4412 context = pGetThreadDpiAwarenessContext();
4413 ok( context == (DPI_AWARENESS_CONTEXT)0x6011, "wrong context %p\n", context );
4414
4416 ReleaseDC( 0, hdc );
4417}
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define GetCurrentProcess()
Definition: compat.h:759
#define ERROR_ACCESS_DENIED
Definition: compat.h:97
#define todo_wine_if(is_todo)
Definition: minitest.h:81
#define todo_wine
Definition: minitest.h:80
static void test_dpi_stock_objects(HDC hdc)
Definition: sysparams.c:3417
unsigned int UINT
Definition: ndis.h:50
Definition: http.c:7252
DPI_AWARENESS
Definition: windef.h:80
@ DPI_AWARENESS_PER_MONITOR_AWARE
Definition: windef.h:84
@ DPI_AWARENESS_SYSTEM_AWARE
Definition: windef.h:83
@ DPI_AWARENESS_INVALID
Definition: windef.h:81
#define LOGPIXELSX
Definition: wingdi.h:718

Referenced by START_TEST().

◆ test_dpi_mapping()

static void test_dpi_mapping ( void  )
static

Definition at line 3491 of file sysparams.c.

3492{
3493 HWND hwnd, child;
3494 HDC hdc;
3495 UINT win_dpi, units;
3496 POINT point;
3497 BOOL ret;
3498 HRGN rgn, update;
3499 RECT rect, orig, client, desktop, expect;
3500 ULONG_PTR i, j, k;
3501 WINDOWPLACEMENT wpl_orig, wpl;
3502 HMONITOR monitor;
3504 MONITORINFO mon_info;
3506
3507 if (!pLogicalToPhysicalPointForPerMonitorDPI)
3508 {
3509 win_skip( "LogicalToPhysicalPointForPerMonitorDPI not supported\n" );
3510 return;
3511 }
3512 context = pSetThreadDpiAwarenessContext( DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE );
3513 GetWindowRect( GetDesktopWindow(), &desktop );
3516 {
3517 pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)~i );
3518 /* test desktop rect */
3520 expect = desktop;
3522 ok( EqualRect( &expect, &rect ), "%Iu: wrong desktop rect %s expected %s\n",
3525 ok( EqualRect( &expect, &rect ), "%Iu: wrong desktop rect %s expected %s\n",
3527 if (monitor_count < 2)
3528 {
3530 ok( EqualRect( &expect, &rect ), "%Iu: wrong virt desktop rect %s expected %s\n",
3532 }
3533 SetRect( &rect, 0, 0, 1, 1 );
3534 monitor = MonitorFromRect( &rect, MONITOR_DEFAULTTOPRIMARY );
3535 ok( monitor != 0, "failed to get monitor\n" );
3536 mon_info.cbSize = sizeof(mon_info);
3537 ok( GetMonitorInfoW( monitor, &mon_info ), "GetMonitorInfoExW failed\n" );
3538 ok( EqualRect( &expect, &mon_info.rcMonitor ), "%Iu: wrong monitor rect %s expected %s\n",
3540 hdc = CreateDCA( "display", NULL, NULL, NULL );
3542 ok( EqualRect( &expect, &rect ), "%Iu: wrong caps desktop rect %s expected %s\n",
3546 ok( EqualRect( &desktop, &rect ), "%Iu: wrong caps virt desktop rect %s expected %s\n",
3547 i, wine_dbgstr_rect(&rect), wine_dbgstr_rect(&desktop) );
3548 DeleteDC( hdc );
3549 /* test message window rect */
3550 hwnd = CreateWindowA( "SysParamsTestClass", "test", WS_CHILD,
3551 10, 10, 20, 20, HWND_MESSAGE, 0, GetModuleHandleA(0), NULL );
3553 SetRect( &expect, 0, 0, 100, 100 );
3555 ok( EqualRect( &expect, &rect ), "%Iu: wrong message rect %s expected %s\n",
3558 }
3560 {
3561 pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)~i );
3562 hwnd = CreateWindowA( "SysParamsTestClass", "test", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
3563 193, 177, 295, 303, 0, 0, GetModuleHandleA(0), NULL );
3564 ok( hwnd != 0, "creating window failed err %lu\n", GetLastError());
3565 child = CreateWindowA( "SysParamsTestClass", "child", WS_CHILD | WS_VISIBLE,
3566 50, 60, 70, 80, hwnd, 0, GetModuleHandleA(0), NULL );
3567 ok( child != 0, "creating child failed err %lu\n", GetLastError());
3568 GetWindowRect( hwnd, &orig );
3569 SetRect( &rect, 0, 0, 0, 0 );
3570 pAdjustWindowRectExForDpi( &rect, WS_OVERLAPPEDWINDOW, FALSE, 0, pGetDpiForWindow( hwnd ));
3571 SetRect( &client, orig.left - rect.left, orig.top - rect.top,
3572 orig.right - rect.right, orig.bottom - rect.bottom );
3575 GetWindowPlacement( hwnd, &wpl_orig );
3577
3579 {
3580 pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)~j );
3581 /* test window rect */
3582 GetWindowRect( hwnd, &rect );
3583 expect = orig;
3585 ok( EqualRect( &expect, &rect ), "%Iu/%Iu: wrong window rect %s expected %s\n",
3587 /* test client rect */
3588 GetClientRect( hwnd, &rect );
3589 expect = client;
3590 OffsetRect( &expect, -expect.left, -expect.top );
3592 ok( EqualRect( &expect, &rect ), "%Iu/%Iu: wrong client rect %s expected %s\n",
3594 /* test window placement */
3595 GetWindowPlacement( hwnd, &wpl );
3596 point = wpl_orig.ptMinPosition;
3597 if (point.x != -1 || point.y != -1) scale_point_dpi_aware( &point, i, j );
3598 ok( wpl.ptMinPosition.x == point.x && wpl.ptMinPosition.y == point.y,
3599 "%Iu/%Iu: wrong placement min pos %ld,%ld expected %ld,%ld\n", i, j,
3600 wpl.ptMinPosition.x, wpl.ptMinPosition.y, point.x, point.y );
3601 point = wpl_orig.ptMaxPosition;
3602 if (point.x != -1 || point.y != -1) scale_point_dpi_aware( &point, i, j );
3603 ok( wpl.ptMaxPosition.x == point.x && wpl.ptMaxPosition.y == point.y,
3604 "%Iu/%Iu: wrong placement max pos %ld,%ld expected %ld,%ld\n", i, j,
3605 wpl.ptMaxPosition.x, wpl.ptMaxPosition.y, point.x, point.y );
3606 expect = wpl_orig.rcNormalPosition;
3609 "%Iu/%Iu: wrong placement rect %s expect %s\n", i, j,
3611 /* test DC rect */
3612 hdc = GetDC( hwnd );
3613 GetClipBox( hdc, &rect );
3614 SetRect( &expect, 0, 0, client.right - client.left, client.bottom - client.top );
3615 ok( EqualRect( &expect, &rect ), "%Iu/%Iu: wrong clip box %s expected %s\n",
3617 /* test DC resolution */
3619 expect = desktop;
3621 ok( EqualRect( &expect, &rect ), "%Iu/%Iu: wrong DC resolution %s expected %s\n",
3625 ok( EqualRect( &desktop, &rect ), "%Iu/%Iu: wrong desktop resolution %s expected %s\n",
3626 i, j, wine_dbgstr_rect(&rect), wine_dbgstr_rect(&desktop) );
3627 ReleaseDC( hwnd, hdc );
3628 /* test DC win rect */
3629 hdc = GetWindowDC( hwnd );
3630 GetClipBox( hdc, &rect );
3631 SetRect( &expect, 0, 0, 295, 303 );
3632 todo_wine
3633 ok( EqualRect( &expect, &rect ), "%Iu/%Iu: wrong clip box win DC %s expected %s\n",
3635 ReleaseDC( hwnd, hdc );
3636 /* test window invalidation */
3637 UpdateWindow( hwnd );
3638 update = CreateRectRgn( 0, 0, 0, 0 );
3639 ret = GetUpdateRgn( hwnd, update, FALSE );
3640 ok( ret == NULLREGION, "update region not empty\n" );
3641 rgn = CreateRectRgn( 20, 20, 25, 25 );
3643 {
3644 pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)~k );
3645 RedrawWindow( hwnd, 0, rgn, RDW_INVALIDATE );
3646 pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)~j );
3647 GetUpdateRgn( hwnd, update, FALSE );
3648 GetRgnBox( update, &rect );
3649 SetRect( &expect, 20, 20, 25, 25 );
3650 ok( EqualRect( &expect, &rect ), "%Iu/%Iu/%Iu: wrong update region %s expected %s\n",
3654 ok( EqualRect( &expect, &rect ), "%Iu/%Iu/%Iu: wrong update rect %s expected %s\n",
3656 UpdateWindow( hwnd );
3657 }
3659 {
3660 RedrawWindow( hwnd, 0, rgn, RDW_INVALIDATE );
3661 pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)~k );
3662 GetUpdateRgn( hwnd, update, FALSE );
3663 pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)~j );
3664 GetRgnBox( update, &rect );
3665 SetRect( &expect, 20, 20, 25, 25 );
3666 ok( EqualRect( &expect, &rect ), "%Iu/%Iu/%Iu: wrong update region %s expected %s\n",
3670 ok( EqualRect( &expect, &rect ), "%Iu/%Iu/%Iu: wrong update rect %s expected %s\n",
3672 UpdateWindow( hwnd );
3673 }
3674 /* test desktop window invalidation */
3675 pSetThreadDpiAwarenessContext( DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE );
3676 GetClientRect( hwnd, &rect );
3677 InflateRect( &rect, -50, -50 );
3678 expect = rect;
3679 MapWindowPoints( hwnd, 0, (POINT *)&rect, 2 );
3680 pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)~j );
3682 GetUpdateRgn( hwnd, update, TRUE );
3683 GetRgnBox( update, &rect );
3685 ok( EqualRect( &expect, &rect ), "%Iu/%Iu: wrong update region %s expected %s\n",
3689 ok( EqualRect( &expect, &rect ), "%Iu/%Iu: wrong update rect %s expected %s\n",
3691 UpdateWindow( hwnd );
3692 DeleteObject( update );
3693 /* test dialog units */
3695 point.x = LOWORD( units );
3696 point.y = HIWORD( units );
3698 ok( LOWORD(ret) == point.x && HIWORD(ret) == point.y, "%Iu/%Iu: wrong units %d,%d / %ld,%ld\n",
3699 i, j, LOWORD(ret), HIWORD(ret), point.x, point.y );
3700 /* test window points mapping */
3701 SetRect( &rect, 0, 0, 100, 100 );
3702 rect.right = rect.left + 100;
3703 rect.bottom = rect.top + 100;
3704 MapWindowPoints( hwnd, 0, (POINT *)&rect, 2 );
3705 expect = client;
3707 expect.right = expect.left + 100;
3708 expect.bottom = expect.top + 100;
3709 ok( EqualRect( &expect, &rect ), "%Iu/%Iu: wrong MapWindowPoints rect %s expected %s\n",
3711 SetRect( &rect, 50, 60, 70, 80 );
3713 SetRect( &expect, 40, 30, 60, 80 );
3714 OffsetRect( &expect, -rect.left, -rect.top );
3715 SetRect( &rect, 40, 30, 60, 80 );
3716 MapWindowPoints( hwnd, child, (POINT *)&rect, 2 );
3717 ok( EqualRect( &expect, &rect ), "%Iu/%Iu: wrong MapWindowPoints child rect %s expected %s\n",
3719 /* test logical<->physical coords mapping */
3720 win_dpi = pGetDpiForWindow( hwnd );
3721 if (i == DPI_AWARENESS_UNAWARE)
3722 ok( win_dpi == USER_DEFAULT_SCREEN_DPI, "wrong dpi %u\n", win_dpi );
3723 else if (i == DPI_AWARENESS_SYSTEM_AWARE)
3724 ok( win_dpi == real_dpi, "wrong dpi %u / %u\n", win_dpi, real_dpi );
3725 point.x = 373;
3726 point.y = 377;
3727 ret = pLogicalToPhysicalPointForPerMonitorDPI( hwnd, &point );
3728 ok( ret, "%Iu/%Iu: LogicalToPhysicalPointForPerMonitorDPI failed\n", i, j );
3729 ok( point.x == MulDiv( 373, real_dpi, win_dpi ) &&
3730 point.y == MulDiv( 377, real_dpi, win_dpi ),
3731 "%Iu/%Iu: wrong pos %ld,%ld dpi %u\n", i, j, point.x, point.y, win_dpi );
3732 point.x = 405;
3733 point.y = 423;
3734 ret = pPhysicalToLogicalPointForPerMonitorDPI( hwnd, &point );
3735 ok( ret, "%Iu/%Iu: PhysicalToLogicalPointForPerMonitorDPI failed\n", i, j );
3736 ok( point.x == MulDiv( 405, win_dpi, real_dpi ) &&
3737 point.y == MulDiv( 423, win_dpi, real_dpi ),
3738 "%Iu/%Iu: wrong pos %ld,%ld dpi %u\n", i, j, point.x, point.y, win_dpi );
3739 /* point outside the window fails, but note that Windows (wrongly) checks against the
3740 * window rect transformed relative to the thread's awareness */
3741 GetWindowRect( hwnd, &rect );
3742 point.x = rect.left - 1;
3743 point.y = rect.top;
3744 ret = pLogicalToPhysicalPointForPerMonitorDPI( hwnd, &point );
3745 ok( !ret, "%Iu/%Iu: LogicalToPhysicalPointForPerMonitorDPI succeeded\n", i, j );
3746 point.x++;
3747 point.y--;
3748 ret = pLogicalToPhysicalPointForPerMonitorDPI( hwnd, &point );
3749 ok( !ret, "%Iu/%Iu: LogicalToPhysicalPointForPerMonitorDPI succeeded\n", i, j );
3750 point.y++;
3751 ret = pLogicalToPhysicalPointForPerMonitorDPI( hwnd, &point );
3752 ok( ret, "%Iu/%Iu: LogicalToPhysicalPointForPerMonitorDPI failed\n", i, j );
3753 point.x = rect.right;
3754 point.y = rect.bottom + 1;
3755 ret = pLogicalToPhysicalPointForPerMonitorDPI( hwnd, &point );
3756 ok( !ret, "%Iu/%Iu: LogicalToPhysicalPointForPerMonitorDPI succeeded\n", i, j );
3757 point.x++;
3758 point.y--;
3759 ret = pLogicalToPhysicalPointForPerMonitorDPI( hwnd, &point );
3760 ok( !ret, "%Iu/%Iu: LogicalToPhysicalPointForPerMonitorDPI succeeded\n", i, j );
3761 point.x--;
3762 ret = pLogicalToPhysicalPointForPerMonitorDPI( hwnd, &point );
3763 ok( ret, "%Iu/%Iu: LogicalToPhysicalPointForPerMonitorDPI failed\n", i, j );
3764 /* get physical window rect */
3765 pSetThreadDpiAwarenessContext( DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE );
3766 GetWindowRect( hwnd, &rect );
3767 pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)~j );
3768 point.x = rect.left - 1;
3769 point.y = rect.top;
3770 ret = pPhysicalToLogicalPointForPerMonitorDPI( hwnd, &point );
3771 ok( !ret, "%Iu/%Iu: PhysicalToLogicalPointForPerMonitorDPI succeeded\n", i, j );
3772 point.x++;
3773 point.y--;
3774 ret = pPhysicalToLogicalPointForPerMonitorDPI( hwnd, &point );
3775 ok( !ret, "%Iu/%Iu: PhysicalToLogicalPointForPerMonitorDPI succeeded\n", i, j );
3776 point.y++;
3777 ret = pPhysicalToLogicalPointForPerMonitorDPI( hwnd, &point );
3778 ok( ret, "%Iu/%Iu: PhysicalToLogicalPointForPerMonitorDPI failed\n", i, j );
3779 point.x = rect.right;
3780 point.y = rect.bottom + 1;
3781 ret = pPhysicalToLogicalPointForPerMonitorDPI( hwnd, &point );
3782 ok( !ret, "%Iu/%Iu: PhysicalToLogicalPointForPerMonitorDPI succeeded\n", i, j );
3783 point.x++;
3784 point.y--;
3785 ret = pPhysicalToLogicalPointForPerMonitorDPI( hwnd, &point );
3786 ok( !ret, "%Iu/%Iu: PhysicalToLogicalPointForPerMonitorDPI succeeded\n", i, j );
3787 point.x--;
3788 ret = pPhysicalToLogicalPointForPerMonitorDPI( hwnd, &point );
3789 ok( ret, "%Iu/%Iu: PhysicalToLogicalPointForPerMonitorDPI failed\n", i, j );
3790 }
3792 }
3793 pSetThreadDpiAwarenessContext( context );
3794}
#define expect(EXPECTED, GOT)
Definition: SystemMenu.c:483
static const char * wine_dbgstr_rect(const RECT *prc)
Definition: atltest.h:160
static const WCHAR empty[1]
Definition: string.c:47
POINTL point
Definition: edittest.c:50
GLdouble s
Definition: gl.h:2039
GLdouble n
Definition: glext.h:7729
GLfloat units
Definition: glext.h:11727
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
static real win[4][36]
if(dx< 0)
Definition: linetemp.h:194
#define for
Definition: utility.h:88
BOOL expected
Definition: store.c:2000
static int monitor_count
Definition: service.c:38
static HWND child
Definition: cursoricon.c:298
static void scale_point_dpi_aware(POINT *pt, DPI_AWARENESS from, DPI_AWARENESS to)
Definition: sysparams.c:3475
static void scale_rect_dpi_aware(RECT *rect, DPI_AWARENESS from, DPI_AWARENESS to)
Definition: sysparams.c:3483
int k
Definition: mpi.c:3369
HMONITOR WINAPI MonitorFromRect(LPCRECT, DWORD)
#define LOWORD(l)
Definition: pedump.c:82
#define WS_CHILD
Definition: pedump.c:617
#define WS_VISIBLE
Definition: pedump.c:620
#define test
Definition: rosglue.h:37
static FILE * client
Definition: client.c:37
Definition: polytest.cpp:41
LONG y
Definition: windef.h:130
LONG x
Definition: windef.h:129
POINT ptMaxPosition
Definition: winuser.h:3402
RECT rcNormalPosition
Definition: winuser.h:3403
POINT ptMinPosition
Definition: winuser.h:3401
Definition: palette.c:466
Definition: tftpd.h:60
RECT rcMonitor
Definition: winuser.h:3893
DWORD cbSize
Definition: winuser.h:3892
LONG right
Definition: windef.h:108
LONG bottom
Definition: windef.h:109
LONG top
Definition: windef.h:107
LONG left
Definition: windef.h:106
uint32_t ULONG_PTR
Definition: typedefs.h:65
#define HIWORD(l)
Definition: typedefs.h:247
#define HORZRES
Definition: wingdi.h:716
int WINAPI GetClipBox(_In_ HDC, _Out_ LPRECT)
HRGN WINAPI CreateRectRgn(_In_ int, _In_ int, _In_ int, _In_ int)
#define NULLREGION
Definition: wingdi.h:361
HDC WINAPI CreateDCA(_In_opt_ LPCSTR pszDriver, _In_opt_ LPCSTR pszDevice, _In_opt_ LPCSTR pszOutput, _In_opt_ const DEVMODEA *pdmInit)
#define VERTRES
Definition: wingdi.h:717
#define DESKTOPHORZRES
Definition: wingdi.h:742
#define DESKTOPVERTRES
Definition: wingdi.h:743
int WINAPI GetRgnBox(_In_ HRGN, _Out_ LPRECT)
#define HWND_MESSAGE
Definition: winuser.h:1221
#define SM_CYVIRTUALSCREEN
Definition: winuser.h:1050
BOOL WINAPI RedrawWindow(_In_opt_ HWND, _In_opt_ LPCRECT, _In_opt_ HRGN, _In_ UINT)
HDC WINAPI GetWindowDC(_In_opt_ HWND)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
#define SM_CYSCREEN
Definition: winuser.h:971
BOOL WINAPI GetWindowPlacement(_In_ HWND, _Inout_ WINDOWPLACEMENT *)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
#define SW_MINIMIZE
Definition: winuser.h:787
#define GA_PARENT
Definition: winuser.h:2892
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
HWND WINAPI GetDesktopWindow(void)
Definition: window.c:628
#define SM_CXVIRTUALSCREEN
Definition: winuser.h:1049
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
#define RDW_ALLCHILDREN
Definition: winuser.h:1232
#define RDW_FRAME
Definition: winuser.h:1223
int WINAPI GetUpdateRgn(_In_ HWND, _In_ HRGN, _In_ BOOL)
BOOL WINAPI UpdateWindow(_In_ HWND)
LONG WINAPI GetDialogBaseUnits(void)
Definition: dialog.c:2144
#define SW_RESTORE
Definition: winuser.h:790
BOOL WINAPI OffsetRect(_Inout_ LPRECT, _In_ int, _In_ int)
#define SM_CXSCREEN
Definition: winuser.h:970
BOOL WINAPI GetMonitorInfoW(_In_ HMONITOR, _Inout_ LPMONITORINFO)
BOOL WINAPI InflateRect(_Inout_ LPRECT, _In_ int, _In_ int)
BOOL WINAPI GetUpdateRect(_In_ HWND, _Out_opt_ LPRECT, _In_ BOOL)
#define SM_CMONITORS
Definition: winuser.h:1051
BOOL WINAPI DestroyWindow(_In_ HWND)
BOOL WINAPI EqualRect(_In_ LPCRECT, _In_ LPCRECT)
HWND WINAPI GetAncestor(_In_ HWND, _In_ UINT)
Definition: window.c:929
#define RDW_INVALIDATE
Definition: winuser.h:1225
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)

Referenced by START_TEST().

◆ test_dpi_stock_objects()

static void test_dpi_stock_objects ( HDC  hdc)
static

Definition at line 3417 of file sysparams.c.

3418{
3420 HGDIOBJ obj[STOCK_LAST + 1], obj2[STOCK_LAST + 1];
3421 LOGFONTW lf, lf2;
3422 UINT i, dpi;
3423
3424 context = pSetThreadDpiAwarenessContext( DPI_AWARENESS_CONTEXT_UNAWARE );
3426 ok( dpi == USER_DEFAULT_SCREEN_DPI, "wrong dpi %u\n", dpi );
3427 ok( !pIsProcessDPIAware(), "not aware\n" );
3428 for (i = 0; i <= STOCK_LAST; i++) obj[i] = GetStockObject( i );
3429
3430 pSetThreadDpiAwarenessContext( DPI_AWARENESS_CONTEXT_SYSTEM_AWARE );
3432 ok( dpi == real_dpi, "wrong dpi %u\n", dpi );
3433 ok( pIsProcessDPIAware(), "not aware\n" );
3434 for (i = 0; i <= STOCK_LAST; i++) obj2[i] = GetStockObject( i );
3435
3436 for (i = 0; i <= STOCK_LAST; i++)
3437 {
3438 switch (i)
3439 {
3440 case OEM_FIXED_FONT:
3441 case SYSTEM_FIXED_FONT:
3442 ok( obj[i] != obj2[i], "%u: same object\n", i );
3443 break;
3444 case SYSTEM_FONT:
3445 case DEFAULT_GUI_FONT:
3446 ok( obj[i] != obj2[i], "%u: same object\n", i );
3447 GetObjectW( obj[i], sizeof(lf), &lf );
3448 GetObjectW( obj2[i], sizeof(lf2), &lf2 );
3450 "%u: wrong height %ld / %ld\n", i, lf.lfHeight, lf2.lfHeight );
3451 break;
3452 default:
3453 ok( obj[i] == obj2[i], "%u: different object\n", i );
3454 break;
3455 }
3456 }
3457
3458 pSetThreadDpiAwarenessContext( context );
3459}
HGDIOBJ WINAPI GetStockObject(_In_ int)
int WINAPI GetObjectW(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
#define STOCK_LAST
Definition: wingdi.h:923
#define DEFAULT_GUI_FONT
Definition: wingdi.h:909
#define SYSTEM_FIXED_FONT
Definition: wingdi.h:912
#define OEM_FIXED_FONT
Definition: wingdi.h:910
#define SYSTEM_FONT
Definition: wingdi.h:911

Referenced by test_dpi_context().

◆ test_dpi_window()

static void test_dpi_window ( void  )
static

Definition at line 4436 of file sysparams.c.

4437{
4439 DPI_AWARENESS awareness;
4440 ULONG_PTR i, j;
4441 UINT dpi;
4442 HWND hwnd, child, ret;
4443 MSG msg = { 0, WM_USER + 1, 0, 0 };
4444
4445 if (!pGetWindowDpiAwarenessContext)
4446 {
4447 win_skip( "GetWindowDpiAwarenessContext not supported\n" );
4448 return;
4449 }
4450 orig = pSetThreadDpiAwarenessContext( DPI_AWARENESS_CONTEXT_UNAWARE );
4452 {
4453 pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)~i );
4454 hwnd = CreateWindowA( "DpiTestClass", "Test",
4455 WS_OVERLAPPEDWINDOW, 0, 0, 100, 100, 0, 0, GetModuleHandleA(0), NULL );
4456 ok( hwnd != 0, "failed to create window\n" );
4457 context = pGetWindowDpiAwarenessContext( hwnd );
4458 awareness = pGetAwarenessFromDpiAwarenessContext( context );
4459 ok( awareness == i, "%Iu: wrong awareness %u\n", i, awareness );
4460 dpi = pGetDpiForWindow( hwnd );
4462 "%Iu: got %u / %u\n", i, dpi, real_dpi );
4463 if (pGetDpiForMonitorInternal)
4464 {
4465 BOOL res;
4466 SetLastError( 0xdeadbeef );
4467 res = pGetDpiForMonitorInternal( MonitorFromWindow( hwnd, 0 ), 0, &dpi, NULL );
4468 ok( !res, "succeeded\n" );
4469 ok( GetLastError() == ERROR_INVALID_ADDRESS, "wrong error %lu\n", GetLastError() );
4470 SetLastError( 0xdeadbeef );
4471 res = pGetDpiForMonitorInternal( MonitorFromWindow( hwnd, 0 ), 3, &dpi, &dpi );
4472 ok( !res, "succeeded\n" );
4473 ok( GetLastError() == ERROR_BAD_ARGUMENTS, "wrong error %lu\n", GetLastError() );
4474 SetLastError( 0xdeadbeef );
4475 res = pGetDpiForMonitorInternal( MonitorFromWindow( hwnd, 0 ), 3, &dpi, NULL );
4476 ok( !res, "succeeded\n" );
4477 ok( GetLastError() == ERROR_BAD_ARGUMENTS, "wrong error %lu\n", GetLastError() );
4478 res = pGetDpiForMonitorInternal( MonitorFromWindow( hwnd, 0 ), 0, &dpi, &dpi );
4479 ok( res, "failed err %lu\n", GetLastError() );
4481 "%Iu: got %u / %u\n", i, dpi, real_dpi );
4482 }
4483 msg.hwnd = hwnd;
4485 {
4486 pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)~j );
4487 SendMessageA( hwnd, WM_USER, 0, 0 );
4489 CallWindowProcA( dpi_winproc, hwnd, WM_USER + 2, 0, 0 );
4490 child = CreateWindowA( "DpiTestClass", "Test",
4491 WS_CHILD, 0, 0, 100, 100, hwnd, 0, GetModuleHandleA(0), NULL );
4492 context = pGetWindowDpiAwarenessContext( child );
4493 awareness = pGetAwarenessFromDpiAwarenessContext( context );
4494 ok( awareness == i, "%Iu/%Iu: wrong awareness %u\n", i, j, awareness );
4495 dpi = pGetDpiForWindow( child );
4497 "%Iu/%Iu: got %u / %u\n", i, j, dpi, real_dpi );
4498 ret = SetParent( child, NULL );
4499 ok( ret != 0, "SetParent failed err %lu\n", GetLastError() );
4500 context = pGetWindowDpiAwarenessContext( child );
4501 awareness = pGetAwarenessFromDpiAwarenessContext( context );
4502 ok( awareness == i, "%Iu/%Iu: wrong awareness %u\n", i, j, awareness );
4503 dpi = pGetDpiForWindow( child );
4505 "%Iu/%Iu: got %u / %u\n", i, j, dpi, real_dpi );
4507 child = CreateWindowA( "DpiTestClass", "Test",
4508 WS_OVERLAPPEDWINDOW, 0, 0, 100, 100, 0, 0, GetModuleHandleA(0), NULL );
4509 context = pGetWindowDpiAwarenessContext( child );
4510 awareness = pGetAwarenessFromDpiAwarenessContext( context );
4511 ok( awareness == j, "%Iu/%Iu: wrong awareness %u\n", i, j, awareness );
4512 dpi = pGetDpiForWindow( child );
4514 "%Iu/%Iu: got %u / %u\n", i, j, dpi, real_dpi );
4515 ret = SetParent( child, hwnd );
4516 ok( ret != 0 || GetLastError() == ERROR_INVALID_STATE,
4517 "SetParent failed err %lu\n", GetLastError() );
4518 context = pGetWindowDpiAwarenessContext( child );
4519 awareness = pGetAwarenessFromDpiAwarenessContext( context );
4520 ok( awareness == (ret ? i : j), "%Iu/%Iu: wrong awareness %u\n", i, j, awareness );
4521 dpi = pGetDpiForWindow( child );
4523 "%Iu/%Iu: got %u / %u\n", i, j, dpi, real_dpi );
4525 }
4527 }
4528
4529 SetLastError( 0xdeadbeef );
4530 context = pGetWindowDpiAwarenessContext( (HWND)0xdeadbeef );
4531 ok( !context, "got %p\n", context );
4532 ok( GetLastError() == ERROR_INVALID_WINDOW_HANDLE, "wrong error %lu\n", GetLastError() );
4533 SetLastError( 0xdeadbeef );
4534 dpi = pGetDpiForWindow( (HWND)0xdeadbeef );
4535 ok( !dpi, "got %u\n", dpi );
4537 "wrong error %lu\n", GetLastError() );
4538
4539 SetLastError( 0xdeadbeef );
4540 context = pGetWindowDpiAwarenessContext( GetDesktopWindow() );
4541 awareness = pGetAwarenessFromDpiAwarenessContext( context );
4542 ok( awareness == DPI_AWARENESS_PER_MONITOR_AWARE, "wrong awareness %u\n", awareness );
4543 dpi = pGetDpiForWindow( GetDesktopWindow() );
4544 ok( dpi == real_dpi, "got %u / %u\n", dpi, real_dpi );
4545
4546 pSetThreadDpiAwarenessContext( DPI_AWARENESS_CONTEXT_UNAWARE );
4547 SetLastError( 0xdeadbeef );
4548 context = pGetWindowDpiAwarenessContext( GetDesktopWindow() );
4549 awareness = pGetAwarenessFromDpiAwarenessContext( context );
4550 ok( awareness == DPI_AWARENESS_PER_MONITOR_AWARE, "wrong awareness %u\n", awareness );
4551 dpi = pGetDpiForWindow( GetDesktopWindow() );
4552 ok( dpi == real_dpi, "got %u / %u\n", dpi, real_dpi );
4553
4554 pSetThreadDpiAwarenessContext( orig );
4555}
#define ERROR_INVALID_ADDRESS
Definition: compat.h:106
GLuint res
Definition: glext.h:9613
HMONITOR WINAPI MonitorFromWindow(HWND, DWORD)
#define ERROR_INVALID_WINDOW_HANDLE
Definition: winerror.h:1226
#define ERROR_INVALID_STATE
Definition: winerror.h:1799
#define ERROR_BAD_ARGUMENTS
Definition: winerror.h:354
HWND WINAPI SetParent(_In_ HWND, _In_opt_ HWND)
#define WM_USER
Definition: winuser.h:1923
LRESULT WINAPI CallWindowProcA(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)

Referenced by START_TEST().

◆ test_enum_display_settings()

static BOOL CALLBACK test_enum_display_settings ( HMONITOR  hmonitor,
HDC  hdc,
LPRECT  rect,
LPARAM  lparam 
)
static

Definition at line 3148 of file sysparams.c.

3149{
3150 INT width, height;
3152 DEVMODEA dm;
3153 BOOL ret;
3154
3155 memset(&mi, 0, sizeof(mi));
3156 mi.cbSize = sizeof(mi);
3157 ret = GetMonitorInfoA(hmonitor, (MONITORINFO *)&mi);
3158 ok(ret, "GetMonitorInfoA failed, error %#lx\n", GetLastError());
3159
3160 memset(&dm, 0, sizeof(dm));
3161 dm.dmSize = sizeof(dm);
3163 ok(ret, "EnumDisplaySettingsA failed, error %#lx\n", GetLastError());
3164
3166 "Unexpected dmFields %#lx.\n", dm.dmFields);
3167 ok(dm.dmPosition.x == mi.rcMonitor.left, "Expect dmPosition.x %ld, got %ld\n", mi.rcMonitor.left, dm.dmPosition.x);
3168 ok(dm.dmPosition.y == mi.rcMonitor.top, "Expect dmPosition.y %ld, got %ld\n", mi.rcMonitor.top, dm.dmPosition.y);
3170 ok(dm.dmPelsWidth == width, "Expect dmPelsWidth %d, got %ld\n", width, dm.dmPelsWidth);
3172 ok(dm.dmPelsHeight == height, "Expect dmPelsHeight %d, got %ld\n", height, dm.dmPelsHeight);
3173
3174 return TRUE;
3175}
GLint GLint GLsizei width
Definition: gl.h:1546
#define memset(x, y, z)
Definition: compat.h:39
DWORD dmFields
Definition: wingdi.h:2016
DWORD dmPelsWidth
Definition: wingdi.h:2042
DWORD dmPelsHeight
Definition: wingdi.h:2043
POINTL dmPosition
Definition: wingdi.h:2029
WORD dmSize
Definition: wingdi.h:2014
BOOL WINAPI EnumDisplaySettingsA(LPCSTR lpszDeviceName, DWORD iModeNum, LPDEVMODEA lpDevMode)
Definition: display.c:312
#define DM_PELSWIDTH
Definition: wingdi.h:1269
#define DM_POSITION
Definition: wingdi.h:1255
#define DM_PELSHEIGHT
Definition: wingdi.h:1270
#define ENUM_CURRENT_SETTINGS
Definition: winuser.h:179
BOOL WINAPI GetMonitorInfoA(_In_ HMONITOR, _Inout_ LPMONITORINFO)

Referenced by test_EnumDisplaySettings().

◆ test_EnumDisplaySettings()

static void test_EnumDisplaySettings ( void  )
static

Definition at line 3177 of file sysparams.c.

3178{
3179 static const DWORD mode_fields = DM_DISPLAYORIENTATION | DM_BITSPERPEL |
3181 static const DWORD setting_fields = DM_DISPLAYORIENTATION | DM_BITSPERPEL |
3183 CHAR primary_adapter[CCHDEVICENAME];
3185 DWORD err, val, device, mode;
3186 BOOL attached, ret;
3187 DISPLAY_DEVICEA dd;
3188 DEVMODEA dm, dm2;
3189 DEVMODEW dmW;
3190 HDC hdc;
3191
3192 /* Test invalid device names */
3193 memset(&dm, 0, sizeof(dm));
3194 dm.dmSize = sizeof(dm);
3195 SetLastError(0xdeadbeef);
3197 ok(!ret, "EnumDisplaySettingsA succeeded\n");
3198 ok(GetLastError() == 0xdeadbeef, "Expect error 0xdeadbeef, got %#lx\n", GetLastError());
3199 ok(dm.dmFields == 0, "Expect dmFields unchanged, got %#lx\n", dm.dmFields);
3200
3201 /* Monitor device names are invalid */
3202 memset(&dm, 0, sizeof(dm));
3203 dm.dmSize = sizeof(dm);
3204 SetLastError(0xdeadbeef);
3205 ret = EnumDisplaySettingsA("\\\\.\\DISPLAY1\\Monitor0", ENUM_CURRENT_SETTINGS, &dm);
3206 ok(!ret, "EnumDisplaySettingsA succeeded\n");
3207 ok(GetLastError() == 0xdeadbeef, "Expect error 0xdeadbeef, got %#lx\n", GetLastError());
3208 ok(dm.dmFields == 0, "Expect dmFields unchanged, got %#lx\n", dm.dmFields);
3209
3210 /* Test that passing NULL to device name parameter means to use the primary adapter */
3211 memset(&dm, 0, sizeof(dm));
3212 memset(&dm2, 0, sizeof(dm2));
3213 dm.dmSize = sizeof(dm);
3214 dm2.dmSize = sizeof(dm2);
3215 ret = get_primary_adapter_name(primary_adapter);
3216 ok(ret, "get_primary_adapter_name failed\n");
3218 ok(ret, "EnumDisplaySettingsA failed, error %#lx\n", GetLastError());
3219 ret = EnumDisplaySettingsA(primary_adapter, ENUM_CURRENT_SETTINGS, &dm2);
3220 ok(ret, "EnumDisplaySettingsA failed, error %#lx\n", GetLastError());
3221 ok(!memcmp(&dm, &dm2, sizeof(dm)), "Expect NULL device is the primary device.\n");
3222
3223 /* Test dmSize */
3224 /* EnumDisplaySettingsA/W modify dmSize and don't check for insufficient dmSize */
3225 memset(&dm, 0, sizeof(dm));
3227 ok(ret, "EnumDisplaySettingsA failed, error %#lx\n", GetLastError());
3228 ok(dm.dmSize == FIELD_OFFSET(DEVMODEA, dmICMMethod), "Expect dmSize %lu, got %u\n",
3229 FIELD_OFFSET(DEVMODEA, dmICMMethod), dm.dmSize);
3230 ok((dm.dmFields & setting_fields) == setting_fields, "Expect dmFields to contain %#lx, got %#lx\n",
3231 setting_fields, dm.dmFields);
3232
3233 memset(&dm, 0, sizeof(dm));
3234 dm.dmSize = sizeof(dm);
3236 ok(ret, "EnumDisplaySettingsA failed, error %#lx\n", GetLastError());
3237 ok(dm.dmSize == FIELD_OFFSET(DEVMODEA, dmICMMethod), "Expect dmSize %lu, got %u\n",
3238 FIELD_OFFSET(DEVMODEA, dmICMMethod), dm.dmSize);
3239 ok((dm.dmFields & setting_fields) == setting_fields, "Expect dmFields to contain %#lx, got %#lx\n",
3240 setting_fields, dm.dmFields);
3241
3242 memset(&dmW, 0, sizeof(dmW));
3244 ok(ret, "EnumDisplaySettingsW failed, error %#lx\n", GetLastError());
3245 ok(dmW.dmSize == FIELD_OFFSET(DEVMODEW, dmICMMethod), "Expect dmSize %lu, got %u\n",
3246 FIELD_OFFSET(DEVMODEW, dmICMMethod), dmW.dmSize);
3247 ok((dmW.dmFields & setting_fields) == setting_fields, "Expect dmFields to contain %#lx, got %#lx\n",
3248 setting_fields, dmW.dmFields);
3249
3250 memset(&dmW, 0, sizeof(dmW));
3251 dmW.dmSize = sizeof(dmW);
3253 ok(ret, "EnumDisplaySettingsW failed, error %#lx\n", GetLastError());
3254 ok(dmW.dmSize == FIELD_OFFSET(DEVMODEW, dmICMMethod), "Expect dmSize %lu, got %u\n",
3255 FIELD_OFFSET(DEVMODEW, dmICMMethod), dmW.dmSize);
3256 ok((dmW.dmFields & setting_fields) == setting_fields, "Expect dmFields to contain %#lx, got %#lx\n",
3257 setting_fields, dmW.dmFields);
3258
3259 /* EnumDisplaySettingsExA/W need dmSize to be at least FIELD_OFFSET(DEVMODEA/W, dmFields) + 1 to have valid dmFields */
3260 /* Crash on Windows when dmSize is zero */
3261 if (0)
3262 {
3263 memset(&dm, 0, sizeof(dm));
3265 ok(!ret, "EnumDisplaySettingsExA succeed\n");
3266
3267 memset(&dmW, 0, sizeof(dmW));
3269 ok(!ret, "EnumDisplaySettingsExA succeed\n");
3270 }
3271
3272 memset(&dm, 0, sizeof(dm));
3273 dm.dmSize = FIELD_OFFSET(DEVMODEA, dmFields);
3275 ok(ret, "EnumDisplaySettingsExA failed, error %#lx\n", GetLastError());
3276 todo_wine ok(dm.dmSize == FIELD_OFFSET(DEVMODEA, dmFields), "Expect dmSize unchanged, got %u\n", dm.dmSize);
3277 todo_wine ok(dm.dmFields == 0, "Expect dmFields unchanged, got %#lx\n", dm.dmFields);
3278
3279 memset(&dm, 0, sizeof(dm));
3280 dm.dmSize = FIELD_OFFSET(DEVMODEA, dmFields) + 1;
3282 ok(ret, "EnumDisplaySettingsExA failed, error %#lx\n", GetLastError());
3283 todo_wine ok(dm.dmSize == FIELD_OFFSET(DEVMODEA, dmFields) + 1, "Expect dmSize unchanged, got %u\n", dm.dmSize);
3284 todo_wine ok((dm.dmFields & setting_fields) == (DM_POSITION | DM_DISPLAYORIENTATION),
3285 "Expect dmFields to contain %#lx, got %#lx\n", DM_POSITION | DM_DISPLAYORIENTATION, dm.dmFields);
3286 /* Fields beyond dmSize don't get written */
3287 todo_wine ok(dm.dmPelsWidth == 0, "Expect dmPelsWidth unwritten\n");
3288
3289 memset(&dmW, 0, sizeof(dmW));
3290 dmW.dmSize = FIELD_OFFSET(DEVMODEW, dmFields);
3292 ok(ret, "EnumDisplaySettingsExW failed, error %#lx\n", GetLastError());
3293 todo_wine ok(dmW.dmSize == FIELD_OFFSET(DEVMODEW, dmFields), "Expect dmSize unchanged, got %u\n", dmW.dmSize);
3294 todo_wine ok(dmW.dmFields == 0, "Expect dmFields unchanged, got %#lx\n", dmW.dmFields);
3295
3296 memset(&dmW, 0, sizeof(dmW));
3297 dmW.dmSize = FIELD_OFFSET(DEVMODEW, dmFields) + 1;
3299 ok(ret, "EnumDisplaySettingsExW failed, error %#lx\n", GetLastError());
3300 todo_wine ok(dmW.dmSize == FIELD_OFFSET(DEVMODEW, dmFields) + 1, "Expect dmSize unchanged, got %u\n", dmW.dmSize);
3301 todo_wine ok((dmW.dmFields & setting_fields) == (DM_POSITION | DM_DISPLAYORIENTATION),
3302 "Expect dmFields to contain %#lx, got %#lx\n", DM_POSITION | DM_DISPLAYORIENTATION, dmW.dmFields);
3303 /* Fields beyond dmSize don't get written */
3304 todo_wine ok(dmW.dmPelsWidth == 0, "Expect dmPelsWidth unwritten\n");
3305
3306 /* Test dmBitsPerPel */
3307 hdc = GetDC(0);
3309
3310 memset(&dm, 0, sizeof(dm));
3311 dm.dmSize = sizeof(dm);
3313 ok(ret, "EnumDisplaySettingsExA failed, error %#lx\n", GetLastError());
3314 ok((dm.dmFields & setting_fields) == setting_fields, "Expect dmFields to contain %#lx, got %#lx\n",
3315 setting_fields, dm.dmFields);
3316 ok(dm.dmBitsPerPel == val, "Expect dmBitsPerPel %ld, got %ld\n", val, dm.dmBitsPerPel);
3317
3319 if (dm.dmBitsPerPel <= 8)
3320 {
3321 ok(val == 256, "Screen bpp is %ld, NUMCOLORS returned %ld\n", dm.dmBitsPerPel, val);
3322 }
3323 else
3324 {
3325 ok(val == -1, "Screen bpp is %ld, NUMCOLORS returned %ld\n", dm.dmBitsPerPel, val);
3326 }
3327
3328 ReleaseDC(0, hdc);
3329
3330 /* Test dmPosition, dmPelsWidth and dmPelsHeight */
3331 /* Set DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE so that GetMonitorInfo() returns physical pixels */
3332 if (pSetThreadDpiAwarenessContext)
3333 ctx = pSetThreadDpiAwarenessContext(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE);
3335 if (pSetThreadDpiAwarenessContext && ctx)
3336 pSetThreadDpiAwarenessContext(ctx);
3337
3338 /* Test mode enumeration and other fields */
3339 dd.cb = sizeof(dd);
3340 for (device = 0; EnumDisplayDevicesA(NULL, device, &dd, 0); ++device)
3341 {
3342 INT number;
3343
3344 /* Skip software devices */
3345 if (sscanf(dd.DeviceName, "\\\\.\\DISPLAY%d", &number) != 1)
3346 continue;
3347
3349
3350 memset(&dm, 0, sizeof(dm));
3351 dm.dmSize = sizeof(dm);
3352 SetLastError(0xdeadbeef);
3354 {
3356 {
3357 ok((dm.dmFields & setting_fields) == setting_fields,
3358 "Expect dmFields to contain %#lx, got %#lx\n", setting_fields, dm.dmFields);
3359 }
3360 else
3361 {
3362 ok((dm.dmFields & mode_fields) == mode_fields, "Expect dmFields to contain %#lx, got %#lx\n",
3363 mode_fields, dm.dmFields);
3364 }
3365
3366 ok(dm.dmDisplayOrientation == DMDO_DEFAULT, "Expect dmDisplayOrientation DMDO_DEFAULT, got %#lx\n",
3368 ok(dm.dmDisplayFlags == 0, "Expect dmDisplayFlags zero\n");
3369
3370 if (mode == ENUM_CURRENT_SETTINGS && !attached)
3371 {
3372 ok(dm.dmBitsPerPel == 0, "Expect dmBitsPerPel zero, got %lu\n", dm.dmBitsPerPel);
3373 ok(dm.dmPelsWidth == 0, "Expect dmPelsWidth zero, got %lu\n", dm.dmPelsWidth);
3374 ok(dm.dmPelsHeight == 0, "Expect dmPelsHeight zero, got %lu\n", dm.dmPelsHeight);
3375 ok(dm.dmDisplayFrequency == 0, "Expect dmDisplayFrequency zero, got %lu\n", dm.dmDisplayFrequency);
3376 }
3377 else if (mode != ENUM_REGISTRY_SETTINGS)
3378 {
3379 ok(dm.dmBitsPerPel, "Expect dmBitsPerPel not zero\n");
3380 ok(dm.dmPelsWidth, "Expect dmPelsWidth not zero\n");
3381 ok(dm.dmPelsHeight, "Expect dmPelsHeight not zero\n");
3382 ok(dm.dmDisplayFrequency, "Expect dmDisplayFrequency not zero\n");
3383 }
3384 }
3385
3386 ok(mode >= 1, "Expect at least one valid mode gets enumerated.\n");
3387
3388 err = GetLastError();
3390 err == ERROR_MOD_NOT_FOUND /* Win8 */ ||
3391 err == 0xdeadbeef, /* XP, 2003 */
3392 "Expected ERROR_NO_MORE_FILES, ERROR_MOD_NOT_FOUND or 0xdeadbeef, got %#lx\n", err);
3393 }
3394}
#define CCHDEVICENAME
Definition: ddrawi.h:63
#define ERROR_MOD_NOT_FOUND
Definition: compat.h:104
_ACRTIMP int __cdecl _ACRTIMP int __cdecl _ACRTIMP int __cdecl _ACRTIMP int __cdecl _ACRTIMP int __cdecl _ACRTIMP int __cdecl _ACRTIMP int __cdecl sscanf(const char *, const char *,...) __WINE_CRT_SCANF_ATTR(2
GLenum mode
Definition: glext.h:6217
static unsigned int number
Definition: dsound.c:1479
static BOOL get_primary_adapter_name(CHAR *name)
Definition: sysparams.c:3130
static BOOL CALLBACK test_enum_display_settings(HMONITOR hmonitor, HDC hdc, LPRECT rect, LPARAM lparam)
Definition: sysparams.c:3148
#define err(...)
DWORD dmDisplayFlags
Definition: wingdi.h:2045
DWORD dmDisplayFrequency
Definition: wingdi.h:2048
DWORD dmDisplayOrientation
Definition: wingdi.h:2030
DWORD dmBitsPerPel
Definition: wingdi.h:2041
DWORD dmFields
Definition: wingdi.h:2068
DWORD dmPelsWidth
Definition: wingdi.h:2094
WORD dmSize
Definition: wingdi.h:2066
Definition: devices.h:37
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:255
BOOL WINAPI EnumDisplaySettingsExA(LPCSTR lpszDeviceName, DWORD iModeNum, LPDEVMODEA lpDevMode, DWORD dwFlags)
Definition: display.c:182
BOOL WINAPI EnumDisplaySettingsW(LPCWSTR lpszDeviceName, DWORD iModeNum, LPDEVMODEW lpDevMode)
Definition: display.c:408
BOOL WINAPI EnumDisplaySettingsExW(LPCWSTR lpszDeviceName, DWORD iModeNum, LPDEVMODEW lpDevMode, DWORD dwFlags)
Definition: display.c:330
#define ERROR_NO_MORE_FILES
Definition: winerror.h:243
#define DM_DISPLAYFREQUENCY
Definition: wingdi.h:1272
#define DMDO_DEFAULT
Definition: wingdi.h:1217
#define NUMCOLORS
Definition: wingdi.h:725
#define DM_BITSPERPEL
Definition: wingdi.h:1268
#define DM_DISPLAYORIENTATION
Definition: wingdi.h:1257
#define BITSPIXEL
Definition: wingdi.h:720
#define DISPLAY_DEVICE_ATTACHED_TO_DESKTOP
Definition: wingdi.h:1396
#define DM_DISPLAYFLAGS
Definition: wingdi.h:1271
#define ENUM_REGISTRY_SETTINGS
Definition: winuser.h:180
BOOL WINAPI EnumDisplayMonitors(_In_opt_ HDC, _In_opt_ LPCRECT, _In_ MONITORENUMPROC, _In_ LPARAM)

Referenced by START_TEST().

◆ test_error_msg()

static BOOL test_error_msg ( int  rc,
const char name 
)
static

Definition at line 313 of file sysparams.c.

314{
316
317 if (rc==0)
318 {
320 {
321 skip("%s not supported on this platform\n", name);
322 }
324 {
325 skip("%s does not have privileges to run\n", name);
326 }
327 else
328 {
329 trace("%s failed for reason: %ld. Indicating test failure and skipping remainder of test\n",name,last_error);
330 ok(rc!=0,"SystemParametersInfoA: rc=%d err=%ld\n",rc,last_error);
331 }
332 return FALSE;
333 }
334 else
335 {
336 ok(rc!=0,"SystemParametersInfoA: rc=%d err=%ld\n",rc,last_error);
337 return TRUE;
338 }
339}
#define skip(...)
Definition: atltest.h:64
#define ERROR_INVALID_SPI_VALUE
Definition: winerror.h:1265

Referenced by dotest_spi_iconhorizontalspacing(), dotest_spi_iconverticalspacing(), run_spi_setmouse_test(), test_setborder(), test_SPI_ICONHORIZONTALSPACING(), test_SPI_ICONVERTICALSPACING(), test_SPI_SETBEEP(), test_SPI_SETBORDER(), test_SPI_SETDOUBLECLICKTIME(), test_SPI_SETDOUBLECLKHEIGHT(), test_SPI_SETDOUBLECLKWIDTH(), test_SPI_SETDRAGFULLWINDOWS(), test_SPI_SETFASTTASKSWITCH(), test_SPI_SETFONTSMOOTHING(), test_SPI_SETICONMETRICS(), test_SPI_SETICONTITLEWRAP(), test_SPI_SETKEYBOARDDELAY(), test_SPI_SETKEYBOARDPREF(), test_SPI_SETKEYBOARDSPEED(), test_SPI_SETLOWPOWERACTIVE(), test_SPI_SETMENUDROPALIGNMENT(), test_SPI_SETMENUSHOWDELAY(), test_SPI_SETMINIMIZEDMETRICS(), test_SPI_SETMOUSE(), test_SPI_SETMOUSEBUTTONSWAP(), test_SPI_SETMOUSEHOVERHEIGHT(), test_SPI_SETMOUSEHOVERTIME(), test_SPI_SETMOUSEHOVERWIDTH(), test_SPI_SETNONCLIENTMETRICS(), test_SPI_SETPOWEROFFACTIVE(), test_SPI_SETSCREENREADER(), test_SPI_SETSCREENSAVEACTIVE(), test_SPI_SETSCREENSAVETIMEOUT(), test_SPI_SETSHOWSOUNDS(), test_SPI_SETSNAPTODEFBUTTON(), test_SPI_SETWALLPAPER(), test_SPI_SETWHEELSCROLLCHARS(), test_SPI_SETWHEELSCROLLLINES(), and test_SPI_SETWORKAREA().

◆ test_GetAutoRotationState()

static void test_GetAutoRotationState ( void  )
static

Definition at line 4557 of file sysparams.c.

4558{
4560 BOOL ret;
4561
4562 if (!pGetAutoRotationState)
4563 {
4564 win_skip("GetAutoRotationState not supported\n");
4565 return;
4566 }
4567
4568 SetLastError(0xdeadbeef);
4569 ret = pGetAutoRotationState(NULL);
4570 ok(!ret, "Expected GetAutoRotationState to fail\n");
4571 ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %ld\n", GetLastError());
4572
4573 state = 0;
4574 ret = pGetAutoRotationState(&state);
4575 ok(ret, "Expected GetAutoRotationState to succeed, error %ld\n", GetLastError());
4576}
static int state
Definition: maze.c:121
enum tagAR_STATE AR_STATE

Referenced by START_TEST().

◆ test_GetAwarenessFromDpiAwarenessContext()

static void test_GetAwarenessFromDpiAwarenessContext ( void  )
static

Definition at line 4241 of file sysparams.c.

4242{
4244
4245 if (!pGetAwarenessFromDpiAwarenessContext)
4246 {
4247 win_skip( "GetAwarenessFromDpiAwarenessContext missing, skipping tests\n" );
4248 return;
4249 }
4250
4251 ret = pGetAwarenessFromDpiAwarenessContext( 0 );
4252 ok( ret == -1, "got %u\n", ret );
4253
4254 ret = pGetAwarenessFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x12 );
4255 ok( ret == DPI_AWARENESS_PER_MONITOR_AWARE, "got %u\n", ret );
4256 ret = pGetAwarenessFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x22 );
4257 ok( ret == DPI_AWARENESS_PER_MONITOR_AWARE, "got %u\n", ret );
4258 ret = pGetAwarenessFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x6010 );
4259 ok( ret == DPI_AWARENESS_UNAWARE, "got %u\n", ret );
4260 ret = pGetAwarenessFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x6011 );
4261 ok( ret == DPI_AWARENESS_SYSTEM_AWARE, "got %u\n", ret );
4262 ret = pGetAwarenessFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x6111 );
4263 ok( ret == DPI_AWARENESS_SYSTEM_AWARE, "got %u\n", ret );
4264 ret = pGetAwarenessFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x7811 );
4265 ok( ret == DPI_AWARENESS_SYSTEM_AWARE, "got %u\n", ret );
4266 ret = pGetAwarenessFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x10011 );
4267 ok( ret == DPI_AWARENESS_SYSTEM_AWARE, "got %u\n", ret );
4268 ret = pGetAwarenessFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x40006010 );
4269 ok( ret == DPI_AWARENESS_UNAWARE, "got %u\n", ret );
4270 ret = pGetAwarenessFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x80000012 );
4271 ok( ret == DPI_AWARENESS_PER_MONITOR_AWARE, "got %u\n", ret );
4272 ret = pGetAwarenessFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x80006010 );
4273 ok( ret == DPI_AWARENESS_UNAWARE, "got %u\n", ret );
4274
4275 ret = pGetAwarenessFromDpiAwarenessContext( DPI_AWARENESS_CONTEXT_UNAWARE );
4276 ok( ret == DPI_AWARENESS_UNAWARE, "got %u\n", ret );
4277 ret = pGetAwarenessFromDpiAwarenessContext( DPI_AWARENESS_CONTEXT_SYSTEM_AWARE );
4278 ok( ret == DPI_AWARENESS_SYSTEM_AWARE, "got %u\n", ret );
4279 ret = pGetAwarenessFromDpiAwarenessContext( DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE );
4280 ok( ret == DPI_AWARENESS_PER_MONITOR_AWARE, "got %u\n", ret );
4281 ret = pGetAwarenessFromDpiAwarenessContext( DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 );
4282 ok( ret == DPI_AWARENESS_PER_MONITOR_AWARE, "got %u\n", ret );
4283 ret = pGetAwarenessFromDpiAwarenessContext( DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED );
4284 ok( ret == DPI_AWARENESS_UNAWARE, "got %u\n", ret );
4285}

Referenced by START_TEST().

◆ test_GetDpiFromDpiAwarenessContext()

static void test_GetDpiFromDpiAwarenessContext ( void  )
static

Definition at line 4113 of file sysparams.c.

4114{
4115 UINT ret;
4116
4117 if (!pGetDpiFromDpiAwarenessContext)
4118 {
4119 win_skip( "GetDpiFromDpiAwarenessContext missing, skipping tests\n" );
4120 return;
4121 }
4122
4123 ret = pGetDpiFromDpiAwarenessContext( 0 );
4124 ok( !ret, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
4125
4126 ret = pGetDpiFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x11 );
4127 ok( ret == 0, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
4128 ret = pGetDpiFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x12 );
4129 ok( ret == 0, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
4130 ret = pGetDpiFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x22 );
4131 ok( ret == 0, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
4132 ret = pGetDpiFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x6010 );
4133 ok( ret == 96, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
4134 ret = pGetDpiFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x6011 );
4135 ok( ret == 96, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
4136 ret = pGetDpiFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x6111 );
4137 ok( ret == 97, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
4138 ret = pGetDpiFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x7811 );
4139 ok( ret == 120, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
4140 ret = pGetDpiFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x10011 );
4141 ok( ret == 256, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
4142 ret = pGetDpiFromDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x40006010 );
4143 ok( ret == 96, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
4144
4145 ret = pGetDpiFromDpiAwarenessContext( DPI_AWARENESS_CONTEXT_UNAWARE );
4146 ok( ret == 96, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
4147 ret = pGetDpiFromDpiAwarenessContext( DPI_AWARENESS_CONTEXT_SYSTEM_AWARE );
4148 ok( ret == real_dpi, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
4149 ret = pGetDpiFromDpiAwarenessContext( DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE );
4150 ok( ret == 0, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
4151 ret = pGetDpiFromDpiAwarenessContext( DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 );
4152 ok( ret == 0, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
4153 ret = pGetDpiFromDpiAwarenessContext( DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED );
4154 ok( ret == 96, "GetDpiFromDpiAwarenessContext returned %u\n", ret );
4155}

Referenced by START_TEST().

◆ test_GetSysColorBrush()

static void test_GetSysColorBrush ( void  )
static

Definition at line 3396 of file sysparams.c.

3397{
3398 HBRUSH hbr;
3399
3400 SetLastError(0xdeadbeef);
3401 hbr = GetSysColorBrush(-1);
3402 ok(hbr == NULL, "Expected NULL brush\n");
3403 ok(GetLastError() == 0xdeadbeef, "Expected last error not set, got %lx\n", GetLastError());
3404 /* greater than max index */
3405 hbr = GetSysColorBrush(COLOR_MENUBAR);
3406 if (hbr)
3407 {
3408 SetLastError(0xdeadbeef);
3409 hbr = GetSysColorBrush(COLOR_MENUBAR + 1);
3410 ok(hbr == NULL, "Expected NULL brush\n");
3411 ok(GetLastError() == 0xdeadbeef, "Expected last error not set, got %lx\n", GetLastError());
3412 }
3413 else
3414 win_skip("COLOR_MENUBAR unsupported\n");
3415}
HBRUSH WINAPI GetSysColorBrush(_In_ int)

Referenced by START_TEST().

◆ test_GetSystemMetrics()

static void test_GetSystemMetrics ( void  )
static

Definition at line 2742 of file sysparams.c.

2743{
2744 TEXTMETRICA tmMenuFont;
2745 UINT IconSpacing, IconVerticalSpacing;
2746 BOOL rc;
2747
2748 HDC hdc = CreateICA( "Display", 0, 0, 0);
2749 UINT avcwCaption;
2750 INT CaptionWidthfromreg, width, smicon, broken_val;
2751 MINIMIZEDMETRICS minim;
2752 NONCLIENTMETRICSA ncm;
2753 SIZE screen;
2754
2755 assert(sizeof(ncm) == 344);
2756
2757 ncm.cbSize = FIELD_OFFSET(NONCLIENTMETRICSA, iPaddedBorderWidth);
2758 rc = SystemParametersInfoA(SPI_GETNONCLIENTMETRICS, 0, &ncm, 0);
2759 ok(rc, "SystemParametersInfoA failed\n");
2760
2761 ncm.cbSize = FIELD_OFFSET(NONCLIENTMETRICSA, iPaddedBorderWidth) - 1;
2762 rc = SystemParametersInfoA(SPI_GETNONCLIENTMETRICS, 0, &ncm, 0);
2763 ok(!rc, "SystemParametersInfoA should fail\n");
2764
2765 ncm.cbSize = FIELD_OFFSET(NONCLIENTMETRICSA, iPaddedBorderWidth) + 1;
2766 SetLastError(0xdeadbeef);
2767 rc = SystemParametersInfoA(SPI_GETNONCLIENTMETRICS, 0, &ncm, 0);
2768 ok(!rc, "SystemParametersInfoA should fail\n");
2769
2770 ncm.cbSize = sizeof(ncm); /* Vista added padding */
2771 SetLastError(0xdeadbeef);
2772 ncm.iPaddedBorderWidth = 0xcccc;
2773 rc = SystemParametersInfoA(SPI_GETNONCLIENTMETRICS, 0, &ncm, 0);
2774 ok(rc || broken(!rc) /* before Vista */, "SystemParametersInfoA failed\n");
2775 if (rc) ok( ncm.iPaddedBorderWidth == 0, "wrong iPaddedBorderWidth %u\n", ncm.iPaddedBorderWidth );
2776
2777 minim.cbSize = sizeof( minim);
2778 ncm.cbSize = FIELD_OFFSET(NONCLIENTMETRICSA, iPaddedBorderWidth);
2779 SystemParametersInfoA( SPI_GETMINIMIZEDMETRICS, 0, &minim, 0);
2780 rc = SystemParametersInfoA( SPI_GETNONCLIENTMETRICS, 0, &ncm, 0);
2781 if( !rc) {
2782 win_skip("SPI_GETNONCLIENTMETRICS is not available\n");
2783 return;
2784 }
2785
2786 ok(is_font_enumerated(ncm.lfCaptionFont.lfFaceName), "font %s should be enumerated\n", ncm.lfCaptionFont.lfFaceName);
2787 ok(is_font_enumerated(ncm.lfSmCaptionFont.lfFaceName), "font %s should be enumerated\n", ncm.lfSmCaptionFont.lfFaceName);
2788 ok(is_font_enumerated(ncm.lfMenuFont.lfFaceName), "font %s should be enumerated\n", ncm.lfMenuFont.lfFaceName);
2789 ok(is_font_enumerated(ncm.lfStatusFont.lfFaceName), "font %s should be enumerated\n", ncm.lfStatusFont.lfFaceName);
2790 ok(is_font_enumerated(ncm.lfMessageFont.lfFaceName), "font %s should be enumerated\n", ncm.lfMessageFont.lfFaceName);
2791
2792 /* CaptionWidth from the registry may have different value of iCaptionWidth
2793 * from the non client metrics (observed on WinXP) */
2794 CaptionWidthfromreg = metricfromreg(
2795 "Control Panel\\Desktop\\WindowMetrics","CaptionWidth", dpi);
2796 get_text_metr_size( hdc, &ncm.lfMenuFont, &tmMenuFont, NULL);
2797 get_text_metr_size( hdc, &ncm.lfCaptionFont, NULL, &avcwCaption);
2798 /* FIXME: use icon metric */
2799 if( !SystemParametersInfoA( SPI_ICONVERTICALSPACING, 0, &IconVerticalSpacing, 0))
2800 IconVerticalSpacing = 0;
2801 if( !SystemParametersInfoA( SPI_ICONHORIZONTALSPACING, 0, &IconSpacing, 0 ))
2802 IconSpacing = 0;
2803 /* reset error counters */
2804 gsm_error_ctr = 0;
2805
2806 /* the tests: */
2807
2808 /* SM_CXSCREEN, cannot test these two */
2809 /* SM_CYSCREEN */
2810 ok_gsm( SM_CXVSCROLL, ncm.iScrollWidth);
2811 ok_gsm( SM_CYHSCROLL, ncm.iScrollWidth);
2812 ok_gsm( SM_CYCAPTION, ncm.iCaptionHeight+1);
2813 ok_gsm( SM_CXBORDER, 1);
2814 ok_gsm( SM_CYBORDER, 1);
2815 ok_gsm( SM_CXDLGFRAME, 3);
2816 ok_gsm( SM_CYDLGFRAME, 3);
2817 ok_gsm( SM_CYVTHUMB, ncm.iScrollHeight);
2818 ok_gsm( SM_CXHTHUMB, ncm.iScrollHeight);
2819 /* These don't depend on the Shell Icon Size registry value */
2824 ok_gsm( SM_CYMENU, ncm.iMenuHeight + 1);
2829 /* SM_CYKANJIWINDOW */
2830 /* SM_MOUSEPRESENT */
2831 ok_gsm( SM_CYVSCROLL, ncm.iScrollHeight);
2832 ok_gsm( SM_CXHSCROLL, ncm.iScrollHeight);
2833 /* SM_DEBUG */
2834 /* SM_SWAPBUTTON */
2835 /* SM_RESERVED1 */
2836 /* SM_RESERVED2 */
2837 /* SM_RESERVED3 */
2838 /* SM_RESERVED4 */
2839 ok_gsm( SM_CXMIN, 3 * max( CaptionWidthfromreg >= 0 ? CaptionWidthfromreg : ncm.iCaptionWidth, 8) +
2840 GetSystemMetrics( SM_CYSIZE) + 4 + 4 * avcwCaption + 2 * GetSystemMetrics( SM_CXFRAME));
2844 ncm.iCaptionWidth, /* classic/standard windows style */
2845 GetSystemMetrics( SM_CYCAPTION) - 1 /* WinXP style */
2846 );
2847 ok_gsm( SM_CYSIZE, ncm.iCaptionHeight);
2848 ok_gsm( SM_CXFRAME, ncm.iBorderWidth + 3);
2849 ok_gsm( SM_CYFRAME, ncm.iBorderWidth + 3);
2852 /* SM_CXDOUBLECLK */
2853 /* SM_CYDOUBLECLK */
2854 if( IconSpacing) ok_gsm( SM_CXICONSPACING, IconSpacing);
2855 if( IconVerticalSpacing) ok_gsm( SM_CYICONSPACING, IconVerticalSpacing);
2856 /* SM_MENUDROPALIGNMENT */
2857 /* SM_PENWINDOWS */
2858 /* SM_DBCSENABLED */
2859 /* SM_CMOUSEBUTTONS */
2860 /* SM_SECURE */
2861 ok_gsm( SM_CXEDGE, 2);
2862 ok_gsm( SM_CYEDGE, 2);
2863 /* sign-extension for iHorzGap/iVertGap is broken on Win9x */
2866
2867 smicon = MulDiv( 16, dpi, USER_DEFAULT_SCREEN_DPI );
2868 width = CaptionWidthfromreg > 0 ? CaptionWidthfromreg : ncm.iCaptionWidth;
2869 if (!pIsProcessDPIAware || pIsProcessDPIAware())
2870 smicon = max( min( smicon, width - 2), 4 ) & ~1;
2871 todo_wine_if( real_dpi == dpi && smicon != (MulDiv( 16, dpi, USER_DEFAULT_SCREEN_DPI) & ~1) )
2872 {
2873 broken_val = (min( ncm.iCaptionHeight, width ) - 2) & ~1;
2874 broken_val = min( broken_val, 20 );
2875
2876 if (smicon == 4)
2877 {
2878 ok_gsm_2( SM_CXSMICON, smicon, 6 );
2879 ok_gsm_2( SM_CYSMICON, smicon, 6 );
2880 }
2881 else
2882 {
2883 ok_gsm_2( SM_CXSMICON, smicon, broken_val );
2884 ok_gsm_2( SM_CYSMICON, smicon, broken_val );
2885 }
2886 }
2887
2888 ok_gsm( SM_CYSMCAPTION, ncm.iSmCaptionHeight + 1);
2890 ncm.iSmCaptionWidth, /* classic/standard windows style */
2891 GetSystemMetrics( SM_CYSMCAPTION) - 1, /* WinXP style */
2892 smcxsmsize /* winXP seems to cache this value: setnonclientmetric
2893 does not change it */
2894 );
2896 ok_gsm( SM_CXMENUSIZE, ncm.iMenuWidth);
2897 ok_gsm( SM_CYMENUSIZE, ncm.iMenuHeight);
2898 /* SM_ARRANGE */
2899 ok_gsm( SM_CXMINIMIZED, minim.iWidth + 6);
2903 if (!screen.cx || !screen.cy) /* not supported on NT4 */
2904 {
2907 }
2909 screen.cx - 4 + 2 * GetSystemMetrics(SM_CXFRAME), /* Vista */
2910 screen.cx + 2 * GetSystemMetrics(SM_CXFRAME)); /* Win8 */
2912 screen.cy - 4 + 2 * GetSystemMetrics(SM_CYFRAME), /* Vista */
2913 screen.cy + 2 * GetSystemMetrics(SM_CYFRAME)); /* Win8 */
2914 /* the next two cannot really be tested as they depend on (application)
2915 * toolbars */
2916 /* SM_CXMAXIMIZED */
2917 /* SM_CYMAXIMIZED */
2918 /* SM_NETWORK */
2919 /* */
2920 /* */
2921 /* */
2922 /* SM_CLEANBOOT */
2923 /* SM_CXDRAG */
2924 /* SM_CYDRAG */
2925 /* SM_SHOWSOUNDS */
2927 ((tmMenuFont.tmHeight + tmMenuFont.tmExternalLeading+1)/2)*2-1);
2929 ((tmMenuFont.tmHeight + tmMenuFont.tmExternalLeading+1)/2)*2-1);
2930 /* SM_SLOWMACHINE */
2931 /* SM_MIDEASTENABLED */
2932 /* SM_MOUSEWHEELPRESENT */
2933 /* SM_XVIRTUALSCREEN */
2934 /* SM_YVIRTUALSCREEN */
2935 /* SM_CXVIRTUALSCREEN */
2936 /* SM_CYVIRTUALSCREEN */
2937 /* SM_CMONITORS */
2938 /* SM_SAMEDISPLAYFORMAT */
2939 /* SM_IMMENABLED */
2940 /* SM_CXFOCUSBORDER */
2941 /* SM_CYFOCUSBORDER */
2942 /* SM_TABLETPC */
2943 /* SM_MEDIACENTER */
2944 /* SM_CMETRICS */
2945 /* end of tests */
2946 if( gsm_error_ctr ) { /* if any errors where found */
2947 trace( "BorderWidth %d CaptionWidth %d CaptionHeight %d IconSpacing %d IconVerticalSpacing %d\n",
2948 ncm.iBorderWidth, ncm.iCaptionWidth, ncm.iCaptionHeight, IconSpacing, IconVerticalSpacing);
2949 trace( "MenuHeight %d MenuWidth %d ScrollHeight %d ScrollWidth %d SmCaptionHeight %d SmCaptionWidth %d\n",
2950 ncm.iMenuHeight, ncm.iMenuWidth, ncm.iScrollHeight, ncm.iScrollWidth, ncm.iSmCaptionHeight, ncm.iSmCaptionWidth);
2951 trace( "Captionfontchar width %d MenuFont %ld,%ld CaptionWidth from registry: %d screen %ld,%ld\n",
2952 avcwCaption, tmMenuFont.tmHeight, tmMenuFont.tmExternalLeading, CaptionWidthfromreg, screen.cx, screen.cy);
2953 }
2954
2955 DeleteDC(hdc);
2956}
static UINT smcxsmsize
Definition: sysparams.c:1502
#define ok_gsm_2(i, e1, e2)
Definition: sysparams.c:2699
static BOOL is_font_enumerated(const char *name)
Definition: sysparams.c:2722
static void get_text_metr_size(HDC hdc, LOGFONTA *plf, TEXTMETRICA *ptm, UINT *psz)
Definition: sysparams.c:2670
#define ok_gsm_3(i, e1, e2, e3)
Definition: sysparams.c:2707
#define ok_gsm(i, e)
Definition: sysparams.c:2692
static int get_cursor_size(int size)
Definition: sysparams.c:2734
#define min(a, b)
Definition: monoChain.cc:55
char screen[SCREENY][SCREENX]
Definition: polytest.cpp:65
LONG tmExternalLeading
Definition: wingdi.h:2811
HDC WINAPI CreateICA(_In_opt_ LPCSTR, _In_opt_ LPCSTR, _In_opt_ LPCSTR, _In_opt_ const DEVMODEA *)
#define SM_CXMINIMIZED
Definition: winuser.h:1031
#define SM_CYEDGE
Definition: winuser.h:1020
#define SM_CXHTHUMB
Definition: winuser.h:982
#define SM_CXEDGE
Definition: winuser.h:1019
#define SM_CYVSCROLL
Definition: winuser.h:992
#define SM_CXMENUCHECK
Definition: winuser.h:1042
#define SM_CYSIZE
Definition: winuser.h:1003
#define SM_CXMINTRACK
Definition: winuser.h:1008
#define SM_CXVSCROLL
Definition: winuser.h:972
#define SM_CYVTHUMB
Definition: winuser.h:981
#define SM_CYMINIMIZED
Definition: winuser.h:1032
#define SM_CXFRAME
Definition: winuser.h:1005
#define SM_CYMENU
Definition: winuser.h:987
#define SM_CYSMICON
Definition: winuser.h:1024
#define SM_CXSIZE
Definition: winuser.h:1002
#define SM_CYFRAME
Definition: winuser.h:1007
#define SM_CYHSCROLL
Definition: winuser.h:973
#define SM_CXFULLSCREEN
Definition: winuser.h:988
#define SM_CXMIN
Definition: winuser.h:1000
#define SM_CYBORDER
Definition: winuser.h:976
#define SM_CXSMICON
Definition: winuser.h:1023
#define SM_CYMIN
Definition: winuser.h:1001
#define SM_CYMENUCHECK
Definition: winuser.h:1043
#define SM_CYICON
Definition: winuser.h:984
#define SM_CXMAXTRACK
Definition: winuser.h:1033
#define SM_CXMAXIMIZED
Definition: winuser.h:1035
#define SM_CYMINSPACING
Definition: winuser.h:1022
#define SM_CXSMSIZE
Definition: winuser.h:1026
#define SM_CXBORDER
Definition: winuser.h:975
#define SM_CYMAXTRACK
Definition: winuser.h:1034
#define SM_CYFULLSCREEN
Definition: winuser.h:989
#define SM_CXDLGFRAME
Definition: winuser.h:977
#define SM_CXHSCROLL
Definition: winuser.h:993
#define SM_CXMENUSIZE
Definition: winuser.h:1028
#define SM_CYSMCAPTION
Definition: winuser.h:1025
#define SM_CYSMSIZE
Definition: winuser.h:1027
#define SM_CYDLGFRAME
Definition: winuser.h:979
#define SM_CYMENUSIZE
Definition: winuser.h:1029
#define SM_CYCURSOR
Definition: winuser.h:986
#define SM_CXICON
Definition: winuser.h:983
#define SM_CYMAXIMIZED
Definition: winuser.h:1036
#define SM_CYCAPTION
Definition: winuser.h:974
#define SM_CYMINTRACK
Definition: winuser.h:1009
#define SM_CXMINSPACING
Definition: winuser.h:1021
#define SM_CXCURSOR
Definition: winuser.h:985

Referenced by START_TEST(), test_dpi_aware(), and test_SPI_SETNONCLIENTMETRICS().

◆ test_IsValidDpiAwarenessContext()

static void test_IsValidDpiAwarenessContext ( void  )
static

Definition at line 4022 of file sysparams.c.

4023{
4024 UINT_PTR i;
4025 BOOL ret;
4026
4027 if (!pIsValidDpiAwarenessContext)
4028 {
4029 win_skip( "IsValidDpiAwarenessContext missing, skipping tests\n" );
4030 return;
4031 }
4032
4033 ret = pIsValidDpiAwarenessContext( 0 );
4034 ok( !ret, "IsValidDpiAwarenessContext returned %u\n", ret );
4035
4036 /* commonly seen dpi awareness contexts */
4037 ret = pIsValidDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x12 );
4038 ok( ret, "IsValidDpiAwarenessContext returned %u\n", ret );
4039 ret = pIsValidDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x22 );
4040 ok( ret, "IsValidDpiAwarenessContext returned %u\n", ret );
4041 ret = pIsValidDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x6010 );
4042 ok( ret, "IsValidDpiAwarenessContext returned %u\n", ret );
4043 ret = pIsValidDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x6011 );
4044 ok( ret, "IsValidDpiAwarenessContext returned %u\n", ret );
4045 ret = pIsValidDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x40006010 );
4046 ok( ret, "IsValidDpiAwarenessContext returned %u\n", ret );
4047
4048 ret = pIsValidDpiAwarenessContext( DPI_AWARENESS_CONTEXT_UNAWARE );
4049 ok( ret, "IsValidDpiAwarenessContext returned %u\n", ret );
4050 ret = pIsValidDpiAwarenessContext( DPI_AWARENESS_CONTEXT_SYSTEM_AWARE );
4051 ok( ret, "IsValidDpiAwarenessContext returned %u\n", ret );
4052 ret = pIsValidDpiAwarenessContext( DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE );
4053 ok( ret, "IsValidDpiAwarenessContext returned %u\n", ret );
4054 ret = pIsValidDpiAwarenessContext( DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 );
4055 ok( ret, "IsValidDpiAwarenessContext returned %u\n", ret );
4056 ret = pIsValidDpiAwarenessContext( DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED );
4057 ok( ret, "IsValidDpiAwarenessContext returned %u\n", ret );
4058 ret = pIsValidDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)-6 );
4059 ok( !ret, "IsValidDpiAwarenessContext returned %u\n", ret );
4060
4061 for (i = 1; i < 0xff; i++)
4062 {
4063 ret = pIsValidDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)i );
4064 if (i == 0x12 || i == 0x22) ok( ret, "IsValidDpiAwarenessContext %#Ix failed\n", i );
4065 /* 0x0011 is rejected on win11 */
4066 else if (i != 0x11) ok( !ret, "IsValidDpiAwarenessContext %#Ix succeeded\n", i );
4067
4068 ret = pIsValidDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)(i | 0x6000) );
4069 if (i == 0x10 || i == 0x11) ok( ret, "IsValidDpiAwarenessContext %#Ix failed\n", (i | 0x6000) );
4070 /* 0x6013 is accepted on win11 */
4071 else if (i != 0x13) ok( !ret, "IsValidDpiAwarenessContext %#Ix succeeded\n", (i | 0x6000) );
4072
4073 ret = pIsValidDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)((i << 8) | 0x10) );
4074 if (i == 0x60) ok( ret, "IsValidDpiAwarenessContext %#Ix failed\n", ((i << 8) | 0x10) );
4075 else ok( !ret, "IsValidDpiAwarenessContext %#Ix succeeded\n", ((i << 8) | 0x10) );
4076 ret = pIsValidDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)((i << 8) | 0x11) );
4077 if (i != 0xff) ok( ret, "IsValidDpiAwarenessContext %#Ix failed\n", ((i << 8) | 0x11) );
4078 else ok( !ret, "IsValidDpiAwarenessContext %#Ix succeeded\n", ((i << 8) | 0x11) );
4079 ret = pIsValidDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)((i << 8) | 0x12) );
4080 ok( !ret, "IsValidDpiAwarenessContext %#Ix succeeded\n", ((i << 8) | 0x12) );
4081 ret = pIsValidDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)((i << 8) | 0x22) );
4082 ok( !ret, "IsValidDpiAwarenessContext %#Ix succeeded\n", ((i << 8) | 0x22) );
4083
4084 ret = pIsValidDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)((i << 16) | 0x6010) );
4085 ok( !ret, "IsValidDpiAwarenessContext %#Ix succeeded\n", ((i << 16) | 0x6010) );
4086 ret = pIsValidDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)((i << 16) | (real_dpi << 8) | 0x11) );
4087 if (i == 1) ok( ret, "IsValidDpiAwarenessContext %#Ix succeeded\n", ((i << 16) | (real_dpi << 8) | 0x11) );
4088 else ok( !ret, "IsValidDpiAwarenessContext %#Ix succeeded\n", ((i << 16) | (real_dpi << 8) | 0x11) );
4089 ret = pIsValidDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)((i << 16) | 0x12) );
4090 ok( !ret, "IsValidDpiAwarenessContext %#Ix succeeded\n", ((i << 16) | 0x12) );
4091 ret = pIsValidDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)((i << 16) | 0x22) );
4092 ok( !ret, "IsValidDpiAwarenessContext %#Ix succeeded\n", ((i << 16) | 0x22) );
4093
4094 ret = pIsValidDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)((i << 24) | 0x6010) );
4095 if (i & 0x1f) ok( !ret, "IsValidDpiAwarenessContext %#Ix succeeded\n", ((i << 24) | 0x6010) );
4096 /* 0x20000000 is rejected on win11 */
4097 else if (!(i & 0x20)) ok( ret, "IsValidDpiAwarenessContext %#Ix failed\n", ((i << 24) | 0x6010) );
4098 ret = pIsValidDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)((i << 24) | (real_dpi << 8) | 0x11) );
4099 if (i & 0x5f) ok( !ret, "IsValidDpiAwarenessContext %#Ix succeeded\n", ((i << 24) | (real_dpi << 8) | 0x11) );
4100 /* 0x20000000 is rejected on win11 */
4101 else if (!(i & 0x20)) ok( ret, "IsValidDpiAwarenessContext %#Ix failed\n", ((i << 24) | (real_dpi << 8) | 0x11) );
4102 ret = pIsValidDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)((i << 24) | 0x12) );
4103 if (i & 0x5f) ok( !ret, "IsValidDpiAwarenessContext %#Ix succeeded\n", ((i << 24) | 0x12) );
4104 /* 0x20000000 is rejected on win11 */
4105 else if (!(i & 0x20)) ok( ret, "IsValidDpiAwarenessContext %#Ix failed\n", ((i << 24) | 0x12) );
4106 ret = pIsValidDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)((i << 24) | 0x22) );
4107 if (i & 0x5f) ok( !ret, "IsValidDpiAwarenessContext %#Ix succeeded\n", ((i << 24) | 0x22) );
4108 /* 0x20000000 is rejected on win11 */
4109 else if (!(i & 0x20)) ok( ret, "IsValidDpiAwarenessContext %#Ix failed\n", ((i << 24) | 0x22) );
4110 }
4111}

Referenced by START_TEST().

◆ test_LOGFONT_charset()

static void test_LOGFONT_charset ( void  )
static

Definition at line 4578 of file sysparams.c.

4579{
4580 CHARSETINFO csi;
4581 LOGFONTA lf;
4582 NONCLIENTMETRICSA ncm;
4583 BOOL ret;
4584
4586 ok(ret, "TranslateCharsetInfo(%d) error %lu\n", GetACP(), GetLastError());
4587
4588 GetObjectA(GetStockObject(DEFAULT_GUI_FONT), sizeof(lf), &lf);
4589 ok(lf.lfCharSet == csi.ciCharset, "got %d, expected %d\n", lf.lfCharSet, csi.ciCharset);
4590
4592 ok(ret, "SystemParametersInfoW error %lu\n", GetLastError());
4593 ok(lf.lfCharSet == DEFAULT_CHARSET, "got %d\n", lf.lfCharSet);
4594
4595 ncm.cbSize = FIELD_OFFSET(NONCLIENTMETRICSA, iPaddedBorderWidth);
4596 ret = SystemParametersInfoA(SPI_GETNONCLIENTMETRICS, 0, &ncm, 0);
4597 ok(ret, "SystemParametersInfoW error %lu\n", GetLastError());
4598 ok(ncm.lfCaptionFont.lfCharSet == DEFAULT_CHARSET, "got %d\n", ncm.lfCaptionFont.lfCharSet);
4599 ok(ncm.lfSmCaptionFont.lfCharSet == DEFAULT_CHARSET, "got %d\n", ncm.lfSmCaptionFont.lfCharSet);
4600}
#define ULongToPtr(ul)
Definition: basetsd.h:86
UINT WINAPI GetACP(void)
Definition: locale.c:2023
UINT ciCharset
Definition: wingdi.h:1992
int WINAPI GetObjectA(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
#define DEFAULT_CHARSET
Definition: wingdi.h:384
BOOL WINAPI TranslateCharsetInfo(_Inout_ PDWORD, _Out_ LPCHARSETINFO, _In_ DWORD)
#define TCI_SRCCODEPAGE
Definition: wingdi.h:962
#define SPI_GETICONTITLELOGFONT
Definition: winuser.h:1391

Referenced by START_TEST().

◆ test_metrics_for_dpi()

static void test_metrics_for_dpi ( int  custom_dpi)
static

Definition at line 2971 of file sysparams.c.

2972{
2973 int i, val;
2974 NONCLIENTMETRICSW ncm1, ncm2;
2975 ICONMETRICSW im1, im2;
2976 LOGFONTW lf1, lf2;
2977 BOOL ret;
2978
2979 if (!pSystemParametersInfoForDpi)
2980 {
2981 win_skip( "custom dpi metrics not supported\n" );
2982 return;
2983 }
2984
2985 ncm1.cbSize = sizeof(ncm1);
2986 ret = SystemParametersInfoW( SPI_GETNONCLIENTMETRICS, sizeof(ncm1), &ncm1, FALSE );
2987 ok( ret, "SystemParametersInfoW failed err %lu\n", GetLastError() );
2988 ncm2.cbSize = sizeof(ncm2);
2989 ret = pSystemParametersInfoForDpi( SPI_GETNONCLIENTMETRICS, sizeof(ncm2), &ncm2, FALSE, custom_dpi );
2990 ok( ret, "SystemParametersInfoForDpi failed err %lu\n", GetLastError() );
2991
2992 for (i = 0; i < 92; i++)
2993 {
2994 int ret1 = GetSystemMetrics( i );
2995 int ret2 = pGetSystemMetricsForDpi( i, custom_dpi );
2996 switch (i)
2997 {
2998 case SM_CXVSCROLL:
2999 case SM_CYHSCROLL:
3000 case SM_CYVTHUMB:
3001 case SM_CXHTHUMB:
3002 case SM_CXICON:
3003 case SM_CYICON:
3004 case SM_CYVSCROLL:
3005 case SM_CXHSCROLL:
3006 case SM_CYSIZE:
3007 case SM_CXICONSPACING:
3008 case SM_CYICONSPACING:
3009 case SM_CXSMSIZE:
3010 case SM_CYSMSIZE:
3011 case SM_CYMENUSIZE:
3012 ok( ret1 == MulDiv( ret2, dpi, custom_dpi ), "%u: wrong value %u vs %u\n", i, ret1, ret2 );
3013 break;
3014 case SM_CXSIZE:
3015 ok( ret1 == ncm1.iCaptionWidth && ret2 == ncm2.iCaptionWidth,
3016 "%u: wrong value %u vs %u caption %u vs %u\n",
3017 i, ret1, ret2, ncm1.iCaptionWidth, ncm2.iCaptionWidth );
3018 break;
3019 case SM_CXCURSOR:
3020 case SM_CYCURSOR:
3021 val = MulDiv( 32, custom_dpi, USER_DEFAULT_SCREEN_DPI );
3022 if (val < 48) val = 32;
3023 else if (val < 64) val = 48;
3024 else val = 64;
3025 ok( val == ret2, "%u: wrong value %u vs %u\n", i, ret1, ret2 );
3026 break;
3027 case SM_CYCAPTION:
3028 case SM_CYSMCAPTION:
3029 case SM_CYMENU:
3030 ok( ret1 - 1 == MulDiv( ret2 - 1, dpi, custom_dpi ), "%u: wrong value %u vs %u\n", i, ret1, ret2 );
3031 break;
3032 case SM_CXMENUSIZE:
3033 ok( ret1 / 8 == MulDiv( ret2, dpi, custom_dpi ) / 8, "%u: wrong value %u vs %u\n", i, ret1, ret2 );
3034 break;
3035 case SM_CXFRAME:
3036 case SM_CYFRAME:
3037 ok( ret1 == ncm1.iBorderWidth + 3 && ret2 == ncm2.iBorderWidth + 3,
3038 "%u: wrong value %u vs %u borders %u+%u vs %u+%u\n", i, ret1, ret2,
3039 ncm1.iBorderWidth, ncm1.iPaddedBorderWidth, ncm2.iBorderWidth, ncm2.iPaddedBorderWidth );
3040 break;
3041 case SM_CXSMICON:
3042 case SM_CYSMICON:
3043 ok( ret1 == (MulDiv( 16, dpi, USER_DEFAULT_SCREEN_DPI ) & ~1) &&
3044 ret2 == (MulDiv( 16, custom_dpi, USER_DEFAULT_SCREEN_DPI ) & ~1),
3045 "%u: wrong value %u vs %u\n", i, ret1, ret2 );
3046 break;
3047 case SM_CXMENUCHECK:
3048 case SM_CYMENUCHECK:
3049 ok( ret1 == ((get_tmheightW( &ncm1.lfMenuFont, 1 ) - 1) | 1) &&
3050 ret2 == ((get_tmheightW( &ncm2.lfMenuFont, 1 ) - 1) | 1),
3051 "%u: wrong value %u vs %u font %u vs %u\n", i, ret1, ret2,
3052 get_tmheightW( &ncm1.lfMenuFont, 1 ), get_tmheightW( &ncm2.lfMenuFont, 1 ));
3053 break;
3054 case SM_CYMIN:
3055 case SM_CYMINTRACK:
3056 val = pGetSystemMetricsForDpi( SM_CYCAPTION, custom_dpi );
3057 val += 2 * pGetSystemMetricsForDpi( SM_CYFRAME, custom_dpi );
3058 val += 2 * ncm2.iPaddedBorderWidth;
3059 ok( ret1 == ret2 || ret2 == val /* Win10 1709+ */, "%u: expected %u or %u, got %u\n", i, ret1, val, ret2 );
3060 break;
3061 case SM_CXMIN:
3062 case SM_CXMINTRACK:
3063 val = MulDiv( ret1 - 7, custom_dpi, dpi );
3064 ok( ret1 == ret2 || (ret2 >= val - 10 && ret2 <= val + 10) /* Win10 1709+ */,
3065 "%u: expected %u or %u, got %u\n", i, ret1, val, ret2 );
3066 break;
3067 default:
3068 ok( ret1 == ret2, "%u: wrong value %u vs %u\n", i, ret1, ret2 );
3069 break;
3070 }
3071 }
3072 im1.cbSize = sizeof(im1);
3073 ret = SystemParametersInfoW( SPI_GETICONMETRICS, sizeof(im1), &im1, FALSE );
3074 ok( ret, "SystemParametersInfoW failed err %lu\n", GetLastError() );
3075 im2.cbSize = sizeof(im2);
3076 ret = pSystemParametersInfoForDpi( SPI_GETICONMETRICS, sizeof(im2), &im2, FALSE, custom_dpi );
3077 ok( ret, "SystemParametersInfoForDpi failed err %lu\n", GetLastError() );
3078 ok( im1.iHorzSpacing == MulDiv( im2.iHorzSpacing, dpi, custom_dpi ), "wrong iHorzSpacing %u vs %u\n",
3079 im1.iHorzSpacing, im2.iHorzSpacing );
3080 ok( im1.iVertSpacing == MulDiv( im2.iVertSpacing, dpi, custom_dpi ), "wrong iVertSpacing %u vs %u\n",
3081 im1.iVertSpacing, im2.iVertSpacing );
3082 ok( im1.iTitleWrap == im2.iTitleWrap, "wrong iTitleWrap %u vs %u\n",
3083 im1.iTitleWrap, im2.iTitleWrap );
3084 compare_font( &im1.lfFont, &im2.lfFont, dpi, custom_dpi, __LINE__ );
3085
3086 ret = SystemParametersInfoW( SPI_GETICONTITLELOGFONT, sizeof(lf1), &lf1, FALSE );
3087 ok( ret, "SystemParametersInfoW failed err %lu\n", GetLastError() );
3088 ret = pSystemParametersInfoForDpi( SPI_GETICONTITLELOGFONT, sizeof(lf2), &lf2, FALSE, custom_dpi );
3089 ok( ret, "SystemParametersInfoForDpi failed err %lu\n", GetLastError() );
3090 compare_font( &lf1, &lf2, dpi, custom_dpi, __LINE__ );
3091
3092 /* on high-dpi iPaddedBorderWidth is used in addition to iBorderWidth */
3093 ok( ncm1.iBorderWidth + ncm1.iPaddedBorderWidth == MulDiv( ncm2.iBorderWidth + ncm2.iPaddedBorderWidth, dpi, custom_dpi ),
3094 "wrong iBorderWidth %u+%u vs %u+%u\n",
3095 ncm1.iBorderWidth, ncm1.iPaddedBorderWidth, ncm2.iBorderWidth, ncm2.iPaddedBorderWidth );
3096 ok( ncm1.iScrollWidth == MulDiv( ncm2.iScrollWidth, dpi, custom_dpi ),
3097 "wrong iScrollWidth %u vs %u\n", ncm1.iScrollWidth, ncm2.iScrollWidth );
3098 ok( ncm1.iScrollHeight == MulDiv( ncm2.iScrollHeight, dpi, custom_dpi ),
3099 "wrong iScrollHeight %u vs %u\n", ncm1.iScrollHeight, ncm2.iScrollHeight );
3100 ok( ((ncm1.iCaptionWidth + 1) & ~1) == ((MulDiv( ncm2.iCaptionWidth, dpi, custom_dpi ) + 1) & ~1),
3101 "wrong iCaptionWidth %u vs %u\n", ncm1.iCaptionWidth, ncm2.iCaptionWidth );
3102 ok( ncm1.iCaptionHeight == MulDiv( ncm2.iCaptionHeight, dpi, custom_dpi ),
3103 "wrong iCaptionHeight %u vs %u\n", ncm1.iCaptionHeight, ncm2.iCaptionHeight );
3104 compare_font( &ncm1.lfCaptionFont, &ncm2.lfCaptionFont, dpi, custom_dpi, __LINE__ );
3105 ok( ncm1.iSmCaptionHeight == MulDiv( ncm2.iSmCaptionHeight, dpi, custom_dpi ),
3106 "wrong iSmCaptionHeight %u vs %u\n", ncm1.iSmCaptionHeight, ncm2.iSmCaptionHeight );
3107 compare_font( &ncm1.lfSmCaptionFont, &ncm2.lfSmCaptionFont, dpi, custom_dpi, __LINE__ );
3108 ok( ncm1.iMenuHeight == MulDiv( ncm2.iMenuHeight, dpi, custom_dpi ),
3109 "wrong iMenuHeight %u vs %u\n", ncm1.iMenuHeight, ncm2.iMenuHeight );
3110 /* iSmCaptionWidth and iMenuWidth apparently need to be multiples of 8 */
3111 ok( ncm1.iSmCaptionWidth / 8 == MulDiv( ncm2.iSmCaptionWidth, dpi, custom_dpi ) / 8,
3112 "wrong iSmCaptionWidth %u vs %u\n", ncm1.iSmCaptionWidth, ncm2.iSmCaptionWidth );
3113 ok( ncm1.iMenuWidth / 8 == MulDiv( ncm2.iMenuWidth, dpi, custom_dpi ) / 8,
3114 "wrong iMenuWidth %u vs %u\n", ncm1.iMenuWidth, ncm2.iMenuWidth );
3115 compare_font( &ncm1.lfMenuFont, &ncm2.lfMenuFont, dpi, custom_dpi, __LINE__ );
3116 compare_font( &ncm1.lfStatusFont, &ncm2.lfStatusFont, dpi, custom_dpi, __LINE__ );
3117 compare_font( &ncm1.lfMessageFont, &ncm2.lfMessageFont, dpi, custom_dpi, __LINE__ );
3118
3119 for (i = 1; i < 120; i++)
3120 {
3121 if (i == SPI_GETICONTITLELOGFONT || i == SPI_GETNONCLIENTMETRICS || i == SPI_GETICONMETRICS)
3122 continue;
3123 SetLastError( 0xdeadbeef );
3124 ret = pSystemParametersInfoForDpi( i, 0, &val, 0, custom_dpi );
3125 ok( !ret, "%u: SystemParametersInfoForDpi succeeded\n", i );
3126 ok( GetLastError() == ERROR_INVALID_PARAMETER, "%u: wrong error %lu\n", i, GetLastError() );
3127 }
3128}
static int get_tmheightW(LOGFONTW *plf, int flag)
Definition: sysparams.c:1489
static void compare_font(const LOGFONTW *lf1, const LOGFONTW *lf2, int dpi, int custom_dpi, int line)
Definition: sysparams.c:2958

Referenced by START_TEST(), and test_dpi_aware().

◆ test_setborder()

static BOOL test_setborder ( UINT  curr_val,
int  usesetborder,
int  dpi 
)
static

Definition at line 775 of file sysparams.c.

776{
777 BOOL rc;
778 UINT border, regval;
779 INT frame;
780 NONCLIENTMETRICSA ncm;
781
782 ncm.cbSize = FIELD_OFFSET(NONCLIENTMETRICSA, iPaddedBorderWidth);
783 rc=SystemParametersInfoA( SPI_GETNONCLIENTMETRICS, 0, &ncm, 0);
784 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
785 if( usesetborder) {
787 if (!test_error_msg(rc,"SPI_SETBORDER")) return FALSE;
788 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
790 } else { /* set non client metrics */
791 ncm.iBorderWidth = curr_val;
792 rc=SystemParametersInfoA( SPI_SETNONCLIENTMETRICS, 0, &ncm, SPIF_UPDATEINIFILE|
794 if (!test_error_msg(rc,"SPI_SETNONCLIENTMETRICS")) return FALSE;
795 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
796 test_change_message( SPI_SETNONCLIENTMETRICS, 1 );
797 }
798 if( curr_val) { /* skip if 0, some windows versions return 0 others 1 */
800 if( regval != curr_val)
802 ok( regval==curr_val, "wrong value in registry %d, expected %d\n", regval, curr_val);
803 }
804 /* minimum border width is 1 */
805 if (curr_val == 0) curr_val = 1;
806 /* should be the same as the non client metrics */
807 rc=SystemParametersInfoA( SPI_GETNONCLIENTMETRICS, 0, &ncm, 0);
808 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
809 eq( (UINT)ncm.iBorderWidth, curr_val, "NonClientMetric.iBorderWidth", "%d");
810 /* and from SPI_GETBORDER */
812 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
813 eq( border, curr_val, "SPI_{GET,SET}BORDER", "%d");
814 /* test some SystemMetrics */
815 frame = curr_val + GetSystemMetrics( SM_CXDLGFRAME );
816 eq( frame, GetSystemMetrics( SM_CXFRAME ), "SM_CXFRAME", "%d" );
817 eq( frame, GetSystemMetrics( SM_CYFRAME ), "SM_CYFRAME", "%d" );
818 eq( frame, GetSystemMetrics( SM_CXSIZEFRAME ), "SM_CXSIZEFRAME", "%d" );
819 eq( frame, GetSystemMetrics( SM_CYSIZEFRAME ), "SM_CYSIZEFRAME", "%d" );
820 return TRUE;
821}
GLint GLint GLsizei GLsizei GLsizei GLint border
Definition: gl.h:1546
#define SPI_SETBORDER_REGKEY2
Definition: sysparams.c:69
#define SPI_SETBORDER_REGKEY
Definition: sysparams.c:68
#define SPI_SETBORDER_VALNAME
Definition: sysparams.c:70
#define SPI_GETBORDER
Definition: winuser.h:1368
#define SM_CXSIZEFRAME
Definition: winuser.h:1004
#define SM_CYSIZEFRAME
Definition: winuser.h:1006

Referenced by test_SPI_SETBORDER().

◆ test_SetProcessDpiAwarenessContext()

static void test_SetProcessDpiAwarenessContext ( ULONG  arg)
static

Definition at line 3818 of file sysparams.c.

3819{
3820 DPI_AWARENESS_CONTEXT contexts[] =
3821 {
3822 (DPI_AWARENESS_CONTEXT)0x6010,
3823 (DPI_AWARENESS_CONTEXT)0x40006010,
3824 (DPI_AWARENESS_CONTEXT)((UINT_PTR)0x11 | (real_dpi << 8)),
3827 };
3828 DPI_AWARENESS_CONTEXT context, ctx, old_ctx, expect_ctx;
3829 UINT ret, i;
3830
3831 /* 0x11 is system aware DPI and only works with the current system DPI */
3832 if (arg == 0x11) context = contexts[2];
3833 else context = LongToHandle( arg ) /* sign-extend */;
3834
3835 if (context == DPI_AWARENESS_CONTEXT_UNAWARE) expect_ctx = contexts[0];
3836 else if (context == DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED) expect_ctx = contexts[1];
3837 else if (context == DPI_AWARENESS_CONTEXT_SYSTEM_AWARE) expect_ctx = contexts[2];
3838 else if (context == DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE) expect_ctx = contexts[3];
3839 else if (context == DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2) expect_ctx = contexts[4];
3840 else if ((arg & 0xff000000) == 0x80000000) expect_ctx = ULongToHandle( arg ) /* no sign-extend */;
3841 else expect_ctx = context;
3842
3843 winetest_push_context( "%#lx", arg );
3844
3845 ctx = pGetThreadDpiAwarenessContext();
3846 ok( ctx == (DPI_AWARENESS_CONTEXT)0x6010, "got %p\n", ctx );
3847
3848 SetLastError( 0xdeadbeef );
3849 ret = pSetProcessDpiAwarenessContext( 0 );
3850 ok( !ret, "SetProcessDpiAwarenessContext succeeded\n" );
3851 ok( GetLastError() == ERROR_INVALID_PARAMETER, "got %#lx\n", GetLastError() );
3852 SetLastError( 0xdeadbeef );
3853 ret = pSetProcessDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x11 );
3854 ok( !ret, "SetProcessDpiAwarenessContext succeeded\n" );
3856 SetLastError( 0xdeadbeef );
3857 ret = pSetProcessDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x21 );
3858 ok( !ret, "SetProcessDpiAwarenessContext succeeded\n" );
3859 ok( GetLastError() == ERROR_INVALID_PARAMETER, "got %#lx\n", GetLastError() );
3860 SetLastError( 0xdeadbeef );
3861 ret = pSetProcessDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x32 );
3862 ok( !ret, "SetProcessDpiAwarenessContext succeeded\n" );
3863 ok( GetLastError() == ERROR_INVALID_PARAMETER, "got %#lx\n", GetLastError() );
3864 SetLastError( 0xdeadbeef );
3865 ret = pSetProcessDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x6012 );
3866 ok( !ret, "SetProcessDpiAwarenessContext succeeded\n" );
3867 ok( GetLastError() == ERROR_INVALID_PARAMETER, "got %#lx\n", GetLastError() );
3868 SetLastError( 0xdeadbeef );
3869 ret = pSetProcessDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x6022 );
3870 ok( !ret, "SetProcessDpiAwarenessContext succeeded\n" );
3871 ok( GetLastError() == ERROR_INVALID_PARAMETER, "got %#lx\n", GetLastError() );
3872 SetLastError( 0xdeadbeef );
3873 ret = pSetProcessDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x40006011 );
3874 ok( !ret, "SetProcessDpiAwarenessContext succeeded\n" );
3875 ok( GetLastError() == ERROR_INVALID_PARAMETER, "got %#lx\n", GetLastError() );
3876 SetLastError( 0xdeadbeef );
3877 ret = pSetProcessDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x40000012 );
3878 ok( !ret, "SetProcessDpiAwarenessContext succeeded\n" );
3879 ok( GetLastError() == ERROR_INVALID_PARAMETER, "got %#lx\n", GetLastError() );
3880 SetLastError( 0xdeadbeef );
3881 ret = pSetProcessDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x7810 );
3882 ok( !ret, "SetProcessDpiAwarenessContext succeeded\n" );
3883 ok( GetLastError() == ERROR_INVALID_PARAMETER, "got %#lx\n", GetLastError() );
3884 SetLastError( 0xdeadbeef );
3885 ret = pSetProcessDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x1ff11 );
3886 ok( !ret, "SetProcessDpiAwarenessContext succeeded\n" );
3887 todo_wine ok( GetLastError() == ERROR_ACCESS_DENIED, "got %#lx\n", GetLastError() );
3888 ctx = pGetThreadDpiAwarenessContext();
3889 ok( ctx == (DPI_AWARENESS_CONTEXT)0x6010, "got %p\n", ctx );
3890
3891 SetLastError( 0xdeadbeef );
3892 ret = pSetProcessDpiAwarenessContext( context );
3893 ok( ret, "SetProcessDpiAwarenessContext failed, error %lu\n", GetLastError() );
3894 ok( GetLastError() == 0xdeadbeef, "got %#lx\n", GetLastError() );
3895 ctx = pGetThreadDpiAwarenessContext();
3896 ok( ctx == expect_ctx, "got %p\n", ctx );
3897
3898 for (i = 0; i < ARRAY_SIZE(contexts); i++)
3899 {
3900 SetLastError( 0xdeadbeef );
3901 ret = pSetProcessDpiAwarenessContext( contexts[i] );
3902 ok( !ret, "SetProcessDpiAwarenessContext succeeded\n" );
3903 ok( GetLastError() == ERROR_ACCESS_DENIED, "got %#lx\n", GetLastError() );
3904 ctx = pGetThreadDpiAwarenessContext();
3905 ok( ctx == expect_ctx, "got %p\n", ctx );
3906 }
3907
3908 /* thread DPI context overrides process DPI context */
3909 ctx = pGetThreadDpiAwarenessContext();
3910 ok( ctx == expect_ctx, "got %p\n", ctx );
3911 old_ctx = pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x12 );
3912 ok( old_ctx == (DPI_AWARENESS_CONTEXT)ULongToHandle( 0x80000000 | (UINT_PTR)expect_ctx ), "got %p\n", old_ctx );
3913 ctx = pGetThreadDpiAwarenessContext();
3914 ok( ctx == (DPI_AWARENESS_CONTEXT)0x12, "got %p\n", ctx );
3915 old_ctx = pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x22 );
3916 ok( old_ctx == ctx, "got %p\n", old_ctx );
3917 ctx = pGetThreadDpiAwarenessContext();
3918 ok( ctx == (DPI_AWARENESS_CONTEXT)0x22, "got %p\n", ctx );
3919
3920 /* thread DPI context can be reset to process DPI context with 0x80000000, but needs to be valid */
3921 SetLastError( 0xdeadbeef );
3922 old_ctx = pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x80000000 );
3923 ok( !old_ctx, "SetThreadDpiAwarenessContext succeeded\n" );
3924 ok( GetLastError() == ERROR_INVALID_PARAMETER, "got %#lx\n", GetLastError() );
3925 SetLastError( 0xdeadbeef );
3926 old_ctx = pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x80000010 );
3927 ok( !old_ctx, "SetThreadDpiAwarenessContext succeeded\n" );
3928 ok( GetLastError() == ERROR_INVALID_PARAMETER, "got %#lx\n", GetLastError() );
3929
3930 old_ctx = pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x80006010 );
3931 ok( old_ctx == ctx, "got %p\n", old_ctx );
3932 ctx = pGetThreadDpiAwarenessContext();
3933 ok( ctx == expect_ctx, "got %p\n", ctx );
3934 old_ctx = pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)((UINT_PTR)0x80000011 | (real_dpi << 8)) );
3935 ok( old_ctx == ULongToHandle( 0x80000000 | (UINT_PTR)expect_ctx ), "got %p\n", old_ctx );
3936 ctx = pGetThreadDpiAwarenessContext();
3937 ok( ctx == expect_ctx, "got %p\n", ctx );
3938 old_ctx = pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x80000012 );
3939 ok( old_ctx == ULongToHandle( 0x80000000 | (UINT_PTR)expect_ctx ), "got %p\n", old_ctx );
3940 ctx = pGetThreadDpiAwarenessContext();
3941 ok( ctx == expect_ctx, "got %p\n", ctx );
3942 old_ctx = pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x80000022 );
3943 ok( old_ctx == ULongToHandle( 0x80000000 | (UINT_PTR)expect_ctx ), "got %p\n", old_ctx );
3944 ctx = pGetThreadDpiAwarenessContext();
3945 ok( ctx == expect_ctx, "got %p\n", ctx );
3946
3948}
#define ARRAY_SIZE(A)
Definition: main.h:20
#define LongToHandle(h)
Definition: basetsd.h:76
#define ULongToHandle(h)
Definition: basetsd.h:75
void __cdecl void __cdecl void __cdecl void __cdecl void __cdecl void winetest_pop_context(void)
void __cdecl void __cdecl void __cdecl void __cdecl void __cdecl winetest_push_context(const char *fmt,...) __WINE_PRINTF_ATTR(1
Definition: test.h:537

Referenced by START_TEST().

◆ test_SetThreadDpiAwarenessContext()

static void test_SetThreadDpiAwarenessContext ( void  )
static

Definition at line 3950 of file sysparams.c.

3951{
3952 DPI_AWARENESS_CONTEXT ctx, old_ctx;
3953
3954 if (!pSetThreadDpiAwarenessContext || !pGetThreadDpiAwarenessContext)
3955 {
3956 win_skip( "(Set|Get)ThreadDpiAwarenessContext missing, skipping tests\n" );
3957 return;
3958 }
3959
3960 ctx = pGetThreadDpiAwarenessContext();
3961 ok( ctx == (DPI_AWARENESS_CONTEXT)0x6010, "got %p\n", ctx );
3962
3963 old_ctx = pSetThreadDpiAwarenessContext( 0 );
3964 ok( !old_ctx, "SetThreadDpiAwarenessContext succeeded\n" );
3965 old_ctx = pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x11 );
3966 ok( !old_ctx, "SetThreadDpiAwarenessContext succeeded\n" );
3967
3968 old_ctx = pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x12 );
3969 ok( old_ctx == (DPI_AWARENESS_CONTEXT)0x80006010, "got %p\n", old_ctx );
3970 ctx = pGetThreadDpiAwarenessContext();
3971 ok( ctx == (DPI_AWARENESS_CONTEXT)0x12, "got %p\n", ctx );
3972 old_ctx = pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x22 );
3973 ok( old_ctx == ctx, "got %p\n", old_ctx );
3974 ctx = pGetThreadDpiAwarenessContext();
3975 ok( ctx == (DPI_AWARENESS_CONTEXT)0x22, "got %p\n", ctx );
3976
3977 old_ctx = pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x7810 );
3978 ok( !old_ctx, "SetThreadDpiAwarenessContext succeeded\n" );
3979 old_ctx = pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x6010 );
3980 ok( old_ctx == ctx, "got %p\n", old_ctx );
3981 ctx = pGetThreadDpiAwarenessContext();
3982 ok( ctx == (DPI_AWARENESS_CONTEXT)0x6010, "got %p\n", ctx );
3983
3984 old_ctx = pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)((UINT_PTR)0x11 | ((real_dpi + 1) << 8)) );
3985 ok( !old_ctx, "SetThreadDpiAwarenessContext succeeded\n" );
3986 old_ctx = pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)((UINT_PTR)0x11 | (real_dpi << 8)) );
3987 ok( old_ctx == ctx, "got %p\n", old_ctx );
3988 ctx = pGetThreadDpiAwarenessContext();
3989 ok( ctx == (DPI_AWARENESS_CONTEXT)((UINT_PTR)0x11 | (real_dpi << 8)), "got %p\n", ctx );
3990
3991 old_ctx = pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x40006010 );
3992 ok( old_ctx == ctx, "got %p\n", old_ctx );
3993 ctx = pGetThreadDpiAwarenessContext();
3994 ok( ctx == (DPI_AWARENESS_CONTEXT)0x40006010, "got %p\n", ctx );
3995
3996 old_ctx = pSetThreadDpiAwarenessContext( DPI_AWARENESS_CONTEXT_UNAWARE );
3997 ok( old_ctx == ctx, "got %p\n", old_ctx );
3998 ctx = pGetThreadDpiAwarenessContext();
3999 ok( ctx == (DPI_AWARENESS_CONTEXT)0x6010, "got %p\n", ctx );
4000 old_ctx = pSetThreadDpiAwarenessContext( DPI_AWARENESS_CONTEXT_SYSTEM_AWARE );
4001 ok( old_ctx == ctx, "got %p\n", old_ctx );
4002 ctx = pGetThreadDpiAwarenessContext();
4003 ok( ctx == (DPI_AWARENESS_CONTEXT)((UINT_PTR)0x11 | (real_dpi << 8)), "got %p\n", ctx );
4004 old_ctx = pSetThreadDpiAwarenessContext( DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE );
4005 ok( old_ctx == ctx, "got %p\n", old_ctx );
4006 ctx = pGetThreadDpiAwarenessContext();
4007 ok( ctx == (DPI_AWARENESS_CONTEXT)0x12, "got %p\n", ctx );
4008 old_ctx = pSetThreadDpiAwarenessContext( DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 );
4009 ok( old_ctx == ctx, "got %p\n", old_ctx );
4010 ctx = pGetThreadDpiAwarenessContext();
4011 ok( ctx == (DPI_AWARENESS_CONTEXT)0x22, "got %p\n", ctx );
4012 old_ctx = pSetThreadDpiAwarenessContext( DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED );
4013 ok( old_ctx == ctx, "got %p\n", old_ctx );
4014 ctx = pGetThreadDpiAwarenessContext();
4015 ok( ctx == (DPI_AWARENESS_CONTEXT)0x40006010, "got %p\n", ctx );
4016
4017 /* restore process-wide DPI awareness context */
4018 ctx = pSetThreadDpiAwarenessContext( (DPI_AWARENESS_CONTEXT)0x80006010 );
4019 ok( ctx == (DPI_AWARENESS_CONTEXT)0x40006010, "got %p\n", ctx );
4020}

Referenced by START_TEST().

◆ test_SPI_ICONHORIZONTALSPACING()

static void test_SPI_ICONHORIZONTALSPACING ( void  )
static

Definition at line 945 of file sysparams.c.

946{
947 BOOL rc;
948 INT old_spacing;
949
950 trace("testing SPI_ICONHORIZONTALSPACING\n");
951 SetLastError(0xdeadbeef);
952 /* default value: 75 */
953 rc=SystemParametersInfoA( SPI_ICONHORIZONTALSPACING, 0, &old_spacing, 0 );
954 if (!test_error_msg(rc,"SPI_ICONHORIZONTALSPACING"))
955 return;
956 /* do not increase the value as it would upset the user's icon layout */
957 if (!dotest_spi_iconhorizontalspacing( old_spacing - 1)) return;
958 dotest_spi_iconhorizontalspacing( 10); /* minimum is 32 */
959 /* restore */
961 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
962}
static BOOL dotest_spi_iconhorizontalspacing(INT curr_val)
Definition: sysparams.c:911

Referenced by SysParamsThreadFunc().

◆ test_SPI_ICONVERTICALSPACING()

static void test_SPI_ICONVERTICALSPACING ( void  )
static

Definition at line 1114 of file sysparams.c.

1115{
1116 BOOL rc;
1117 INT old_spacing;
1118
1119 trace("testing SPI_ICONVERTICALSPACING\n");
1120 SetLastError(0xdeadbeef);
1121 /* default value: 75 */
1122 rc=SystemParametersInfoA( SPI_ICONVERTICALSPACING, 0, &old_spacing, 0 );
1123 if (!test_error_msg(rc,"SPI_ICONVERTICALSPACING"))
1124 return;
1125 /* do not increase the value as it would upset the user's icon layout */
1126 if (!dotest_spi_iconverticalspacing( old_spacing - 1)) return;
1127 /* same tests with a value less than the minimum 32 */
1129 /* restore */
1132 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
1133}
static BOOL dotest_spi_iconverticalspacing(INT curr_val)
Definition: sysparams.c:1080

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETBEEP()

static void test_SPI_SETBEEP ( void  )
static

Definition at line 586 of file sysparams.c.

587{
588 BOOL rc;
589 BOOL old_b;
590 BOOL b;
591 BOOL curr_val;
592
593 trace("testing SPI_{GET,SET}BEEP\n");
594 SetLastError(0xdeadbeef);
595 rc=SystemParametersInfoA( SPI_GETBEEP, 0, &old_b, 0 );
596 if (!test_error_msg(rc,"SPI_{GET,SET}BEEP"))
597 return;
598
599 curr_val = TRUE;
601 if (!test_error_msg(rc,"SPI_SETBEEP")) return;
602 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
606 curr_val ? "Yes" : "No" );
607 rc=SystemParametersInfoA( SPI_GETBEEP, 0, &b, 0 );
608 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
609 eq( b, curr_val, "SPI_{GET,SET}BEEP", "%d" );
610 rc=SystemParametersInfoW( SPI_GETBEEP, 0, &b, 0 );
612 {
613 ok(rc, "SystemParametersInfoW: rc=%d err=%ld\n", rc, GetLastError());
614 eq( b, curr_val, "SystemParametersInfoW", "%d" );
615 }
616
617 /* is a message sent for the second change? */
619 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
621
622 curr_val = FALSE;
626 ok(rc, "SystemParametersInfo: rc=%d err=%ld\n", rc, GetLastError());
630 curr_val ? "Yes" : "No" );
631 rc=SystemParametersInfoA( SPI_GETBEEP, 0, &b, 0 );
632 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
633 eq( b, curr_val, "SPI_{GET,SET}BEEP", "%d" );
634 rc=SystemParametersInfoW( SPI_GETBEEP, 0, &b, 0 );
636 {
637 ok(rc, "SystemParametersInfoW: rc=%d err=%ld\n", rc, GetLastError());
638 eq( b, curr_val, "SystemParametersInfoW", "%d" );
639 }
640 ok( MessageBeep( MB_OK ), "Return value of MessageBeep when sound is disabled\n" );
641
643 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
644}
#define ERROR_CALL_NOT_IMPLEMENTED
Definition: compat.h:102
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
#define b
Definition: ke_i.h:79
#define SPI_SETBEEP_VALNAME
Definition: sysparams.c:63
#define SPI_SETBEEP_REGKEY
Definition: sysparams.c:62
BOOL WINAPI MessageBeep(_In_ UINT uType)
#define MB_OK
Definition: winuser.h:801
#define SPI_GETBEEP
Definition: winuser.h:1364

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETBORDER()

static void test_SPI_SETBORDER ( void  )
static

Definition at line 823 of file sysparams.c.

824{
825 BOOL rc;
826 UINT old_border;
827 NONCLIENTMETRICSA ncmsave;
828 INT CaptionWidth,
829 PaddedBorderWidth;
830
831 ncmsave.cbSize = FIELD_OFFSET(NONCLIENTMETRICSA, iPaddedBorderWidth);
832 rc=SystemParametersInfoA( SPI_GETNONCLIENTMETRICS, 0, &ncmsave, 0);
833 if( !rc) {
834 win_skip("SPI_GETNONCLIENTMETRICS is not available\n");
835 return;
836 }
837 /* CaptionWidth from the registry may have different value of iCaptionWidth
838 * from the non client metrics (observed on WinXP).
839 * Fix this so we can safely restore settings with the nonclientmetrics */
840 CaptionWidth = metricfromreg(
841 "Control Panel\\Desktop\\WindowMetrics","CaptionWidth", dpi);
842 ncmsave.iCaptionWidth = CaptionWidth;
843
844 trace("testing SPI_{GET,SET}BORDER\n");
845
846 SetLastError(0xdeadbeef);
847 rc=SystemParametersInfoA( SPI_GETBORDER, 0, &old_border, 0 );
848 if (!test_error_msg(rc,"SPI_{GET,SET}BORDER"))
849 return;
850 /* FIXME: include new PaddedBorderWidth parameter */
851 PaddedBorderWidth = ncmsave.iBorderWidth - old_border;
852 if( PaddedBorderWidth){
853 win_skip( "Cannot reliably restore border width yet (PaddedBorderWidth = %d)\n",
854 PaddedBorderWidth);
855 return;
856 }
857 /* This will restore sane values if the test hang previous run. */
858 if ( old_border == 7 || old_border == 20 )
859 old_border = 1;
860
861 /* win2k3 fails if you set the same border twice, or if size is 0 */
862 if (!test_setborder(2, 1, dpi)) return;
863 test_setborder(1, 1, dpi);
864 test_setborder(3, 1, dpi);
865 if (!test_setborder(1, 0, dpi)) return;
866 test_setborder(0, 0, dpi);
867 test_setborder(3, 0, dpi);
868
869 rc=SystemParametersInfoA( SPI_SETNONCLIENTMETRICS, 0, &ncmsave,
871 test_change_message( SPI_SETNONCLIENTMETRICS, 1 );
872 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
873}
static BOOL test_setborder(UINT curr_val, int usesetborder, int dpi)
Definition: sysparams.c:775

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETDOUBLECLICKTIME()

static void test_SPI_SETDOUBLECLICKTIME ( void  )
static

Definition at line 1289 of file sysparams.c.

1290{
1291 BOOL rc;
1292 UINT curr_val;
1293 UINT saved_val;
1294 UINT old_time;
1295 char buf[10];
1296
1297 trace("testing SPI_{GET,SET}DOUBLECLICKTIME\n");
1298 old_time = GetDoubleClickTime();
1299
1300 curr_val = 0;
1301 SetLastError(0xdeadbeef);
1304 if (!test_error_msg(rc,"SPI_{GET,SET}DOUBLECLICKTIME"))
1305 return;
1306
1308 sprintf( buf, "%d", curr_val );
1311 curr_val = 500; /* used value for 0 */
1312 eq( GetDoubleClickTime(), curr_val, "GetDoubleClickTime", "%d" );
1313
1314 curr_val = 1000;
1317 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
1319 sprintf( buf, "%d", curr_val );
1322 eq( GetDoubleClickTime(), curr_val, "GetDoubleClickTime", "%d" );
1323
1324 saved_val = curr_val;
1325
1326 curr_val = 0;
1327 SetDoubleClickTime( curr_val );
1328 sprintf( buf, "%d", saved_val );
1331 curr_val = 500; /* used value for 0 */
1332 eq( GetDoubleClickTime(), curr_val, "GetDoubleClickTime", "%d" );
1333
1334 curr_val = 1000;
1335 SetDoubleClickTime( curr_val );
1336 sprintf( buf, "%d", saved_val );
1339 eq( GetDoubleClickTime(), curr_val, "GetDoubleClickTime", "%d" );
1340
1342 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
1344}
#define SPI_SETDOUBLECLICKTIME_REGKEY
Definition: sysparams.c:119
static void flush_change_messages(void)
Definition: sysparams.c:306
#define SPI_SETDOUBLECLICKTIME_VALNAME
Definition: sysparams.c:120
BOOL WINAPI SetDoubleClickTime(_In_ UINT)
UINT WINAPI GetDoubleClickTime(void)
Definition: ntwrapper.h:314
#define SPI_SETDOUBLECLICKTIME
Definition: winuser.h:1392

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETDOUBLECLKHEIGHT()

static void test_SPI_SETDOUBLECLKHEIGHT ( void  )
static

Definition at line 1254 of file sysparams.c.

1255{
1256 BOOL rc;
1257 INT old_height;
1258 const UINT vals[]={0,10000};
1259 unsigned int i;
1260
1261 trace("testing SPI_{GET,SET}DOUBLECLKHEIGHT\n");
1262 old_height = GetSystemMetrics( SM_CYDOUBLECLK );
1263
1264 for (i=0;i<ARRAY_SIZE(vals);i++)
1265 {
1266 char buf[10];
1267
1268 SetLastError(0xdeadbeef);
1271 if (!test_error_msg(rc,"SPI_{GET,SET}DOUBLECLKHEIGHT"))
1272 return;
1273
1275 sprintf( buf, "%d", vals[i] );
1279 eq( GetSystemMetrics( SM_CYDOUBLECLK ), (int)vals[i],
1280 "SM_CYDOUBLECLK", "%d" );
1281 }
1282
1285 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
1287}
#define SPI_SETDOUBLECLKHEIGHT_REGKEY1
Definition: sysparams.c:116
#define SPI_SETDOUBLECLKHEIGHT_VALNAME
Definition: sysparams.c:118
#define test_reg_key_ex(subKey1, subKey2, valName, testValue)
Definition: sysparams.c:485
#define SPI_SETDOUBLECLKHEIGHT_REGKEY2
Definition: sysparams.c:117
#define SPI_SETDOUBLECLKHEIGHT
Definition: winuser.h:1390
#define SM_CYDOUBLECLK
Definition: winuser.h:1011

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETDOUBLECLKWIDTH()

static void test_SPI_SETDOUBLECLKWIDTH ( void  )
static

Definition at line 1220 of file sysparams.c.

1221{
1222 BOOL rc;
1223 INT old_width;
1224 const UINT vals[]={0,10000};
1225 unsigned int i;
1226
1227 trace("testing SPI_{GET,SET}DOUBLECLKWIDTH\n");
1228 old_width = GetSystemMetrics( SM_CXDOUBLECLK );
1229
1230 for (i=0;i<ARRAY_SIZE(vals);i++)
1231 {
1232 char buf[10];
1233
1234 SetLastError(0xdeadbeef);
1237 if (!test_error_msg(rc,"SPI_{GET,SET}DOUBLECLKWIDTH"))
1238 return;
1239
1241 sprintf( buf, "%d", vals[i] );
1245 eq( GetSystemMetrics( SM_CXDOUBLECLK ), (int)vals[i],
1246 "SM_CXDOUBLECLK", "%d" );
1247 }
1248
1251 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
1252}
#define SPI_SETDOUBLECLKWIDTH_VALNAME
Definition: sysparams.c:115
#define SPI_SETDOUBLECLKWIDTH_REGKEY2
Definition: sysparams.c:114
#define SPI_SETDOUBLECLKWIDTH_REGKEY1
Definition: sysparams.c:113
#define SM_CXDOUBLECLK
Definition: winuser.h:1010
#define SPI_SETDOUBLECLKWIDTH
Definition: winuser.h:1389

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETDRAGFULLWINDOWS()

static void test_SPI_SETDRAGFULLWINDOWS ( void  )
static

Definition at line 1398 of file sysparams.c.

1399{
1400 BOOL rc;
1401 BOOL old_b;
1402 const UINT vals[]={TRUE,FALSE};
1403 unsigned int i;
1404
1405 trace("testing SPI_{GET,SET}DRAGFULLWINDOWS\n");
1406 SetLastError(0xdeadbeef);
1407 rc=SystemParametersInfoA( SPI_GETDRAGFULLWINDOWS, 0, &old_b, 0 );
1408
1409 /* SPI_{GET,SET}DRAGFULLWINDOWS is not implemented on Win95 */
1410 if (!test_error_msg(rc,"SPI_{GET,SET}DRAGFULLWINDOWS"))
1411 return;
1412
1413 for (i=0;i<ARRAY_SIZE(vals);i++)
1414 {
1415 UINT v;
1416
1417 rc=SystemParametersInfoA( SPI_SETDRAGFULLWINDOWS, vals[i], 0,
1419 if (!test_error_msg(rc,"SPI_SETDRAGFULLWINDOWS")) return;
1420 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
1421 test_change_message( SPI_SETDRAGFULLWINDOWS, 0 );
1424 vals[i] ? "1" : "0" );
1425
1426 rc=SystemParametersInfoA( SPI_GETDRAGFULLWINDOWS, 0, &v, 0 );
1427 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
1428 eq( v, vals[i], "SPI_{GET,SET}DRAGFULLWINDOWS", "%d" );
1429 }
1430
1431 rc=SystemParametersInfoA( SPI_SETDRAGFULLWINDOWS, old_b, 0, SPIF_UPDATEINIFILE );
1432 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
1434}
const GLdouble * v
Definition: gl.h:2040
#define SPI_SETDRAGFULLWINDOWS_REGKEY
Definition: sysparams.c:144
#define SPI_SETDRAGFULLWINDOWS_VALNAME
Definition: sysparams.c:145

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETFASTTASKSWITCH()

static void test_SPI_SETFASTTASKSWITCH ( void  )
static

Definition at line 1382 of file sysparams.c.

1383{
1384 BOOL rc;
1385 BOOL v;
1386
1387 trace("testing SPI_GETFASTTASKSWITCH\n");
1388 SetLastError(0xdeadbeef);
1390 if (!test_error_msg(rc,"SPI_{GET,SET}FASTTASKSWITCH"))
1391 return;
1392
1393 /* there is not a single Windows platform on which SPI_GETFASTTASKSWITCH
1394 * works. That sure simplifies testing!
1395 */
1396}
#define SPI_GETFASTTASKSWITCH
Definition: winuser.h:1395

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETFONTSMOOTHING()

static void test_SPI_SETFONTSMOOTHING ( void  )
static

Definition at line 2038 of file sysparams.c.

2039{
2040 BOOL rc;
2041 BOOL old_b;
2042 DWORD old_type, old_contrast, old_orient;
2043 const UINT vals[]={0xffffffff,0,1,2};
2044 unsigned int i;
2045
2046 trace("testing SPI_{GET,SET}FONTSMOOTHING\n");
2047 SetLastError(0xdeadbeef);
2048 rc=SystemParametersInfoA( SPI_GETFONTSMOOTHING, 0, &old_b, 0 );
2049 if (!test_error_msg(rc,"SPI_{GET,SET}FONTSMOOTHING"))
2050 return;
2051 SystemParametersInfoA( SPI_GETFONTSMOOTHINGTYPE, 0, &old_type, 0 );
2052 SystemParametersInfoA( SPI_GETFONTSMOOTHINGCONTRAST, 0, &old_contrast, 0 );
2053 SystemParametersInfoA( SPI_GETFONTSMOOTHINGORIENTATION, 0, &old_orient, 0 );
2054
2055 for (i=0;i<ARRAY_SIZE(vals);i++)
2056 {
2057 UINT v;
2058
2059 rc=SystemParametersInfoA( SPI_SETFONTSMOOTHING, vals[i], 0,
2061 if (!test_error_msg(rc,"SPI_SETFONTSMOOTHING")) return;
2062 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
2063 test_change_message( SPI_SETFONTSMOOTHING, 0 );
2066 vals[i] ? "2" : "0" );
2067
2068 rc=SystemParametersInfoA( SPI_SETFONTSMOOTHINGTYPE, 0, UlongToPtr(vals[i]),
2070 if (!test_error_msg(rc,"SPI_SETFONTSMOOTHINGTYPE")) return;
2071 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
2072 test_change_message( SPI_SETFONTSMOOTHINGTYPE, 0 );
2075
2076 rc=SystemParametersInfoA( SPI_SETFONTSMOOTHINGCONTRAST, 0, UlongToPtr(vals[i]),
2078 if (!test_error_msg(rc,"SPI_SETFONTSMOOTHINGCONTRAST")) return;
2079 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
2080 test_change_message( SPI_SETFONTSMOOTHINGCONTRAST, 0 );
2083
2084 rc=SystemParametersInfoA( SPI_SETFONTSMOOTHINGORIENTATION, 0, UlongToPtr(vals[i]),
2086 if (!test_error_msg(rc,"SPI_SETFONTSMOOTHINGORIENTATION")) return;
2087 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
2088 test_change_message( SPI_SETFONTSMOOTHINGORIENTATION, 0 );
2091
2092 rc=SystemParametersInfoA( SPI_GETFONTSMOOTHING, 0, &v, 0 );
2093 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
2094 eq( v, vals[i] ? 1 : 0, "SPI_GETFONTSMOOTHING", "%d" );
2095
2096 rc=SystemParametersInfoA( SPI_GETFONTSMOOTHINGTYPE, 0, &v, 0 );
2097 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
2098 ok( v == vals[i], "wrong value %x/%x\n", v, vals[i] );
2099
2100 rc=SystemParametersInfoA( SPI_GETFONTSMOOTHINGCONTRAST, 0, &v, 0 );
2101 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
2102 ok( v == vals[i], "wrong value %x/%x\n", v, vals[i] );
2103
2104 rc=SystemParametersInfoA( SPI_GETFONTSMOOTHINGORIENTATION, 0, &v, 0 );
2105 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
2106 ok( v == vals[i], "wrong value %x/%x\n", v, vals[i] );
2107 }
2108
2109 rc=SystemParametersInfoA( SPI_SETFONTSMOOTHING, old_b, 0, SPIF_UPDATEINIFILE );
2110 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
2111 rc=SystemParametersInfoA( SPI_SETFONTSMOOTHINGTYPE, old_type, 0, SPIF_UPDATEINIFILE );
2112 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
2113 rc=SystemParametersInfoA( SPI_SETFONTSMOOTHINGCONTRAST, old_contrast, 0, SPIF_UPDATEINIFILE );
2114 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
2115 rc=SystemParametersInfoA( SPI_SETFONTSMOOTHINGORIENTATION, old_orient, 0, SPIF_UPDATEINIFILE );
2116 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
2118}
#define UlongToPtr(u)
Definition: config.h:106
#define SPI_SETFONTSMOOTHINGCONTRAST_VALNAME
Definition: sysparams.c:138
#define test_reg_key_dword(subKey, valName, testValue)
Definition: sysparams.c:491
#define SPI_SETFONTSMOOTHINGTYPE_VALNAME
Definition: sysparams.c:137
#define SPI_SETFONTSMOOTHING_VALNAME
Definition: sysparams.c:136
#define SPI_SETFONTSMOOTHING_REGKEY
Definition: sysparams.c:135
#define SPI_SETFONTSMOOTHINGORIENTATION_VALNAME
Definition: sysparams.c:139

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETGRIDGRANULARITY()

static void test_SPI_SETGRIDGRANULARITY ( void  )
static

Definition at line 1037 of file sysparams.c.

1038{
1039 /* ??? */;
1040}

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETICONMETRICS()

static void test_SPI_SETICONMETRICS ( void  )
static

Definition at line 1755 of file sysparams.c.

1756{
1757 BOOL rc, wrap;
1758 INT spacing;
1759 ICONMETRICSA im_orig;
1760 ICONMETRICSA im_new;
1761 ICONMETRICSA im_cur;
1762 INT regval;
1763
1764 im_orig.cbSize = sizeof(ICONMETRICSA);
1765 im_new.cbSize = sizeof(ICONMETRICSA);
1766 im_cur.cbSize = sizeof(ICONMETRICSA);
1767
1768 trace("testing SPI_{GET,SET}ICONMETRICS\n");
1769 SetLastError(0xdeadbeef);
1770 rc=SystemParametersInfoA( SPI_GETICONMETRICS, sizeof(ICONMETRICSA), &im_orig, FALSE );
1771 if (!test_error_msg(rc,"SPI_{GET,SET}ICONMETRICS"))
1772 return;
1773 /* check some registry values */
1775 ok( regval==im_orig.iHorzSpacing,
1776 "wrong value in registry %d, expected %d\n", regval, im_orig.iHorzSpacing);
1778 ok( regval==im_orig.iVertSpacing,
1779 "wrong value in registry %d, expected %d\n", regval, im_orig.iVertSpacing);
1781 if( regval != im_orig.iTitleWrap)
1783 ok( regval==im_orig.iTitleWrap, "wrong value in registry %d, expected %d\n", regval, im_orig.iTitleWrap);
1784
1785 /* change everything without creating something invalid ( Win9x would ignore
1786 * an invalid font for instance) */
1787 im_cur = im_orig;
1788 im_cur.iHorzSpacing += 10;
1789 im_cur.iVertSpacing += 6;
1790 im_cur.iTitleWrap = !im_cur.iTitleWrap;
1791 im_cur.lfFont.lfHeight += 1;
1792 im_cur.lfFont.lfWidth += 2;
1793 im_cur.lfFont.lfEscapement = 1;
1794 im_cur.lfFont.lfWeight = im_cur.lfFont.lfWeight > 100 ? 1 : 314;
1795 im_cur.lfFont.lfItalic = !im_cur.lfFont.lfItalic;
1796 im_cur.lfFont.lfStrikeOut = !im_cur.lfFont.lfStrikeOut;
1797 im_cur.lfFont.lfUnderline = !im_cur.lfFont.lfUnderline;
1798 im_cur.lfFont.lfCharSet = im_cur.lfFont.lfCharSet ? 0 : 1;
1799 im_cur.lfFont.lfOutPrecision = im_cur.lfFont.lfOutPrecision == OUT_DEFAULT_PRECIS ?
1801 im_cur.lfFont.lfClipPrecision ^= CLIP_LH_ANGLES;
1802 im_cur.lfFont.lfPitchAndFamily = im_cur.lfFont.lfPitchAndFamily ? 0 : 1;
1803 im_cur.lfFont.lfQuality = im_cur.lfFont.lfQuality == DEFAULT_QUALITY ?
1805 if( strcmp( im_cur.lfFont.lfFaceName, "MS Serif"))
1806 strcpy( im_cur.lfFont.lfFaceName, "MS Serif");
1807 else
1808 strcpy( im_cur.lfFont.lfFaceName, "MS Sans Serif");
1809
1810 rc=SystemParametersInfoA( SPI_SETICONMETRICS, sizeof(ICONMETRICSA), &im_cur, SPIF_UPDATEINIFILE );
1811 if (!test_error_msg(rc,"SPI_SETICONMETRICS")) return;
1812 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
1813
1814 rc=SystemParametersInfoA( SPI_GETICONMETRICS, sizeof(ICONMETRICSA), &im_new, FALSE );
1815 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
1816 /* test GET <-> SETICONMETRICS */
1817 eq( im_new.iHorzSpacing, im_cur.iHorzSpacing, "iHorzSpacing", "%d" );
1818 eq( im_new.iVertSpacing, im_cur.iVertSpacing, "iVertSpacing", "%d" );
1819 eq( im_new.iTitleWrap, im_cur.iTitleWrap, "iTitleWrap", "%d" );
1820 eq( im_new.lfFont.lfHeight, im_cur.lfFont.lfHeight, "lfHeight", "%ld" );
1821 eq( im_new.lfFont.lfWidth, im_cur.lfFont.lfWidth, "lfWidth", "%ld" );
1822 eq( im_new.lfFont.lfEscapement, im_cur.lfFont.lfEscapement, "lfEscapement", "%ld" );
1823 eq( im_new.lfFont.lfWeight, im_cur.lfFont.lfWeight, "lfWeight", "%ld" );
1824 eq( im_new.lfFont.lfItalic, im_cur.lfFont.lfItalic, "lfItalic", "%d" );
1825 eq( im_new.lfFont.lfStrikeOut, im_cur.lfFont.lfStrikeOut, "lfStrikeOut", "%d" );
1826 eq( im_new.lfFont.lfUnderline, im_cur.lfFont.lfUnderline, "lfUnderline", "%d" );
1827 eq( im_new.lfFont.lfCharSet, im_cur.lfFont.lfCharSet, "lfCharSet", "%d" );
1828 eq( im_new.lfFont.lfOutPrecision, im_cur.lfFont.lfOutPrecision, "lfOutPrecision", "%d" );
1829 eq( im_new.lfFont.lfClipPrecision, im_cur.lfFont.lfClipPrecision, "lfClipPrecision", "%d" );
1830 eq( im_new.lfFont.lfPitchAndFamily, im_cur.lfFont.lfPitchAndFamily, "lfPitchAndFamily", "%d" );
1831 eq( im_new.lfFont.lfQuality, im_cur.lfFont.lfQuality, "lfQuality", "%d" );
1832 ok( !strcmp( im_new.lfFont.lfFaceName, im_cur.lfFont.lfFaceName),
1833 "wrong facename \"%s\", should be \"%s\"\n", im_new.lfFont.lfFaceName,
1834 im_cur.lfFont.lfFaceName);
1835 /* test some system metrics */
1837 im_new.iHorzSpacing, "iHorzSpacing", "%d" );
1839 im_new.iVertSpacing, "iVertSpacing", "%d" );
1840 /* check some registry values */
1842 ok( regval==im_cur.iHorzSpacing, "wrong value in registry %d, expected %d\n", regval, im_cur.iHorzSpacing);
1844 ok( regval==im_cur.iVertSpacing, "wrong value in registry %d, expected %d\n", regval, im_cur.iVertSpacing);
1846 if( regval != im_cur.iTitleWrap)
1848 ok( regval==im_cur.iTitleWrap, "wrong value in registry %d, expected %d\n", regval, im_cur.iTitleWrap);
1849 /* test some values from other SPI_GETxxx calls */
1850 rc = SystemParametersInfoA( SPI_ICONHORIZONTALSPACING, 0, &spacing, 0 );
1851 ok( rc && spacing == im_cur.iHorzSpacing,
1852 "SystemParametersInfoA( SPI_ICONHORIZONTALSPACING...) failed or returns wrong value %d instead of %d\n",
1853 spacing, im_cur.iHorzSpacing);
1854 rc = SystemParametersInfoA( SPI_ICONVERTICALSPACING, 0, &spacing, 0 );
1855 ok( rc && spacing == im_cur.iVertSpacing,
1856 "SystemParametersInfoA( SPI_ICONVERTICALSPACING...) failed or returns wrong value %d instead of %d\n",
1857 spacing, im_cur.iVertSpacing);
1859 ok( rc && wrap == im_cur.iTitleWrap,
1860 "SystemParametersInfoA( SPI_GETICONTITLEWRAP...) failed or returns wrong value %d instead of %d\n",
1861 wrap, im_cur.iTitleWrap);
1862 /* restore old values */
1863 rc=SystemParametersInfoA( SPI_SETICONMETRICS, sizeof(ICONMETRICSA), &im_orig,SPIF_UPDATEINIFILE );
1864 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
1866
1867 rc=SystemParametersInfoA( SPI_GETICONMETRICS, sizeof(ICONMETRICSA), &im_new, FALSE );
1868 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
1869
1870 eq( im_new.iHorzSpacing, im_orig.iHorzSpacing, "iHorzSpacing", "%d" );
1871 eq( im_new.iVertSpacing, im_orig.iVertSpacing, "iVertSpacing", "%d" );
1872 eq( im_new.iTitleWrap, im_orig.iTitleWrap, "iTitleWrap", "%d" );
1873}
#define wrap(journal, var)
Definition: recovery.c:207
#define SPI_SETICONTITLEWRAP_REGKEY1
Definition: sysparams.c:107
#define SPI_SETICONTITLEWRAP_VALNAME
Definition: sysparams.c:109
#define SPI_SETICONTITLEWRAP_REGKEY2
Definition: sysparams.c:108
strcpy
Definition: string.h:131
#define DEFAULT_QUALITY
Definition: wingdi.h:436
#define DRAFT_QUALITY
Definition: wingdi.h:437
#define CLIP_LH_ANGLES
Definition: wingdi.h:430
#define OUT_DEFAULT_PRECIS
Definition: wingdi.h:415
#define OUT_TT_PRECIS
Definition: wingdi.h:419
#define SPI_GETICONTITLEWRAP
Definition: winuser.h:1385

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETICONTITLEWRAP()

static void test_SPI_SETICONTITLEWRAP ( void  )
static

Definition at line 1135 of file sysparams.c.

1136{
1137 BOOL rc;
1138 BOOL old_b;
1139 const UINT vals[]={TRUE,FALSE};
1140 unsigned int i;
1141 ICONMETRICSA im;
1142
1143 trace("testing SPI_{GET,SET}ICONTITLEWRAP\n");
1144 SetLastError(0xdeadbeef);
1145 rc=SystemParametersInfoA( SPI_GETICONTITLEWRAP, 0, &old_b, 0 );
1146 if (!test_error_msg(rc,"SPI_{GET,SET}ICONTITLEWRAP"))
1147 return;
1148
1149 for (i=0;i<ARRAY_SIZE(vals);i++)
1150 {
1151 UINT v;
1152 UINT regval;
1153
1156 if (!test_error_msg(rc,"SPI_SETICONTITLEWRAP")) return;
1157 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
1161 if( regval != vals[i])
1164 ok( regval == vals[i], "wrong value in registry %d, expected %d\n", regval, vals[i] );
1165
1167 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
1168 eq( v, vals[i], "SPI_{GET,SET}ICONTITLEWRAP", "%d" );
1169 /* and test with what SPI_GETICONMETRICS returns */
1170 im.cbSize = sizeof(ICONMETRICSA);
1171 rc=SystemParametersInfoA( SPI_GETICONMETRICS, sizeof(ICONMETRICSA), &im, FALSE );
1172 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
1173 eq( im.iTitleWrap, (BOOL)vals[i], "SPI_GETICONMETRICS", "%d" );
1174 }
1175
1177 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
1178}
#define SPI_SETICONTITLEWRAP
Definition: winuser.h:1386

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETKEYBOARDDELAY()

static void test_SPI_SETKEYBOARDDELAY ( void  )
static

Definition at line 1042 of file sysparams.c.

1043{
1044 BOOL rc;
1045 UINT old_delay;
1046 const UINT vals[]={0,3};
1047 unsigned int i;
1048
1049 trace("testing SPI_{GET,SET}KEYBOARDDELAY\n");
1050 SetLastError(0xdeadbeef);
1051 rc=SystemParametersInfoA( SPI_GETKEYBOARDDELAY, 0, &old_delay, 0 );
1052 if (!test_error_msg(rc,"SPI_{GET,SET}KEYBOARDDELAY"))
1053 return;
1054
1055 for (i=0;i<ARRAY_SIZE(vals);i++)
1056 {
1057 UINT delay;
1058 char buf[10];
1059
1062 if (!test_error_msg(rc,"SPI_SETKEYBOARDDELAY")) return;
1063 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
1065 sprintf( buf, "%d", vals[i] );
1068
1069 rc=SystemParametersInfoA( SPI_GETKEYBOARDDELAY, 0, &delay, 0 );
1070 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
1071 eq( delay, vals[i], "SPI_{GET,SET}KEYBOARDDELAY", "%d" );
1072 }
1073
1075 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
1076}
#define SPI_SETKEYBOARDDELAY_REGKEY
Definition: sysparams.c:105
#define SPI_SETKEYBOARDDELAY_VALNAME
Definition: sysparams.c:106
#define SPI_GETKEYBOARDDELAY
Definition: winuser.h:1382
#define SPI_SETKEYBOARDDELAY
Definition: winuser.h:1383

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETKEYBOARDPREF()

static void test_SPI_SETKEYBOARDPREF ( void  )
static

Definition at line 1966 of file sysparams.c.

1967{
1968 BOOL rc;
1969 BOOL vals[2];
1970 unsigned int i;
1971
1972 trace("testing SPI_{GET,SET}KEYBOARDPREF\n");
1973 SetLastError(0xdeadbeef);
1974 rc=SystemParametersInfoA( SPI_GETKEYBOARDPREF, 0, &vals[1], 0 );
1975 if (!test_error_msg(rc,"SPI_{GET,SET}KEYBOARDPREF"))
1976 return;
1977 vals[0] = !vals[1];
1978
1979 for (i=0;i<ARRAY_SIZE(vals);i++)
1980 {
1981 BOOL v;
1982
1983 rc=SystemParametersInfoA( SPI_SETKEYBOARDPREF, vals[i], 0,
1985 if (!test_error_msg(rc,"SPI_SETKEYBOARDPREF")) break;
1986 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
1987 test_change_message( SPI_SETKEYBOARDPREF, 1 );
1990 vals[i] ? "1" : "0" );
1991
1992 rc=SystemParametersInfoA( SPI_GETKEYBOARDPREF, 0, &v, 0 );
1993 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
1994 eq( v, (BOOL)vals[i], "SPI_GETKEYBOARDPREF", "%d" );
1995 }
1996
1997 rc=SystemParametersInfoA( SPI_SETKEYBOARDPREF, vals[1], 0, SPIF_UPDATEINIFILE );
1998 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
2000}
#define test_reg_key_ex2(subKey1, subKey2, valName1, valName2, testValue)
Definition: sysparams.c:487
#define SPI_SETKEYBOARDPREF_REGKEY
Definition: sysparams.c:127
#define SPI_SETKEYBOARDPREF_VALNAME_LEGACY
Definition: sysparams.c:130
#define SPI_SETKEYBOARDPREF_VALNAME
Definition: sysparams.c:128
#define SPI_SETKEYBOARDPREF_REGKEY_LEGACY
Definition: sysparams.c:129

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETKEYBOARDSPEED()

static void test_SPI_SETKEYBOARDSPEED ( void  )
static

Definition at line 875 of file sysparams.c.

876{
877 BOOL rc;
878 UINT old_speed;
879 const UINT vals[]={0,20,31};
880 unsigned int i;
881
882 trace("testing SPI_{GET,SET}KEYBOARDSPEED\n");
883 SetLastError(0xdeadbeef);
884 rc=SystemParametersInfoA( SPI_GETKEYBOARDSPEED, 0, &old_speed, 0 );
885 if (!test_error_msg(rc,"SPI_{GET,SET}KEYBOARDSPEED"))
886 return;
887
888 for (i=0;i<ARRAY_SIZE(vals);i++)
889 {
890 UINT v;
891 char buf[10];
892
895 if (!test_error_msg(rc,"SPI_SETKEYBOARDSPEED")) return;
896 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
898 sprintf( buf, "%d", vals[i] );
900
902 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
903 eq( v, vals[i], "SPI_{GET,SET}KEYBOARDSPEED", "%d" );
904 }
905
907 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
908}
#define SPI_SETKEYBOARDSPEED_REGKEY
Definition: sysparams.c:86
#define SPI_SETKEYBOARDSPEED_VALNAME
Definition: sysparams.c:87
#define SPI_SETKEYBOARDSPEED
Definition: winuser.h:1371
#define SPI_GETKEYBOARDSPEED
Definition: winuser.h:1370

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETLOWPOWERACTIVE()

static void test_SPI_SETLOWPOWERACTIVE ( void  )
static

Definition at line 2120 of file sysparams.c.

2121{
2122 BOOL rc;
2123 BOOL old_b;
2124 const UINT vals[]={TRUE,FALSE};
2125 unsigned int i;
2126
2127 trace("testing SPI_{GET,SET}LOWPOWERACTIVE\n");
2128 SetLastError(0xdeadbeef);
2129 rc=SystemParametersInfoA( SPI_GETLOWPOWERACTIVE, 0, &old_b, 0 );
2130 if (!test_error_msg(rc,"SPI_{GET,SET}LOWPOWERACTIVE"))
2131 return;
2132
2133 for (i=0;i<ARRAY_SIZE(vals);i++)
2134 {
2135 UINT v;
2136
2137 rc=SystemParametersInfoA( SPI_SETLOWPOWERACTIVE, vals[i], 0,
2139 if (!test_error_msg(rc,"SPI_SETLOWPOWERACTIVE")) return;
2140 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
2141 test_change_message( SPI_SETLOWPOWERACTIVE, 1 );
2144 vals[i] ? "1" : "0" );
2145
2146 /* SPI_SETLOWPOWERACTIVE is not persistent in win2k3 and above */
2147 v = 0xdeadbeef;
2148 rc=SystemParametersInfoA( SPI_GETLOWPOWERACTIVE, 0, &v, 0 );
2149 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
2150 ok(v == vals[i] || v == 0, /* win2k3 */
2151 "SPI_GETLOWPOWERACTIVE: got %d instead of 0 or %d\n", v, vals[i]);
2152 }
2153
2154 rc=SystemParametersInfoA( SPI_SETLOWPOWERACTIVE, old_b, 0, SPIF_UPDATEINIFILE );
2155 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
2157}
#define test_reg_key_optional(subKey, valName, testValue)
Definition: sysparams.c:483
#define SPI_SETLOWPOWERACTIVE_VALNAME
Definition: sysparams.c:141
#define SPI_SETLOWPOWERACTIVE_REGKEY
Definition: sysparams.c:140

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETMENUDROPALIGNMENT()

static void test_SPI_SETMENUDROPALIGNMENT ( void  )
static

Definition at line 1180 of file sysparams.c.

1181{
1182 BOOL rc;
1183 BOOL old_b;
1184 const UINT vals[]={TRUE,FALSE};
1185 unsigned int i;
1186
1187 trace("testing SPI_{GET,SET}MENUDROPALIGNMENT\n");
1188 SetLastError(0xdeadbeef);
1190 if (!test_error_msg(rc,"SPI_{GET,SET}MENUDROPALIGNMENT"))
1191 return;
1192
1193 for (i=0;i<ARRAY_SIZE(vals);i++)
1194 {
1195 UINT v;
1196
1199 if (!test_error_msg(rc,"SPI_SETMENUDROPALIGNMENT")) return;
1200 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
1205 vals[i] ? "1" : "0" );
1206
1208 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
1209 eq( v, vals[i], "SPI_{GET,SET}MENUDROPALIGNMENT", "%d" );
1210 eq( GetSystemMetrics( SM_MENUDROPALIGNMENT ), (int)vals[i],
1211 "SM_MENUDROPALIGNMENT", "%d" );
1212 }
1213
1216 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
1218}
#define SPI_SETMENUDROPALIGNMENT_VALNAME
Definition: sysparams.c:112
#define SPI_SETMENUDROPALIGNMENT_REGKEY2
Definition: sysparams.c:111
#define SPI_SETMENUDROPALIGNMENT_REGKEY1
Definition: sysparams.c:110
#define SM_MENUDROPALIGNMENT
Definition: winuser.h:1014
#define SPI_SETMENUDROPALIGNMENT
Definition: winuser.h:1388
#define SPI_GETMENUDROPALIGNMENT
Definition: winuser.h:1387

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETMENUSHOWDELAY()

static void test_SPI_SETMENUSHOWDELAY ( void  )
static

Definition at line 2392 of file sysparams.c.

2393{
2394 BOOL rc;
2395 UINT old_delay;
2396 const UINT vals[]={0,32767};
2397 unsigned int i;
2398
2399 trace("testing SPI_{GET,SET}MENUSHOWDELAY\n");
2400 SetLastError(0xdeadbeef);
2401 rc=SystemParametersInfoA( SPI_GETMENUSHOWDELAY, 0, &old_delay, 0 );
2402
2403 /* SPI_{GET,SET}MENUSHOWDELAY not supported on Windows 95 */
2404 if (!test_error_msg(rc,"SPI_{GET,SET}MENUSHOWDELAY"))
2405 return;
2406
2407 for (i=0;i<ARRAY_SIZE(vals);i++)
2408 {
2409 UINT v;
2410 char buf[10];
2411
2412 rc=SystemParametersInfoA( SPI_SETMENUSHOWDELAY, vals[i], 0,
2414 if (!test_error_msg(rc,"SPI_SETMENUSHOWDELAY")) return;
2415 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
2416 test_change_message( SPI_SETMENUSHOWDELAY, 0 );
2417 sprintf( buf, "%d", vals[i] );
2420
2421 SystemParametersInfoA( SPI_GETMENUSHOWDELAY, 0, &v, 0 );
2422 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
2423 eq( v, vals[i], "SPI_{GET,SET}MENUSHOWDELAY", "%d" );
2424 }
2425
2426 rc=SystemParametersInfoA( SPI_SETMENUSHOWDELAY, old_delay, 0,
2428 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
2430}
#define SPI_SETMENUSHOWDELAY_VALNAME
Definition: sysparams.c:159
#define SPI_SETMENUSHOWDELAY_REGKEY
Definition: sysparams.c:158

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETMINIMIZEDMETRICS()

static void test_SPI_SETMINIMIZEDMETRICS ( void  )
static

Definition at line 1628 of file sysparams.c.

1629{
1630 BOOL rc;
1631 INT regval;
1632 MINIMIZEDMETRICS lpMm_orig;
1633 MINIMIZEDMETRICS lpMm_new;
1634 MINIMIZEDMETRICS lpMm_cur;
1635
1636 lpMm_orig.cbSize = sizeof(MINIMIZEDMETRICS);
1637 lpMm_new.cbSize = sizeof(MINIMIZEDMETRICS);
1638 lpMm_cur.cbSize = sizeof(MINIMIZEDMETRICS);
1639
1640 trace("testing SPI_{GET,SET}MINIMIZEDMETRICS\n");
1641 SetLastError(0xdeadbeef);
1642 rc=SystemParametersInfoA( SPI_GETMINIMIZEDMETRICS, sizeof(MINIMIZEDMETRICS), &lpMm_orig, FALSE );
1643 if (!test_error_msg(rc,"SPI_{GET,SET}MINIMIZEDMETRICS"))
1644 return;
1645 /* Test registry. Note that it is perfectly valid for some fields to
1646 * not be set.
1647 */
1649 ok( regval == -1 || regval == lpMm_orig.iWidth, "wrong value in registry %d, expected %d\n",
1650 regval, lpMm_orig.iWidth);
1652 ok( regval == -1 || regval == lpMm_orig.iHorzGap, "wrong value in registry %d, expected %d\n",
1653 regval, lpMm_orig.iHorzGap);
1655 ok( regval == -1 || regval == lpMm_orig.iVertGap, "wrong value in registry %d, expected %d\n",
1656 regval, lpMm_orig.iVertGap);
1658 ok( regval == -1 || regval == lpMm_orig.iArrange, "wrong value in registry %d, expected %d\n",
1659 regval, lpMm_orig.iArrange);
1660 /* set some new values */
1661 lpMm_cur.iWidth = 180;
1662 lpMm_cur.iHorzGap = 1;
1663 lpMm_cur.iVertGap = 1;
1664 lpMm_cur.iArrange = 5;
1665 rc=SystemParametersInfoA( SPI_SETMINIMIZEDMETRICS, sizeof(MINIMIZEDMETRICS),
1666 &lpMm_cur, SPIF_UPDATEINIFILE );
1667 if (!test_error_msg(rc,"SPI_SETMINIMIZEDMETRICS")) return;
1668 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
1669 /* read them back */
1670 rc=SystemParametersInfoA( SPI_GETMINIMIZEDMETRICS, sizeof(MINIMIZEDMETRICS), &lpMm_new, FALSE );
1671 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
1672 /* and compare */
1673 eq( lpMm_new.iWidth, lpMm_cur.iWidth, "iWidth", "%d" );
1674 eq( lpMm_new.iHorzGap, lpMm_cur.iHorzGap, "iHorzGap", "%d" );
1675 eq( lpMm_new.iVertGap, lpMm_cur.iVertGap, "iVertGap", "%d" );
1676 eq( lpMm_new.iArrange, lpMm_cur.iArrange, "iArrange", "%d" );
1677 /* test registry */
1679 ok( regval == lpMm_new.iWidth, "wrong value in registry %d, expected %d\n",
1680 regval, lpMm_new.iWidth);
1682 ok( regval == lpMm_new.iHorzGap, "wrong value in registry %d, expected %d\n",
1683 regval, lpMm_new.iHorzGap);
1685 ok( regval == lpMm_new.iVertGap, "wrong value in registry %d, expected %d\n",
1686 regval, lpMm_new.iVertGap);
1688 ok( regval == lpMm_new.iArrange, "wrong value in registry %d, expected %d\n",
1689 regval, lpMm_new.iArrange);
1690 /* test some system metrics */
1692 lpMm_new.iWidth, "iWidth", "%d" );
1694 lpMm_new.iHorzGap, "iHorzGap", "%d" );
1696 lpMm_new.iVertGap, "iVertGap", "%d" );
1698 lpMm_new.iArrange, "iArrange", "%d" );
1699 /* now some really invalid settings */
1700 lpMm_cur.iWidth = -1;
1701 lpMm_cur.iHorzGap = -1;
1702 lpMm_cur.iVertGap = -1;
1703 lpMm_cur.iArrange = - 1;
1704 rc=SystemParametersInfoA( SPI_SETMINIMIZEDMETRICS, sizeof(MINIMIZEDMETRICS),
1705 &lpMm_cur, SPIF_UPDATEINIFILE );
1706 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
1707 /* read back */
1708 rc=SystemParametersInfoA( SPI_GETMINIMIZEDMETRICS, sizeof(MINIMIZEDMETRICS), &lpMm_new, FALSE );
1709 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
1710 /* the width and H/V gaps have minimum 0, arrange is and'd with 0xf */
1711 eq( lpMm_new.iWidth, 0, "iWidth", "%d" );
1712 eq( lpMm_new.iHorzGap, 0, "iHorzGap", "%d" );
1713 eq( lpMm_new.iVertGap, 0, "iVertGap", "%d" );
1714 eq( lpMm_new.iArrange, 0xf & lpMm_cur.iArrange, "iArrange", "%d" );
1715 /* test registry */
1716 if (0)
1717 {
1718 /* FIXME: cannot understand the results of this (11, 11, 11, 0) */
1720 ok( regval == lpMm_new.iWidth, "wrong value in registry %d, expected %d\n",
1721 regval, lpMm_new.iWidth);
1723 ok( regval == lpMm_new.iHorzGap, "wrong value in registry %d, expected %d\n",
1724 regval, lpMm_new.iHorzGap);
1726 ok( regval == lpMm_new.iVertGap, "wrong value in registry %d, expected %d\n",
1727 regval, lpMm_new.iVertGap);
1729 ok( regval == lpMm_new.iArrange, "wrong value in registry %d, expected %d\n",
1730 regval, lpMm_new.iArrange);
1731 }
1732 /* test some system metrics */
1734 lpMm_new.iWidth, "iWidth", "%d" );
1736 lpMm_new.iHorzGap, "iHorzGap", "%d" );
1738 lpMm_new.iVertGap, "iVertGap", "%d" );
1740 lpMm_new.iArrange, "iArrange", "%d" );
1741 /* restore */
1742 rc=SystemParametersInfoA( SPI_SETMINIMIZEDMETRICS, sizeof(MINIMIZEDMETRICS),
1743 &lpMm_orig, SPIF_UPDATEINIFILE );
1744 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
1746 /* check that */
1747 rc=SystemParametersInfoA( SPI_GETMINIMIZEDMETRICS, sizeof(MINIMIZEDMETRICS), &lpMm_new, FALSE );
1748 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
1749 eq( lpMm_new.iWidth, lpMm_orig.iWidth, "iWidth", "%d" );
1750 eq( lpMm_new.iHorzGap, lpMm_orig.iHorzGap, "iHorzGap", "%d" );
1751 eq( lpMm_new.iVertGap, lpMm_orig.iVertGap, "iVertGap", "%d" );
1752 eq( lpMm_new.iArrange, lpMm_orig.iArrange, "iArrange", "%d" );
1753}
#define SPI_MINWIDTH_VALNAME
Definition: sysparams.c:95
#define SPI_MINIMIZEDMETRICS_REGKEY
Definition: sysparams.c:94
#define SPI_MINVERTGAP_VALNAME
Definition: sysparams.c:97
#define SPI_MINHORZGAP_VALNAME
Definition: sysparams.c:96
#define SPI_MINARRANGE_VALNAME
Definition: sysparams.c:98
struct tagMINIMIZEDMETRICS MINIMIZEDMETRICS
#define SM_ARRANGE
Definition: winuser.h:1030

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETMOUSE()

static void test_SPI_SETMOUSE ( void  )
static

Definition at line 711 of file sysparams.c.

712{
713 BOOL rc;
714 INT old_mi[3];
715
716 /* win nt default values - 6, 10, 1 */
717 INT curr_val[3] = {6, 10, 1};
718
719 /* requested and projected mouse movements */
720 POINT req_change[] = { {6, 6}, { 7, 6}, { 8, 6}, {10, 10}, {11, 10}, {100, 100} };
721 POINT proj_change1[] = { {6, 6}, {14, 6}, {16, 6}, {20, 20}, {22, 20}, {200, 200} };
722 POINT proj_change2[] = { {6, 6}, {14, 6}, {16, 6}, {20, 20}, {44, 20}, {400, 400} };
723 POINT proj_change3[] = { {6, 6}, {14, 6}, {16, 6}, {20, 20}, {22, 20}, {200, 200} };
724 POINT proj_change4[] = { {6, 6}, { 7, 6}, { 8, 6}, {10, 10}, {11, 10}, {100, 100} };
725 POINT proj_change5[] = { {6, 6}, { 7, 6}, {16, 6}, {20, 20}, {22, 20}, {200, 200} };
726 POINT proj_change6[] = { {6, 6}, {28, 6}, {32, 6}, {40, 40}, {44, 40}, {400, 400} };
727 POINT proj_change7[] = { {6, 6}, {14, 6}, {32, 6}, {40, 40}, {44, 40}, {400, 400} };
728 POINT proj_change8[] = { {6, 6}, {28, 6}, {32, 6}, {40, 40}, {44, 40}, {400, 400} };
729
730 int nchange = ARRAY_SIZE(req_change);
731
732 trace("testing SPI_{GET,SET}MOUSE\n");
733 SetLastError(0xdeadbeef);
734 rc=SystemParametersInfoA( SPI_GETMOUSE, 0, old_mi, 0 );
735 if (!test_error_msg(rc,"SPI_{GET,SET}MOUSE"))
736 return;
737
738 if (!run_spi_setmouse_test( curr_val, req_change, proj_change1, nchange )) return;
739
740 /* acceleration change */
741 curr_val[2] = 2;
742 run_spi_setmouse_test( curr_val, req_change, proj_change2, nchange );
743
744 /* acceleration change */
745 curr_val[2] = 3;
746 run_spi_setmouse_test( curr_val, req_change, proj_change3, nchange );
747
748 /* acceleration change */
749 curr_val[2] = 0;
750 run_spi_setmouse_test( curr_val, req_change, proj_change4, nchange );
751
752 /* threshold change */
753 curr_val[2] = 1;
754 curr_val[0] = 7;
755 run_spi_setmouse_test( curr_val, req_change, proj_change5, nchange );
756
757 /* threshold change */
758 curr_val[2] = 2;
759 curr_val[0] = 6;
760 curr_val[1] = 6;
761 run_spi_setmouse_test( curr_val, req_change, proj_change6, nchange );
762
763 /* threshold change */
764 curr_val[1] = 7;
765 run_spi_setmouse_test( curr_val, req_change, proj_change7, nchange );
766
767 /* threshold change */
768 curr_val[1] = 5;
769 run_spi_setmouse_test( curr_val, req_change, proj_change8, nchange );
770
772 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
773}
static BOOL run_spi_setmouse_test(int curr_val[], POINT *req_change, POINT *proj_change, int nchange)
Definition: sysparams.c:655

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETMOUSEBUTTONSWAP()

static void test_SPI_SETMOUSEBUTTONSWAP ( void  )
static

Definition at line 1346 of file sysparams.c.

1347{
1348 BOOL rc;
1349 BOOL vals[2];
1350 unsigned int i;
1351
1352 trace("testing SPI_{GET,SET}MOUSEBUTTONSWAP\n");
1353 vals[1] = GetSystemMetrics( SM_SWAPBUTTON );
1354 vals[0] = !vals[1];
1355
1356 for (i=0;i<ARRAY_SIZE(vals);i++)
1357 {
1358 SetLastError(0xdeadbeef);
1361 if (!test_error_msg(rc,"SPI_SETMOUSEBUTTONSWAP")) break;
1362
1366 vals[i] ? "1" : "0" );
1367 eq( GetSystemMetrics( SM_SWAPBUTTON ), (int)vals[i],
1368 "SM_SWAPBUTTON", "%d" );
1369 rc=SwapMouseButton((BOOL)vals[i^1]);
1370 eq( GetSystemMetrics( SM_SWAPBUTTON ), (int)vals[i^1],
1371 "SwapMouseButton", "%d" );
1372 ok( rc==(BOOL)vals[i], "SwapMouseButton does not return previous state (really %d)\n", rc );
1374 }
1375
1378 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
1380}
#define SPI_SETMOUSEBUTTONSWAP_VALNAME
Definition: sysparams.c:122
#define SPI_SETMOUSEBUTTONSWAP_REGKEY
Definition: sysparams.c:121
BOOL WINAPI SwapMouseButton(_In_ BOOL)
#define SPI_SETMOUSEBUTTONSWAP
Definition: winuser.h:1393
#define SM_SWAPBUTTON
Definition: winuser.h:995

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETMOUSEHOVERHEIGHT()

static void test_SPI_SETMOUSEHOVERHEIGHT ( void  )
static

Definition at line 2272 of file sysparams.c.

2273{
2274 BOOL rc;
2275 UINT old_height;
2276 const UINT vals[]={0,32767};
2277 unsigned int i;
2278
2279 trace("testing SPI_{GET,SET}MOUSEHOVERHEIGHT\n");
2280 SetLastError(0xdeadbeef);
2281 rc=SystemParametersInfoA( SPI_GETMOUSEHOVERHEIGHT, 0, &old_height, 0 );
2282 if (!test_error_msg(rc,"SPI_{GET,SET}MOUSEHOVERHEIGHT"))
2283 return;
2284
2285 for (i=0;i<ARRAY_SIZE(vals);i++)
2286 {
2287 UINT v;
2288 char buf[10];
2289
2290 rc=SystemParametersInfoA( SPI_SETMOUSEHOVERHEIGHT, vals[i], 0,
2292 if (!test_error_msg(rc,"SPI_SETMOUSEHOVERHEIGHT")) return;
2293 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
2294 test_change_message( SPI_SETMOUSEHOVERHEIGHT, 0 );
2295 sprintf( buf, "%d", vals[i] );
2298
2299 SystemParametersInfoA( SPI_GETMOUSEHOVERHEIGHT, 0, &v, 0 );
2300 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
2301 eq( v, vals[i], "SPI_{GET,SET}MOUSEHOVERHEIGHT", "%d" );
2302 }
2303
2304 rc=SystemParametersInfoA( SPI_SETMOUSEHOVERHEIGHT, old_height, 0,
2306 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
2308}
#define SPI_SETMOUSEHOVERHEIGHT_VALNAME
Definition: sysparams.c:151
#define SPI_SETMOUSEHOVERHEIGHT_REGKEY
Definition: sysparams.c:150

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETMOUSEHOVERTIME()

static void test_SPI_SETMOUSEHOVERTIME ( void  )
static

Definition at line 2310 of file sysparams.c.

2311{
2312 BOOL rc;
2313 UINT old_time;
2314
2315 /* Windows XP accepts 10 as the minimum hover time. Any value below will be
2316 * defaulted to a value of 10 automatically.
2317 */
2318 const UINT vals[]={10,32767};
2319 unsigned int i;
2320
2321 trace("testing SPI_{GET,SET}MOUSEHOVERTIME\n");
2322 SetLastError(0xdeadbeef);
2323 rc=SystemParametersInfoA( SPI_GETMOUSEHOVERTIME, 0, &old_time, 0 );
2324 if (!test_error_msg(rc,"SPI_{GET,SET}MOUSEHOVERTIME"))
2325 return;
2326
2327 for (i=0;i<ARRAY_SIZE(vals);i++)
2328 {
2329 UINT v;
2330 char buf[10];
2331
2332 rc=SystemParametersInfoA( SPI_SETMOUSEHOVERTIME, vals[i], 0,
2334 if (!test_error_msg(rc,"SPI_SETMOUSEHOVERTIME")) return;
2335 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
2336 test_change_message( SPI_SETMOUSEHOVERTIME, 0 );
2337 sprintf( buf, "%d", vals[i] );
2340
2341 SystemParametersInfoA( SPI_GETMOUSEHOVERTIME, 0, &v, 0 );
2342 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
2343 eq( v, vals[i], "SPI_{GET,SET}MOUSEHOVERTIME", "%d" );
2344 }
2345
2346 rc=SystemParametersInfoA( SPI_SETMOUSEHOVERTIME, old_time, 0,
2348 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
2350}
#define SPI_SETMOUSEHOVERTIME_REGKEY
Definition: sysparams.c:152
#define SPI_SETMOUSEHOVERTIME_VALNAME
Definition: sysparams.c:153

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETMOUSEHOVERWIDTH()

static void test_SPI_SETMOUSEHOVERWIDTH ( void  )
static

Definition at line 2234 of file sysparams.c.

2235{
2236 BOOL rc;
2237 UINT old_width;
2238 const UINT vals[]={0,32767};
2239 unsigned int i;
2240
2241 trace("testing SPI_{GET,SET}MOUSEHOVERWIDTH\n");
2242 SetLastError(0xdeadbeef);
2243 rc=SystemParametersInfoA( SPI_GETMOUSEHOVERWIDTH, 0, &old_width, 0 );
2244 if (!test_error_msg(rc,"SPI_{GET,SET}MOUSEHOVERWIDTH"))
2245 return;
2246
2247 for (i=0;i<ARRAY_SIZE(vals);i++)
2248 {
2249 UINT v;
2250 char buf[10];
2251
2252 rc=SystemParametersInfoA( SPI_SETMOUSEHOVERWIDTH, vals[i], 0,
2254 if (!test_error_msg(rc,"SPI_SETMOUSEHOVERWIDTH")) return;
2255 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
2256 test_change_message( SPI_SETMOUSEHOVERWIDTH, 0 );
2257 sprintf( buf, "%d", vals[i] );
2260
2261 SystemParametersInfoA( SPI_GETMOUSEHOVERWIDTH, 0, &v, 0 );
2262 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
2263 eq( v, vals[i], "SPI_{GET,SET}MOUSEHOVERWIDTH", "%d" );
2264 }
2265
2266 rc=SystemParametersInfoA( SPI_SETMOUSEHOVERWIDTH, old_width, 0,
2268 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
2270}
#define SPI_SETMOUSEHOVERWIDTH_VALNAME
Definition: sysparams.c:149
#define SPI_SETMOUSEHOVERWIDTH_REGKEY
Definition: sysparams.c:148

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETNONCLIENTMETRICS()

static void test_SPI_SETNONCLIENTMETRICS ( void  )
static

Definition at line 1504 of file sysparams.c.

1505{
1506 BOOL rc;
1507 INT expect;
1508 NONCLIENTMETRICSA Ncmorig;
1509 NONCLIENTMETRICSA Ncmnew;
1510 NONCLIENTMETRICSA Ncmcur;
1511 NONCLIENTMETRICSA Ncmstart;
1512
1513 Ncmorig.cbSize = FIELD_OFFSET(NONCLIENTMETRICSA, iPaddedBorderWidth);
1514 Ncmnew.cbSize = FIELD_OFFSET(NONCLIENTMETRICSA, iPaddedBorderWidth);
1515 Ncmcur.cbSize = FIELD_OFFSET(NONCLIENTMETRICSA, iPaddedBorderWidth);
1516 Ncmstart.cbSize = FIELD_OFFSET(NONCLIENTMETRICSA, iPaddedBorderWidth);
1517
1518 trace("testing SPI_{GET,SET}NONCLIENTMETRICS\n");
1519 change_counter = 0;
1520 SetLastError(0xdeadbeef);
1521 rc=SystemParametersInfoA( SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICSA), &Ncmorig, FALSE );
1522 if (!test_error_msg(rc,"SPI_{GET,SET}NONCLIENTMETRICS"))
1523 return;
1524 Ncmstart = Ncmorig;
1525 smcxsmsize = Ncmstart.iSmCaptionWidth;
1526 /* SPI_GETNONCLIENTMETRICS returns some "cooked" values. For instance if
1527 the caption font height is higher than the CaptionHeight field,
1528 the latter is adjusted accordingly. To be able to restore these setting
1529 accurately we restore the raw values. */
1531 Ncmorig.iCaptionHeight = metricfromreg( SPI_METRIC_REGKEY, SPI_CAPTIONHEIGHT_VALNAME, dpi);
1532 Ncmorig.iSmCaptionHeight = metricfromreg( SPI_METRIC_REGKEY, SPI_SMCAPTIONHEIGHT_VALNAME, dpi);
1534 /* test registry entries */
1535 TEST_NONCLIENTMETRICS_REG( Ncmorig);
1536
1537 /* make small changes */
1538 Ncmnew = Ncmstart;
1539 Ncmnew.iBorderWidth += 1;
1540 Ncmnew.iScrollWidth += 1;
1541 Ncmnew.iScrollHeight -= 1;
1542 Ncmnew.iCaptionWidth -= 2;
1543 Ncmnew.iCaptionHeight += 2;
1544 Ncmnew.lfCaptionFont.lfHeight +=1;
1545 Ncmnew.lfCaptionFont.lfWidth +=2;
1546 Ncmnew.lfCaptionFont.lfWeight +=1;
1547 Ncmnew.iSmCaptionWidth += 1;
1548 Ncmnew.iSmCaptionHeight += 2;
1549 Ncmnew.lfSmCaptionFont.lfHeight +=3;
1550 Ncmnew.lfSmCaptionFont.lfWidth -=1;
1551 Ncmnew.lfSmCaptionFont.lfWeight +=3;
1552 Ncmnew.iMenuWidth += 1;
1553 Ncmnew.iMenuHeight += 2;
1554 Ncmnew.lfMenuFont.lfHeight +=1;
1555 Ncmnew.lfMenuFont.lfWidth +=1;
1556 Ncmnew.lfMenuFont.lfWeight +=2;
1557 Ncmnew.lfStatusFont.lfHeight -=1;
1558 Ncmnew.lfStatusFont.lfWidth -=1;
1559 Ncmnew.lfStatusFont.lfWeight +=3;
1560 Ncmnew.lfMessageFont.lfHeight -=2;
1561 Ncmnew.lfMessageFont.lfWidth -=1;
1562 Ncmnew.lfMessageFont.lfWeight +=4;
1563
1564 rc=SystemParametersInfoA( SPI_SETNONCLIENTMETRICS, 0, &Ncmnew, SPIF_UPDATEINIFILE|
1566 if (!test_error_msg(rc,"SPI_SETNONCLIENTMETRICS")) return;
1567 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
1568 test_change_message( SPI_SETNONCLIENTMETRICS, 1 );
1569 /* get them back */
1570 rc=SystemParametersInfoA( SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICSA), &Ncmcur, FALSE );
1571 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
1572 /* test registry entries */
1573 TEST_NONCLIENTMETRICS_REG( Ncmcur );
1574 /* test the system metrics with these settings */
1576 /* now for something invalid: increase the {menu|caption|smcaption} fonts
1577 by a large amount will increase the {menu|caption|smcaption} height*/
1578 Ncmnew = Ncmstart;
1579 Ncmnew.lfMenuFont.lfHeight -= 8;
1580 Ncmnew.lfCaptionFont.lfHeight =-4;
1581 Ncmnew.lfSmCaptionFont.lfHeight -=10;
1582 /* also show that a few values are lo limited */
1583 Ncmnew.iCaptionWidth = 0;
1584 Ncmnew.iCaptionHeight = 0;
1585 Ncmnew.iScrollHeight = 0;
1586 Ncmnew.iScrollWidth = 0;
1587
1588 rc=SystemParametersInfoA( SPI_SETNONCLIENTMETRICS, 0, &Ncmnew, SPIF_UPDATEINIFILE|
1590 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
1591 test_change_message( SPI_SETNONCLIENTMETRICS, 1 );
1592 /* raw values are in registry */
1593 TEST_NONCLIENTMETRICS_REG( Ncmnew );
1594 /* get them back */
1595 rc=SystemParametersInfoA( SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICSA), &Ncmcur, FALSE );
1596 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
1597 /* cooked values are returned */
1598 expect = max( Ncmnew.iMenuHeight, 2 + get_tmheight( &Ncmnew.lfMenuFont, 1));
1599 ok( Ncmcur.iMenuHeight == expect,
1600 "MenuHeight: %d expected %d\n", Ncmcur.iMenuHeight, expect);
1601 expect = max( Ncmnew.iCaptionHeight, 2 + get_tmheight(&Ncmnew.lfCaptionFont, 0));
1602 ok( Ncmcur.iCaptionHeight == expect,
1603 "CaptionHeight: %d expected %d\n", Ncmcur.iCaptionHeight, expect);
1604 expect = max( Ncmnew.iSmCaptionHeight, 2 + get_tmheight( &Ncmnew.lfSmCaptionFont, 0));
1605 ok( Ncmcur.iSmCaptionHeight == expect,
1606 "SmCaptionHeight: %d expected %d\n", Ncmcur.iSmCaptionHeight, expect);
1607
1608 /* iCaptionWidth depends on a version, could be 8, 12 (Vista, Win7), 13 */
1609 ok( (Ncmcur.iCaptionWidth >= 8 && Ncmcur.iCaptionWidth <= 13) ||
1610 Ncmcur.iCaptionWidth == Ncmstart.iCaptionWidth, /* with windows XP theme, the value never changes */
1611 "CaptionWidth: %d expected from [8, 13] or %d\n", Ncmcur.iCaptionWidth, Ncmstart.iCaptionWidth);
1612 ok( Ncmcur.iScrollWidth == 8,
1613 "ScrollWidth: %d expected 8\n", Ncmcur.iScrollWidth);
1614 ok( Ncmcur.iScrollHeight == 8,
1615 "ScrollHeight: %d expected 8\n", Ncmcur.iScrollHeight);
1616 /* test the system metrics with these settings */
1618 /* restore */
1619 rc=SystemParametersInfoA( SPI_SETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICSA),
1621 test_change_message( SPI_SETNONCLIENTMETRICS, 0 );
1622 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
1624 /* test the system metrics with these settings */
1626}
#define TEST_NONCLIENTMETRICS_REG(ncm)
Definition: sysparams.c:1460
static int get_tmheight(LOGFONTA *plf, int flag)
Definition: sysparams.c:1477
#define SPI_CAPTIONWIDTH_VALNAME
Definition: sysparams.c:74

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETPOWEROFFACTIVE()

static void test_SPI_SETPOWEROFFACTIVE ( void  )
static

Definition at line 2159 of file sysparams.c.

2160{
2161 BOOL rc;
2162 BOOL old_b;
2163 const UINT vals[]={TRUE,FALSE};
2164 unsigned int i;
2165
2166 trace("testing SPI_{GET,SET}POWEROFFACTIVE\n");
2167 SetLastError(0xdeadbeef);
2168 rc=SystemParametersInfoA( SPI_GETPOWEROFFACTIVE, 0, &old_b, 0 );
2169 if (!test_error_msg(rc,"SPI_{GET,SET}POWEROFFACTIVE"))
2170 return;
2171
2172 for (i=0;i<ARRAY_SIZE(vals);i++)
2173 {
2174 UINT v;
2175
2176 rc=SystemParametersInfoA( SPI_SETPOWEROFFACTIVE, vals[i], 0,
2178 if (!test_error_msg(rc,"SPI_SETPOWEROFFACTIVE")) return;
2179 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
2180 test_change_message( SPI_SETPOWEROFFACTIVE, 1 );
2183 vals[i] ? "1" : "0" );
2184
2185 /* SPI_SETPOWEROFFACTIVE is not persistent in win2k3 and above */
2186 v = 0xdeadbeef;
2187 rc=SystemParametersInfoA( SPI_GETPOWEROFFACTIVE, 0, &v, 0 );
2188 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
2189 ok(v == vals[i] || v == 0, /* win2k3 */
2190 "SPI_GETPOWEROFFACTIVE: got %d instead of 0 or %d\n", v, vals[i]);
2191 }
2192
2193 rc=SystemParametersInfoA( SPI_SETPOWEROFFACTIVE, old_b, 0, SPIF_UPDATEINIFILE );
2194 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
2196}
#define SPI_SETPOWEROFFACTIVE_REGKEY
Definition: sysparams.c:142
#define SPI_SETPOWEROFFACTIVE_VALNAME
Definition: sysparams.c:143

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETSCREENREADER()

static void test_SPI_SETSCREENREADER ( void  )
static

Definition at line 2002 of file sysparams.c.

2003{
2004 BOOL rc;
2005 BOOL old_b;
2006 const UINT vals[]={TRUE,FALSE};
2007 unsigned int i;
2008
2009 trace("testing SPI_{GET,SET}SCREENREADER\n");
2010 SetLastError(0xdeadbeef);
2011 rc=SystemParametersInfoA( SPI_GETSCREENREADER, 0, &old_b, 0 );
2012 if (!test_error_msg(rc,"SPI_{GET,SET}SCREENREADER"))
2013 return;
2014
2015 for (i=0;i<ARRAY_SIZE(vals);i++)
2016 {
2017 BOOL v;
2018
2019 rc=SystemParametersInfoA( SPI_SETSCREENREADER, vals[i], 0,
2021 if (!test_error_msg(rc,"SPI_SETSCREENREADER")) return;
2022 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
2023 test_change_message( SPI_SETSCREENREADER, 1 );
2026 vals[i] ? "1" : "0" );
2027
2028 rc=SystemParametersInfoA( SPI_GETSCREENREADER, 0, &v, 0 );
2029 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
2030 eq( v, (BOOL)vals[i], "SPI_GETSCREENREADER", "%d" );
2031 }
2032
2033 rc=SystemParametersInfoA( SPI_SETSCREENREADER, old_b, 0, SPIF_UPDATEINIFILE );
2034 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
2036}
#define SPI_SETSCREENREADER_REGKEY_LEGACY
Definition: sysparams.c:133
#define SPI_SETSCREENREADER_REGKEY
Definition: sysparams.c:131
#define SPI_SETSCREENREADER_VALNAME_LEGACY
Definition: sysparams.c:134
#define SPI_SETSCREENREADER_VALNAME
Definition: sysparams.c:132
#define test_reg_key_ex2_optional(subKey1, subKey2, valName1, valName2, testValue)
Definition: sysparams.c:489

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETSCREENSAVEACTIVE()

static void test_SPI_SETSCREENSAVEACTIVE ( void  )
static

Definition at line 1001 of file sysparams.c.

1002{
1003 BOOL rc;
1004 BOOL old_b;
1005 const UINT vals[]={TRUE,FALSE};
1006 unsigned int i;
1007
1008 trace("testing SPI_{GET,SET}SCREENSAVEACTIVE\n");
1009 SetLastError(0xdeadbeef);
1011 if (!test_error_msg(rc,"SPI_{GET,SET}SCREENSAVEACTIVE"))
1012 return;
1013
1014 for (i=0;i<ARRAY_SIZE(vals);i++)
1015 {
1016 UINT v;
1017
1020 if (!test_error_msg(rc,"SPI_SETSCREENSAVEACTIVE")) return;
1021 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
1025 vals[i] ? "1" : "0" );
1026
1028 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
1029 ok(v == vals[i] || broken(! v) /* Win 7 */,
1030 "SPI_{GET,SET}SCREENSAVEACTIVE: got %d instead of %d\n", v, vals[i]);
1031 }
1032
1034 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
1035}
#define SPI_SETSCREENSAVEACTIVE_VALNAME
Definition: sysparams.c:102
#define SPI_SETSCREENSAVEACTIVE_REGKEY
Definition: sysparams.c:101
#define SPI_SETSCREENSAVEACTIVE
Definition: winuser.h:1377
#define SPI_GETSCREENSAVEACTIVE
Definition: winuser.h:1376

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETSCREENSAVETIMEOUT()

static void test_SPI_SETSCREENSAVETIMEOUT ( void  )
static

Definition at line 964 of file sysparams.c.

965{
966 BOOL rc;
967 UINT old_timeout;
968 const UINT vals[]={0,32767};
969 unsigned int i;
970
971 trace("testing SPI_{GET,SET}SCREENSAVETIMEOUT\n");
972 SetLastError(0xdeadbeef);
973 rc=SystemParametersInfoA( SPI_GETSCREENSAVETIMEOUT, 0, &old_timeout, 0 );
974 if (!test_error_msg(rc,"SPI_{GET,SET}SCREENSAVETIMEOUT"))
975 return;
976
977 for (i=0;i<ARRAY_SIZE(vals);i++)
978 {
979 UINT v;
980 char buf[10];
981
984 if (!test_error_msg(rc,"SPI_SETSCREENSAVETIMEOUT")) return;
985 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
987 sprintf( buf, "%d", vals[i] );
990
992 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
993 eq( v, vals[i], "SPI_{GET,SET}SCREENSAVETIMEOUT", "%d" );
994 }
995
998 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
999}
#define SPI_SETSCREENSAVETIMEOUT_VALNAME
Definition: sysparams.c:100
#define SPI_SETSCREENSAVETIMEOUT_REGKEY
Definition: sysparams.c:99
#define SPI_SETSCREENSAVETIMEOUT
Definition: winuser.h:1375
#define SPI_GETSCREENSAVETIMEOUT
Definition: winuser.h:1374

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETSHOWSOUNDS()

static void test_SPI_SETSHOWSOUNDS ( void  )
static

Definition at line 1928 of file sysparams.c.

1929{
1930 BOOL rc;
1931 BOOL old_b;
1932 const UINT vals[]={TRUE,FALSE};
1933 unsigned int i;
1934
1935 trace("testing SPI_{GET,SET}SHOWSOUNDS\n");
1936 SetLastError(0xdeadbeef);
1937 rc=SystemParametersInfoA( SPI_GETSHOWSOUNDS, 0, &old_b, 0 );
1938 if (!test_error_msg(rc,"SPI_{GET,SET}SHOWSOUNDS"))
1939 return;
1940
1941 for (i=0;i<ARRAY_SIZE(vals);i++)
1942 {
1943 UINT v;
1944
1947 if (!test_error_msg(rc,"SPI_SETSHOWSOUNDS")) return;
1948 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
1952 vals[i] ? "1" : "0" );
1953
1955 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
1956 eq( v, vals[i], "SPI_GETSHOWSOUNDS", "%d" );
1957 eq( GetSystemMetrics( SM_SHOWSOUNDS ), (int)vals[i],
1958 "SM_SHOWSOUNDS", "%d" );
1959 }
1960
1962 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
1964}
#define SPI_SETSHOWSOUNDS_REGKEY
Definition: sysparams.c:125
#define SPI_SETSHOWSOUNDS_VALNAME
Definition: sysparams.c:126
#define SPI_GETSHOWSOUNDS
Definition: winuser.h:1416
#define SM_SHOWSOUNDS
Definition: winuser.h:1041
#define SPI_SETSHOWSOUNDS
Definition: winuser.h:1417

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETSNAPTODEFBUTTON()

static void test_SPI_SETSNAPTODEFBUTTON ( void  )
static

Definition at line 2198 of file sysparams.c.

2199{
2200 BOOL rc;
2201 BOOL old_b;
2202 const UINT vals[]={TRUE,FALSE};
2203 unsigned int i;
2204
2205 trace("testing SPI_{GET,SET}SNAPTODEFBUTTON\n");
2206 SetLastError(0xdeadbeef);
2207 rc=SystemParametersInfoA( SPI_GETSNAPTODEFBUTTON, 0, &old_b, 0 );
2208 if (!test_error_msg(rc,"SPI_GETSNAPTODEFBUTTON"))
2209 return;
2210
2211 for (i=0;i<ARRAY_SIZE(vals);i++)
2212 {
2213 UINT v;
2214
2215 rc=SystemParametersInfoA( SPI_SETSNAPTODEFBUTTON, vals[i], 0,
2217 if (!test_error_msg(rc,"SPI_SETSNAPTODEFBUTTON")) return;
2218 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
2219 test_change_message( SPI_SETSNAPTODEFBUTTON, 0 );
2222 vals[i] ? "1" : "0" );
2223
2224 rc=SystemParametersInfoA( SPI_GETSNAPTODEFBUTTON, 0, &v, 0 );
2225 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
2226 eq( v, vals[i], "SPI_GETSNAPTODEFBUTTON", "%d" );
2227 }
2228
2229 rc=SystemParametersInfoA( SPI_SETSNAPTODEFBUTTON, old_b, 0, SPIF_UPDATEINIFILE );
2230 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
2232}
#define SPI_SETSNAPTODEFBUTTON_VALNAME
Definition: sysparams.c:147
#define SPI_SETSNAPTODEFBUTTON_REGKEY
Definition: sysparams.c:146

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETWALLPAPER()

static void test_SPI_SETWALLPAPER ( void  )
static

Definition at line 2471 of file sysparams.c.

2472{
2473 BOOL rc;
2474 char oldval[260];
2475 char newval[260];
2476
2477 trace("testing SPI_{GET,SET}DESKWALLPAPER\n");
2478 SetLastError(0xdeadbeef);
2479 rc=SystemParametersInfoA(SPI_GETDESKWALLPAPER, 260, oldval, 0);
2480 if (!test_error_msg(rc,"SPI_{GET,SET}DESKWALLPAPER"))
2481 return;
2482
2483 strcpy(newval, "");
2485 if (!test_error_msg(rc,"SPI_SETDESKWALLPAPER")) return;
2486 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
2488
2490 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
2491
2494}
#define SPI_SETDESKWALLPAPER_REGKEY
Definition: sysparams.c:160
#define SPI_SETDESKWALLPAPER_VALNAME
Definition: sysparams.c:161
#define SPI_SETDESKWALLPAPER
Definition: winuser.h:1380

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETWHEELSCROLLCHARS()

static void test_SPI_SETWHEELSCROLLCHARS ( void  )
static

Definition at line 2432 of file sysparams.c.

2433{
2434 BOOL rc;
2435 UINT old_chars;
2436 const UINT vals[]={32767,0};
2437 unsigned int i;
2438
2439 trace("testing SPI_{GET,SET}WHEELSCROLLCHARS\n");
2440 SetLastError(0xdeadbeef);
2441 rc=SystemParametersInfoA( SPI_GETWHEELSCROLLCHARS, 0, &old_chars, 0 );
2442
2443 /* SPI_{GET,SET}WHEELSCROLLCHARS not supported on Windows 95 */
2444 if (!test_error_msg(rc,"SPI_{GET,SET}WHEELSCROLLCHARS"))
2445 return;
2446
2447 for (i=0;i<ARRAY_SIZE(vals);i++)
2448 {
2449 UINT v;
2450 char buf[10];
2451
2452 rc=SystemParametersInfoA( SPI_SETWHEELSCROLLCHARS, vals[i], 0,
2454 if (!test_error_msg(rc,"SPI_SETWHEELSCROLLCHARS")) return;
2455 test_change_message( SPI_SETWHEELSCROLLCHARS, 0 );
2456 sprintf( buf, "%d", vals[i] );
2459
2461 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
2462 eq( v, vals[i], "SPI_{GET,SET}WHEELSCROLLCHARS", "%d" );
2463 }
2464
2465 rc=SystemParametersInfoA( SPI_SETWHEELSCROLLCHARS, old_chars, 0,
2467 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
2469}
#define SPI_GETWHEELSCROLLCHARS
#define SPI_SETMOUSESCROLLCHARS_VALNAME
Definition: sysparams.c:155
#define SPI_SETMOUSESCROLLCHARS_REGKEY
Definition: sysparams.c:154

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETWHEELSCROLLLINES()

static void test_SPI_SETWHEELSCROLLLINES ( void  )
static

Definition at line 2352 of file sysparams.c.

2353{
2354 BOOL rc;
2355 UINT old_lines;
2356 const UINT vals[]={0,32767};
2357 unsigned int i;
2358
2359 trace("testing SPI_{GET,SET}WHEELSCROLLLINES\n");
2360 SetLastError(0xdeadbeef);
2361 rc=SystemParametersInfoA( SPI_GETWHEELSCROLLLINES, 0, &old_lines, 0 );
2362
2363 /* SPI_{GET,SET}WHEELSCROLLLINES not supported on Windows 95 */
2364 if (!test_error_msg(rc,"SPI_{GET,SET}WHEELSCROLLLINES"))
2365 return;
2366
2367 for (i=0;i<ARRAY_SIZE(vals);i++)
2368 {
2369 UINT v;
2370 char buf[10];
2371
2374 if (!test_error_msg(rc,"SPI_SETWHEELSCROLLLINES")) return;
2375 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
2377 sprintf( buf, "%d", vals[i] );
2380
2381 SystemParametersInfoA( SPI_GETWHEELSCROLLLINES, 0, &v, 0 );
2382 ok(rc, "%d: rc=%d err=%ld\n", i, rc, GetLastError());
2383 eq( v, vals[i], "SPI_{GET,SET}WHEELSCROLLLINES", "%d" );
2384 }
2385
2388 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
2390}
#define SPI_SETMOUSESCROLLLINES_REGKEY
Definition: sysparams.c:156
#define SPI_SETMOUSESCROLLLINES_VALNAME
Definition: sysparams.c:157
#define SPI_SETWHEELSCROLLLINES
Definition: zmouse.h:30

Referenced by SysParamsThreadFunc().

◆ test_SPI_SETWORKAREA()

static void test_SPI_SETWORKAREA ( void  )
static

Definition at line 1875 of file sysparams.c.

1876{
1877 BOOL rc;
1878 RECT old_area;
1879 RECT area;
1880 RECT curr_val;
1881
1882 trace("testing SPI_{GET,SET}WORKAREA\n");
1883 SetLastError(0xdeadbeef);
1884 rc=SystemParametersInfoA(SPI_GETWORKAREA, 0, &old_area, 0);
1885 if (!test_error_msg(rc,"SPI_{GET,SET}WORKAREA"))
1886 return;
1887
1888 /* Modify the work area only minimally as this causes the icons that
1889 * fall outside it to be moved around thus requiring the user to
1890 * reposition them manually one by one.
1891 * Changing the work area by just one pixel should make this occurrence
1892 * reasonably unlikely.
1893 */
1894 SetRect(&curr_val, old_area.left, old_area.top, old_area.right - 1, old_area.bottom - 1);
1895 rc=SystemParametersInfoA( SPI_SETWORKAREA, 0, &curr_val,
1897 if (!test_error_msg(rc,"SPI_SETWORKAREA")) return;
1898 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
1899 rc=SystemParametersInfoA( SPI_GETWORKAREA, 0, &area, 0 );
1900 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
1901 if( !EqualRect( &area, &curr_val)) /* no message if rect has not changed */
1902 test_change_message( SPI_SETWORKAREA, 0);
1903 eq( area.left, curr_val.left, "left", "%ld" );
1904 eq( area.top, curr_val.top, "top", "%ld" );
1905 /* size may be rounded */
1906 ok( area.right >= curr_val.right - 16 && area.right < curr_val.right + 16,
1907 "right: got %ld instead of %ld\n", area.right, curr_val.right );
1908 ok( area.bottom >= curr_val.bottom - 16 && area.bottom < curr_val.bottom + 16,
1909 "bottom: got %ld instead of %ld\n", area.bottom, curr_val.bottom );
1910 curr_val = area;
1911 rc=SystemParametersInfoA( SPI_SETWORKAREA, 0, &old_area,
1913 ok(rc, "***warning*** failed to restore the original value: rc=%d err=%ld\n", rc, GetLastError());
1914 rc=SystemParametersInfoA( SPI_GETWORKAREA, 0, &area, 0 );
1915 ok(rc, "SystemParametersInfoA: rc=%d err=%ld\n", rc, GetLastError());
1916 if( !EqualRect( &area, &curr_val)) /* no message if rect has not changed */
1917 test_change_message( SPI_SETWORKAREA, 0 );
1918 eq( area.left, old_area.left, "left", "%ld" );
1919 eq( area.top, old_area.top, "top", "%ld" );
1920 /* size may be rounded */
1921 ok( area.right >= old_area.right - 16 && area.right < old_area.right + 16,
1922 "right: got %ld instead of %ld\n", area.right, old_area.right );
1923 ok( area.bottom >= old_area.bottom - 16 && area.bottom < old_area.bottom + 16,
1924 "bottom: got %ld instead of %ld\n", area.bottom, old_area.bottom );
1926}
static Real area(Real A[2], Real B[2], Real C[2])
Definition: polyDBG.cc:50

Referenced by SysParamsThreadFunc().

◆ test_WM_DISPLAYCHANGE()

static void test_WM_DISPLAYCHANGE ( void  )
static

Definition at line 2496 of file sysparams.c.

2497{
2498 UINT test_bpps[] = {8, 16, 24}, default_bpp, i;
2500 DWORD res;
2501 BOOL ret;
2502
2505
2506 memset( &settings, 0, sizeof(DEVMODEW) );
2507 settings.dmSize = sizeof(DEVMODEW);
2509 ok( ret, "EnumDisplaySettingsW failed, error %#lx\n", GetLastError() );
2510
2511 ok( settings.dmFields & DM_BITSPERPEL, "got dmFields %#lx\n", settings.dmFields );
2512#ifdef __REACTOS__
2513 ok( settings.dmBitsPerPel == 32 || settings.dmBitsPerPel == 24 /* ROS testbot */, "got dmBitsPerPel %lu\n", settings.dmBitsPerPel );
2514#else
2515 ok( settings.dmBitsPerPel == 32, "got dmBitsPerPel %lu\n", settings.dmBitsPerPel );
2516#endif
2517 default_bpp = settings.dmBitsPerPel;
2518
2519 /* setting default mode most of the time doesn't send WM_DISPLAYCHANGE,
2520 * it only does the first time ChangeDisplaySettingsExW is called */
2521
2522 last_bpp = -1;
2523 change_counter = 0;
2526 ok( !res, "ChangeDisplaySettingsExW returned %ld\n", res );
2528 todo_wine
2529 ok( res == WAIT_TIMEOUT || broken( !res ), "WaitForSingleObject returned %#lx\n", res );
2530 todo_wine
2531 ok( last_bpp == -1 || broken( last_bpp == default_bpp ), "got WM_DISPLAYCHANGE bpp %d\n", last_bpp );
2533
2534 for (i = 0; i < ARRAY_SIZE(test_bpps); i++)
2535 {
2536 UINT bpp = test_bpps[i];
2537
2538 winetest_push_context( "bpp %u", bpp );
2539
2540 settings.dmBitsPerPel = bpp;
2541 settings.dmFields |= DM_BITSPERPEL;
2542
2543 last_bpp = -1;
2544 change_counter = 0;
2547 if (!res)
2548 {
2549 /* Wait quite long for the message, screen setting changes can take some time */
2551 ok( !res, "WaitForSingleObject returned %#lx\n", res );
2552 ok( last_bpp == bpp, "got WM_DISPLAYCHANGE bpp %d\n", last_bpp );
2553 }
2554 else
2555 {
2556 todo_wine
2557 win_skip( "ChangeDisplaySettingsExW returned %ld\n", res );
2559 "ChangeDisplaySettingsExW returned %ld\n", res );
2560 ok( last_bpp == -1, "got WM_DISPLAYCHANGE bpp %d\n", last_bpp );
2561 }
2563
2565 }
2566
2567 /* restoring default mode most of the time doesn't send WM_DISPLAYCHANGE */
2568
2569 settings.dmBitsPerPel = default_bpp;
2570 settings.dmFields |= DM_BITSPERPEL;
2571
2572 last_bpp = -1;
2573 change_counter = 0;
2576 ok( !res, "ChangeDisplaySettingsExW returned %ld\n", res );
2578 todo_wine
2579 ok( res == WAIT_TIMEOUT || broken( !res ), "WaitForSingleObject returned %#lx\n", res );
2580 todo_wine
2581 ok( last_bpp == -1 || broken( last_bpp == default_bpp ), "got WM_DISPLAYCHANGE bpp %d\n", last_bpp );
2583
2587}
struct mke2fs_defaults settings[]
#define WAIT_TIMEOUT
Definition: dderror.h:14
DWORD bpp
Definition: surface.c:185
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
Definition: synch.c:82
HANDLE WINAPI DECLSPEC_HOTPATCH CreateSemaphoreW(IN LPSECURITY_ATTRIBUTES lpSemaphoreAttributes OPTIONAL, IN LONG lInitialCount, IN LONG lMaximumCount, IN LPCWSTR lpName OPTIONAL)
Definition: synch.c:406
LONG WINAPI ChangeDisplaySettingsExW(LPCWSTR lpszDeviceName, LPDEVMODEW lpDevMode, HWND hwnd, DWORD dwflags, LPVOID lParam)
Definition: display.c:585
struct _devicemodeW DEVMODEW
#define DISP_CHANGE_BADMODE
Definition: winuser.h:195
#define DISP_CHANGE_FAILED
Definition: winuser.h:194

Referenced by SysParamsThreadFunc().

◆ UINT()

static UINT ( WINAPI pGetDpiForSystem)
static

Variable Documentation

◆ BOOL

Definition at line 48 of file sysparams.c.

◆ change_counter

◆ change_last_param

int change_last_param
static

Definition at line 172 of file sysparams.c.

Referenced by START_TEST(), SysParamsTestWndProc(), and test_change_message().

◆ displaychange_ok

BOOL displaychange_ok = FALSE
static

Definition at line 174 of file sysparams.c.

Referenced by SysParamsTestWndProc(), and test_WM_DISPLAYCHANGE().

◆ displaychange_sem

HANDLE displaychange_sem = 0
static

Definition at line 175 of file sysparams.c.

Referenced by SysParamsTestWndProc(), and test_WM_DISPLAYCHANGE().

◆ displaychange_test_active

BOOL displaychange_test_active = FALSE
static

Definition at line 174 of file sysparams.c.

Referenced by SysParamsTestWndProc(), and test_WM_DISPLAYCHANGE().

◆ dpi

◆ DPI_AWARENESS_CONTEXT

◆ DWORD

Definition at line 48 of file sysparams.c.

◆ ghTestWnd

HWND ghTestWnd
static

◆ gsm_error_ctr

int gsm_error_ctr
static

Definition at line 2690 of file sysparams.c.

Referenced by test_GetSystemMetrics().

◆ last_bpp

int last_bpp
static

Definition at line 173 of file sysparams.c.

Referenced by SysParamsTestWndProc(), and test_WM_DISPLAYCHANGE().

◆ real_dpi

◆ setmouse_valuenames

const char* setmouse_valuenames[3]
static
Initial value:
= {
}
#define SPI_SETMOUSE_VALNAME3
Definition: sysparams.c:67
#define SPI_SETMOUSE_VALNAME1
Definition: sysparams.c:65
#define SPI_SETMOUSE_VALNAME2
Definition: sysparams.c:66

Definition at line 646 of file sysparams.c.

Referenced by run_spi_setmouse_test().

◆ smcxsmsize

UINT smcxsmsize = 999999999
static

Definition at line 1502 of file sysparams.c.

Referenced by test_GetSystemMetrics(), and test_SPI_SETNONCLIENTMETRICS().

◆ strict

BOOL strict
static

Definition at line 55 of file sysparams.c.

Referenced by _test_reg_key(), and START_TEST().

◆ UINT

Definition at line 40 of file sysparams.c.