58#define eq(received, expected, label, type) \
59 ok((received) == (expected), "%s: got " type " instead of " type "\n", (label),(received),(expected))
62#define SPI_SETBEEP_REGKEY "Control Panel\\Sound"
63#define SPI_SETBEEP_VALNAME "Beep"
64#define SPI_SETMOUSE_REGKEY "Control Panel\\Mouse"
65#define SPI_SETMOUSE_VALNAME1 "MouseThreshold1"
66#define SPI_SETMOUSE_VALNAME2 "MouseThreshold2"
67#define SPI_SETMOUSE_VALNAME3 "MouseSpeed"
68#define SPI_SETBORDER_REGKEY "Control Panel\\Desktop\\WindowMetrics"
69#define SPI_SETBORDER_REGKEY2 "Control Panel\\Desktop"
70#define SPI_SETBORDER_VALNAME "BorderWidth"
71#define SPI_METRIC_REGKEY "Control Panel\\Desktop\\WindowMetrics"
72#define SPI_SCROLLWIDTH_VALNAME "ScrollWidth"
73#define SPI_SCROLLHEIGHT_VALNAME "ScrollHeight"
74#define SPI_CAPTIONWIDTH_VALNAME "CaptionWidth"
75#define SPI_CAPTIONHEIGHT_VALNAME "CaptionHeight"
76#define SPI_CAPTIONFONT_VALNAME "CaptionFont"
77#define SPI_SMCAPTIONWIDTH_VALNAME "SmCaptionWidth"
78#define SPI_SMCAPTIONHEIGHT_VALNAME "SmCaptionHeight"
79#define SPI_SMCAPTIONFONT_VALNAME "SmCaptionFont"
80#define SPI_MENUWIDTH_VALNAME "MenuWidth"
81#define SPI_MENUHEIGHT_VALNAME "MenuHeight"
82#define SPI_MENUFONT_VALNAME "MenuFont"
83#define SPI_STATUSFONT_VALNAME "StatusFont"
84#define SPI_MESSAGEFONT_VALNAME "MessageFont"
86#define SPI_SETKEYBOARDSPEED_REGKEY "Control Panel\\Keyboard"
87#define SPI_SETKEYBOARDSPEED_VALNAME "KeyboardSpeed"
88#define SPI_ICONHORIZONTALSPACING_REGKEY "Control Panel\\Desktop\\WindowMetrics"
89#define SPI_ICONHORIZONTALSPACING_REGKEY2 "Control Panel\\Desktop"
90#define SPI_ICONHORIZONTALSPACING_VALNAME "IconSpacing"
91#define SPI_ICONVERTICALSPACING_REGKEY "Control Panel\\Desktop\\WindowMetrics"
92#define SPI_ICONVERTICALSPACING_REGKEY2 "Control Panel\\Desktop"
93#define SPI_ICONVERTICALSPACING_VALNAME "IconVerticalSpacing"
94#define SPI_MINIMIZEDMETRICS_REGKEY "Control Panel\\Desktop\\WindowMetrics"
95#define SPI_MINWIDTH_VALNAME "MinWidth"
96#define SPI_MINHORZGAP_VALNAME "MinHorzGap"
97#define SPI_MINVERTGAP_VALNAME "MinVertGap"
98#define SPI_MINARRANGE_VALNAME "MinArrange"
99#define SPI_SETSCREENSAVETIMEOUT_REGKEY "Control Panel\\Desktop"
100#define SPI_SETSCREENSAVETIMEOUT_VALNAME "ScreenSaveTimeOut"
101#define SPI_SETSCREENSAVEACTIVE_REGKEY "Control Panel\\Desktop"
102#define SPI_SETSCREENSAVEACTIVE_VALNAME "ScreenSaveActive"
103#define SPI_SETGRIDGRANULARITY_REGKEY "Control Panel\\Desktop"
104#define SPI_SETGRIDGRANULARITY_VALNAME "GridGranularity"
105#define SPI_SETKEYBOARDDELAY_REGKEY "Control Panel\\Keyboard"
106#define SPI_SETKEYBOARDDELAY_VALNAME "KeyboardDelay"
107#define SPI_SETICONTITLEWRAP_REGKEY1 "Control Panel\\Desktop\\WindowMetrics"
108#define SPI_SETICONTITLEWRAP_REGKEY2 "Control Panel\\Desktop"
109#define SPI_SETICONTITLEWRAP_VALNAME "IconTitleWrap"
110#define SPI_SETMENUDROPALIGNMENT_REGKEY1 "Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows"
111#define SPI_SETMENUDROPALIGNMENT_REGKEY2 "Control Panel\\Desktop"
112#define SPI_SETMENUDROPALIGNMENT_VALNAME "MenuDropAlignment"
113#define SPI_SETDOUBLECLKWIDTH_REGKEY1 "Control Panel\\Mouse"
114#define SPI_SETDOUBLECLKWIDTH_REGKEY2 "Control Panel\\Desktop"
115#define SPI_SETDOUBLECLKWIDTH_VALNAME "DoubleClickWidth"
116#define SPI_SETDOUBLECLKHEIGHT_REGKEY1 "Control Panel\\Mouse"
117#define SPI_SETDOUBLECLKHEIGHT_REGKEY2 "Control Panel\\Desktop"
118#define SPI_SETDOUBLECLKHEIGHT_VALNAME "DoubleClickHeight"
119#define SPI_SETDOUBLECLICKTIME_REGKEY "Control Panel\\Mouse"
120#define SPI_SETDOUBLECLICKTIME_VALNAME "DoubleClickSpeed"
121#define SPI_SETMOUSEBUTTONSWAP_REGKEY "Control Panel\\Mouse"
122#define SPI_SETMOUSEBUTTONSWAP_VALNAME "SwapMouseButtons"
123#define SPI_SETWORKAREA_REGKEY "Control Panel\\Desktop"
124#define SPI_SETWORKAREA_VALNAME "WINE_WorkArea"
125#define SPI_SETSHOWSOUNDS_REGKEY "Control Panel\\Accessibility\\ShowSounds"
126#define SPI_SETSHOWSOUNDS_VALNAME "On"
127#define SPI_SETKEYBOARDPREF_REGKEY "Control Panel\\Accessibility\\Keyboard Preference"
128#define SPI_SETKEYBOARDPREF_VALNAME "On"
129#define SPI_SETKEYBOARDPREF_REGKEY_LEGACY "Control Panel\\Accessibility"
130#define SPI_SETKEYBOARDPREF_VALNAME_LEGACY "Keyboard Preference"
131#define SPI_SETSCREENREADER_REGKEY "Control Panel\\Accessibility\\Blind Access"
132#define SPI_SETSCREENREADER_VALNAME "On"
133#define SPI_SETSCREENREADER_REGKEY_LEGACY "Control Panel\\Accessibility"
134#define SPI_SETSCREENREADER_VALNAME_LEGACY "Blind Access"
135#define SPI_SETFONTSMOOTHING_REGKEY "Control Panel\\Desktop"
136#define SPI_SETFONTSMOOTHING_VALNAME "FontSmoothing"
137#define SPI_SETFONTSMOOTHINGTYPE_VALNAME "FontSmoothingType"
138#define SPI_SETFONTSMOOTHINGCONTRAST_VALNAME "FontSmoothingGamma"
139#define SPI_SETFONTSMOOTHINGORIENTATION_VALNAME "FontSmoothingOrientation"
140#define SPI_SETLOWPOWERACTIVE_REGKEY "Control Panel\\Desktop"
141#define SPI_SETLOWPOWERACTIVE_VALNAME "LowPowerActive"
142#define SPI_SETPOWEROFFACTIVE_REGKEY "Control Panel\\Desktop"
143#define SPI_SETPOWEROFFACTIVE_VALNAME "PowerOffActive"
144#define SPI_SETDRAGFULLWINDOWS_REGKEY "Control Panel\\Desktop"
145#define SPI_SETDRAGFULLWINDOWS_VALNAME "DragFullWindows"
146#define SPI_SETSNAPTODEFBUTTON_REGKEY "Control Panel\\Mouse"
147#define SPI_SETSNAPTODEFBUTTON_VALNAME "SnapToDefaultButton"
148#define SPI_SETMOUSEHOVERWIDTH_REGKEY "Control Panel\\Mouse"
149#define SPI_SETMOUSEHOVERWIDTH_VALNAME "MouseHoverWidth"
150#define SPI_SETMOUSEHOVERHEIGHT_REGKEY "Control Panel\\Mouse"
151#define SPI_SETMOUSEHOVERHEIGHT_VALNAME "MouseHoverHeight"
152#define SPI_SETMOUSEHOVERTIME_REGKEY "Control Panel\\Mouse"
153#define SPI_SETMOUSEHOVERTIME_VALNAME "MouseHoverTime"
154#define SPI_SETMOUSESCROLLCHARS_REGKEY "Control Panel\\Desktop"
155#define SPI_SETMOUSESCROLLCHARS_VALNAME "WheelScrollChars"
156#define SPI_SETMOUSESCROLLLINES_REGKEY "Control Panel\\Desktop"
157#define SPI_SETMOUSESCROLLLINES_VALNAME "WheelScrollLines"
158#define SPI_SETMENUSHOWDELAY_REGKEY "Control Panel\\Desktop"
159#define SPI_SETMENUSHOWDELAY_VALNAME "MenuShowDelay"
160#define SPI_SETDESKWALLPAPER_REGKEY "Control Panel\\Desktop"
161#define SPI_SETDESKWALLPAPER_VALNAME "Wallpaper"
164#define WINE_CURRENT_USER_REGKEY "Wine"
177#define run_in_process( a, b ) run_in_process_( __FILE__, __LINE__, a, b )
219 if (pSetThreadDpiAwarenessContext)
223 dpi = pGetDpiForSystem();
224 ok(
dpi,
"GetDpiForSystem failed\n" );
242 case WM_DISPLAYCHANGE:
260 case SPI_SETWORKAREA:
263 case SPI_SETNONCLIENTMETRICS:
321 skip(
"%s not supported on this platform\n",
name);
325 skip(
"%s does not have privileges to run\n",
name);
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);
336 ok(rc!=0,
"SystemParametersInfoA: rc=%d err=%ld\n",rc,
last_error);
356 valueLen=
sizeof(
value);
362 ok(
type == exp_type,
"wrong type %lu/%lu\n",
type, exp_type );
367 "Wrong value in registry: %s %s %08lx/%08lx\n",
372 "Wrong value in registry: %s %s '%s' instead of '%s'\n",
373 subKey1, valName1,
value, (
const char *)exp_value );
380 ok(0,
"Missing registry entry: subKey=%s, valName=%s\n",
386 valueLen=
sizeof(
value);
392 ok(
type == exp_type,
"wrong type %lu/%lu\n",
type, exp_type );
397 "Wrong value in registry: %s %s %08lx/%08lx\n",
402 "Wrong value in registry: %s %s '%s' instead of '%s'\n",
403 subKey1, valName1,
value, (
const char *)exp_value );
410 ok( 0,
"Missing registry entry: subKey=%s, valName=%s\n",
417 valueLen=
sizeof(
value);
423 ok(
type == exp_type,
"wrong type %lu/%lu\n",
type, exp_type );
428 "Wrong value in registry: %s %s %08lx/%08lx\n",
433 "Wrong value in registry: %s %s '%s' instead of '%s'\n",
434 subKey1, valName1,
value, (
const char *)exp_value );
441 ok( 0,
"Missing registry entry: subKey=%s, valName=%s\n",
447 valueLen=
sizeof(
value);
453 ok(
type == exp_type,
"wrong type %lu/%lu\n",
type, exp_type );
458 "Wrong value in registry: %s %s %08lx/%08lx\n",
463 "Wrong value in registry: %s %s '%s' instead of '%s'\n",
464 subKey1, valName1,
value, (
const char *)exp_value );
471 ok( 0,
"Missing registry entry: subKey=%s, valName=%s\n",
477 "Missing registry values: %s or %s in keys: %s or %s\n",
478 valName1, (valName2?valName2:
"<n/a>"), subKey1, (subKey2?subKey2:
"<n/a>") );
481#define test_reg_key( subKey, valName, testValue ) \
482 _test_reg_key( subKey, NULL, valName, NULL, testValue, REG_SZ, FALSE )
483#define test_reg_key_optional( subKey, valName, testValue ) \
484 _test_reg_key( subKey, NULL, valName, NULL, testValue, REG_SZ, TRUE )
485#define test_reg_key_ex( subKey1, subKey2, valName, testValue ) \
486 _test_reg_key( subKey1, subKey2, valName, NULL, testValue, REG_SZ, FALSE )
487#define test_reg_key_ex2( subKey1, subKey2, valName1, valName2, testValue ) \
488 _test_reg_key( subKey1, subKey2, valName1, valName2, testValue, REG_SZ, FALSE )
489#define test_reg_key_ex2_optional( subKey1, subKey2, valName1, valName2, testValue ) \
490 _test_reg_key( subKey1, subKey2, valName1, valName2, testValue, REG_SZ, TRUE )
491#define test_reg_key_dword( subKey, valName, testValue ) \
492 _test_reg_key( subKey, NULL, valName, NULL, testValue, REG_DWORD, FALSE )
593 trace(
"testing SPI_{GET,SET}BEEP\n");
602 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
606 curr_val ?
"Yes" :
"No" );
608 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
609 eq(
b, curr_val,
"SPI_{GET,SET}BEEP",
"%d" );
613 ok(rc,
"SystemParametersInfoW: rc=%d err=%ld\n", rc,
GetLastError());
614 eq(
b, curr_val,
"SystemParametersInfoW",
"%d" );
619 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
626 ok(rc,
"SystemParametersInfo: rc=%d err=%ld\n", rc,
GetLastError());
630 curr_val ?
"Yes" :
"No" );
632 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
633 eq(
b, curr_val,
"SPI_{GET,SET}BEEP",
"%d" );
637 ok(rc,
"SystemParametersInfoW: rc=%d err=%ld\n", rc,
GetLastError());
638 eq(
b, curr_val,
"SystemParametersInfoW",
"%d" );
643 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
659 static int aw_turn = 0;
673 ok(rc,
"SystemParametersInfo: rc=%d err=%ld\n", rc,
GetLastError());
675 for (
i = 0;
i < 3;
i++)
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]);
686 "expected acceleration %d, got %d\n", curr_val[2],
mi[2]);
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]);
693 "expected acceleration %d, got %d\n", curr_val[2],
mi[2]);
698 for (
i = 0;
i < nchange;
i++)
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" );
717 INT curr_val[3] = {6, 10, 1};
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} };
732 trace(
"testing SPI_{GET,SET}MOUSE\n");
772 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
780 NONCLIENTMETRICSA ncm;
782 ncm.cbSize =
FIELD_OFFSET(NONCLIENTMETRICSA, iPaddedBorderWidth);
784 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
788 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
791 ncm.iBorderWidth = curr_val;
795 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
800 if( regval != curr_val)
802 ok( regval==curr_val,
"wrong value in registry %d, expected %d\n", regval, curr_val);
805 if (curr_val == 0) curr_val = 1;
808 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
809 eq( (
UINT)ncm.iBorderWidth, curr_val,
"NonClientMetric.iBorderWidth",
"%d");
812 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
813 eq(
border, curr_val,
"SPI_{GET,SET}BORDER",
"%d");
827 NONCLIENTMETRICSA ncmsave;
831 ncmsave.cbSize =
FIELD_OFFSET(NONCLIENTMETRICSA, iPaddedBorderWidth);
834 win_skip(
"SPI_GETNONCLIENTMETRICS is not available\n");
841 "Control Panel\\Desktop\\WindowMetrics",
"CaptionWidth",
dpi);
842 ncmsave.iCaptionWidth = CaptionWidth;
844 trace(
"testing SPI_{GET,SET}BORDER\n");
851 PaddedBorderWidth = ncmsave.iBorderWidth - old_border;
852 if( PaddedBorderWidth){
853 win_skip(
"Cannot reliably restore border width yet (PaddedBorderWidth = %d)\n",
858 if ( old_border == 7 || old_border == 20 )
872 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
879 const UINT vals[]={0,20,31};
882 trace(
"testing SPI_{GET,SET}KEYBOARDSPEED\n");
903 eq(
v, vals[
i],
"SPI_{GET,SET}KEYBOARDSPEED",
"%d" );
907 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
920 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
922 curr_val =
max( curr_val, min_val );
927 if( regval != curr_val)
929 ok( curr_val == regval,
930 "wrong value in registry %d, expected %d\n", regval, curr_val);
933 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
934 eq( spacing, curr_val,
"ICONHORIZONTALSPACING",
"%d");
938 im.cbSize =
sizeof(ICONMETRICSA);
940 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
941 eq( im.iHorzSpacing, curr_val,
"SPI_GETICONMETRICS",
"%d" );
950 trace(
"testing SPI_ICONHORIZONTALSPACING\n");
961 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
968 const UINT vals[]={0,32767};
971 trace(
"testing SPI_{GET,SET}SCREENSAVETIMEOUT\n");
993 eq(
v, vals[
i],
"SPI_{GET,SET}SCREENSAVETIMEOUT",
"%d" );
998 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
1008 trace(
"testing SPI_{GET,SET}SCREENSAVEACTIVE\n");
1025 vals[
i] ?
"1" :
"0" );
1030 "SPI_{GET,SET}SCREENSAVEACTIVE: got %d instead of %d\n",
v, vals[
i]);
1034 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
1046 const UINT vals[]={0,3};
1049 trace(
"testing SPI_{GET,SET}KEYBOARDDELAY\n");
1071 eq( delay, vals[
i],
"SPI_{GET,SET}KEYBOARDDELAY",
"%d" );
1075 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
1089 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
1091 curr_val =
max( curr_val, min_val );
1096 if( regval != curr_val)
1098 ok( curr_val == regval,
1099 "wrong value in registry %d, expected %d\n", regval, curr_val);
1102 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
1103 eq( spacing, curr_val,
"ICONVERTICALSPACING",
"%d" );
1107 im.cbSize =
sizeof(ICONMETRICSA);
1109 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
1110 eq( im.iVertSpacing, curr_val,
"SPI_GETICONMETRICS",
"%d" );
1119 trace(
"testing SPI_ICONVERTICALSPACING\n");
1132 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
1143 trace(
"testing SPI_{GET,SET}ICONTITLEWRAP\n");
1161 if( regval != vals[
i])
1164 ok( regval == vals[
i],
"wrong value in registry %d, expected %d\n", regval, vals[
i] );
1168 eq(
v, vals[
i],
"SPI_{GET,SET}ICONTITLEWRAP",
"%d" );
1170 im.cbSize =
sizeof(ICONMETRICSA);
1172 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
1173 eq( im.iTitleWrap, (
BOOL)vals[
i],
"SPI_GETICONMETRICS",
"%d" );
1177 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
1187 trace(
"testing SPI_{GET,SET}MENUDROPALIGNMENT\n");
1205 vals[
i] ?
"1" :
"0" );
1209 eq(
v, vals[
i],
"SPI_{GET,SET}MENUDROPALIGNMENT",
"%d" );
1211 "SM_MENUDROPALIGNMENT",
"%d" );
1216 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
1224 const UINT vals[]={0,10000};
1227 trace(
"testing SPI_{GET,SET}DOUBLECLKWIDTH\n");
1246 "SM_CXDOUBLECLK",
"%d" );
1251 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
1258 const UINT vals[]={0,10000};
1261 trace(
"testing SPI_{GET,SET}DOUBLECLKHEIGHT\n");
1280 "SM_CYDOUBLECLK",
"%d" );
1285 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
1297 trace(
"testing SPI_{GET,SET}DOUBLECLICKTIME\n");
1317 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
1324 saved_val = curr_val;
1342 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
1352 trace(
"testing SPI_{GET,SET}MOUSEBUTTONSWAP\n");
1366 vals[
i] ?
"1" :
"0" );
1368 "SM_SWAPBUTTON",
"%d" );
1371 "SwapMouseButton",
"%d" );
1372 ok( rc==(
BOOL)vals[
i],
"SwapMouseButton does not return previous state (really %d)\n", rc );
1378 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
1387 trace(
"testing SPI_GETFASTTASKSWITCH\n");
1405 trace(
"testing SPI_{GET,SET}DRAGFULLWINDOWS\n");
1424 vals[
i] ?
"1" :
"0" );
1428 eq(
v, vals[
i],
"SPI_{GET,SET}DRAGFULLWINDOWS",
"%d" );
1432 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
1436#define test_reg_metric( KEY, VAL, val) do { \
1438 regval = metricfromreg( KEY, VAL, dpi);\
1439 ok( regval==val, "wrong value \"%s\" in registry %d, expected %d\n", VAL, regval, val);\
1442#define test_reg_metric2( KEY1, KEY2, VAL, val) do { \
1444 regval = metricfromreg( KEY1, VAL, dpi);\
1445 if( regval != val) regval = metricfromreg( KEY2, VAL, dpi);\
1446 ok( regval==val, "wrong value \"%s\" in registry %d, expected %d\n", VAL, regval, val);\
1449#define test_reg_font( KEY, VAL, LF) do { \
1451 lffromreg( KEY, VAL, &lfreg);\
1452 ok( (lfreg.lfHeight < 0 ? (LF).lfHeight == MulDiv( lfreg.lfHeight, dpi, real_dpi ) : \
1453 MulDiv( -(LF).lfHeight , 72, dpi) == lfreg.lfHeight )&&\
1454 (LF).lfWidth == lfreg.lfWidth &&\
1455 (LF).lfWeight == lfreg.lfWeight &&\
1456 !strcmp( (LF).lfFaceName, lfreg.lfFaceName)\
1457 , "wrong value \"%s\" in registry %ld, %ld\n", VAL, (LF).lfHeight, lfreg.lfHeight);\
1460#define TEST_NONCLIENTMETRICS_REG( ncm) do { \
1462test_reg_metric( SPI_METRIC_REGKEY, SPI_SCROLLWIDTH_VALNAME, (ncm).iScrollWidth);\
1463test_reg_metric( SPI_METRIC_REGKEY, SPI_SCROLLHEIGHT_VALNAME, (ncm).iScrollHeight);\
1465test_reg_metric( SPI_METRIC_REGKEY, SPI_CAPTIONHEIGHT_VALNAME, (ncm).iCaptionHeight);\
1466test_reg_metric( SPI_METRIC_REGKEY, SPI_SMCAPTIONWIDTH_VALNAME, (ncm).iSmCaptionWidth);\
1467test_reg_metric( SPI_METRIC_REGKEY, SPI_SMCAPTIONHEIGHT_VALNAME, (ncm).iSmCaptionHeight);\
1468test_reg_metric( SPI_METRIC_REGKEY, SPI_MENUWIDTH_VALNAME, (ncm).iMenuWidth);\
1469test_reg_metric( SPI_METRIC_REGKEY, SPI_MENUHEIGHT_VALNAME, (ncm).iMenuHeight);\
1470test_reg_font( SPI_METRIC_REGKEY, SPI_MENUFONT_VALNAME, (ncm).lfMenuFont);\
1471test_reg_font( SPI_METRIC_REGKEY, SPI_CAPTIONFONT_VALNAME, (ncm).lfCaptionFont);\
1472test_reg_font( SPI_METRIC_REGKEY, SPI_SMCAPTIONFONT_VALNAME, (ncm).lfSmCaptionFont);\
1473test_reg_font( SPI_METRIC_REGKEY, SPI_STATUSFONT_VALNAME, (ncm).lfStatusFont);\
1474test_reg_font( SPI_METRIC_REGKEY, SPI_MESSAGEFONT_VALNAME, (ncm).lfMessageFont); } while(0)
1486 return tm.tmHeight + (
flag ?
tm.tmExternalLeading : 0);
1498 return tm.tmHeight + (
flag ?
tm.tmExternalLeading : 0);
1508 NONCLIENTMETRICSA Ncmorig;
1509 NONCLIENTMETRICSA Ncmnew;
1510 NONCLIENTMETRICSA Ncmcur;
1511 NONCLIENTMETRICSA Ncmstart;
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);
1518 trace(
"testing SPI_{GET,SET}NONCLIENTMETRICS\n");
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;
1567 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
1571 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
1579 Ncmnew.lfMenuFont.lfHeight -= 8;
1580 Ncmnew.lfCaptionFont.lfHeight =-4;
1581 Ncmnew.lfSmCaptionFont.lfHeight -=10;
1583 Ncmnew.iCaptionWidth = 0;
1584 Ncmnew.iCaptionHeight = 0;
1585 Ncmnew.iScrollHeight = 0;
1586 Ncmnew.iScrollWidth = 0;
1590 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
1596 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
1600 "MenuHeight: %d expected %d\n", Ncmcur.iMenuHeight,
expect);
1602 ok( Ncmcur.iCaptionHeight ==
expect,
1603 "CaptionHeight: %d expected %d\n", Ncmcur.iCaptionHeight,
expect);
1605 ok( Ncmcur.iSmCaptionHeight ==
expect,
1606 "SmCaptionHeight: %d expected %d\n", Ncmcur.iSmCaptionHeight,
expect);
1609 ok( (Ncmcur.iCaptionWidth >= 8 && Ncmcur.iCaptionWidth <= 13) ||
1610 Ncmcur.iCaptionWidth == Ncmstart.iCaptionWidth,
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);
1622 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
1640 trace(
"testing SPI_{GET,SET}MINIMIZEDMETRICS\n");
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",
1655 ok( regval == -1 || regval == lpMm_orig.
iVertGap,
"wrong value in registry %d, expected %d\n",
1658 ok( regval == -1 || regval == lpMm_orig.
iArrange,
"wrong value in registry %d, expected %d\n",
1668 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
1671 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
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",
1685 ok( regval == lpMm_new.
iVertGap,
"wrong value in registry %d, expected %d\n",
1688 ok( regval == lpMm_new.
iArrange,
"wrong value in registry %d, expected %d\n",
1692 lpMm_new.
iWidth,
"iWidth",
"%d" );
1694 lpMm_new.
iHorzGap,
"iHorzGap",
"%d" );
1696 lpMm_new.
iVertGap,
"iVertGap",
"%d" );
1698 lpMm_new.
iArrange,
"iArrange",
"%d" );
1706 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
1709 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
1711 eq( lpMm_new.
iWidth, 0,
"iWidth",
"%d" );
1712 eq( lpMm_new.
iHorzGap, 0,
"iHorzGap",
"%d" );
1713 eq( lpMm_new.
iVertGap, 0,
"iVertGap",
"%d" );
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",
1726 ok( regval == lpMm_new.
iVertGap,
"wrong value in registry %d, expected %d\n",
1729 ok( regval == lpMm_new.
iArrange,
"wrong value in registry %d, expected %d\n",
1734 lpMm_new.
iWidth,
"iWidth",
"%d" );
1736 lpMm_new.
iHorzGap,
"iHorzGap",
"%d" );
1738 lpMm_new.
iVertGap,
"iVertGap",
"%d" );
1740 lpMm_new.
iArrange,
"iArrange",
"%d" );
1744 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
1748 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
1759 ICONMETRICSA im_orig;
1760 ICONMETRICSA im_new;
1761 ICONMETRICSA im_cur;
1764 im_orig.cbSize =
sizeof(ICONMETRICSA);
1765 im_new.cbSize =
sizeof(ICONMETRICSA);
1766 im_cur.cbSize =
sizeof(ICONMETRICSA);
1768 trace(
"testing SPI_{GET,SET}ICONMETRICS\n");
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);
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;
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");
1808 strcpy( im_cur.lfFont.lfFaceName,
"MS Sans Serif");
1812 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
1815 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
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);
1837 im_new.iHorzSpacing,
"iHorzSpacing",
"%d" );
1839 im_new.iVertSpacing,
"iVertSpacing",
"%d" );
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);
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);
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);
1864 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
1868 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
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" );
1882 trace(
"testing SPI_{GET,SET}WORKAREA\n");
1898 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
1900 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
1903 eq(
area.left, curr_val.
left,
"left",
"%ld" );
1904 eq(
area.top, curr_val.
top,
"top",
"%ld" );
1907 "right: got %ld instead of %ld\n",
area.right, curr_val.
right );
1909 "bottom: got %ld instead of %ld\n",
area.bottom, curr_val.
bottom );
1913 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
1915 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
1918 eq(
area.left, old_area.
left,
"left",
"%ld" );
1919 eq(
area.top, old_area.
top,
"top",
"%ld" );
1922 "right: got %ld instead of %ld\n",
area.right, old_area.
right );
1924 "bottom: got %ld instead of %ld\n",
area.bottom, old_area.
bottom );
1935 trace(
"testing SPI_{GET,SET}SHOWSOUNDS\n");
1952 vals[
i] ?
"1" :
"0" );
1956 eq(
v, vals[
i],
"SPI_GETSHOWSOUNDS",
"%d" );
1958 "SM_SHOWSOUNDS",
"%d" );
1962 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
1972 trace(
"testing SPI_{GET,SET}KEYBOARDPREF\n");
1990 vals[
i] ?
"1" :
"0" );
1994 eq(
v, (
BOOL)vals[
i],
"SPI_GETKEYBOARDPREF",
"%d" );
1998 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
2009 trace(
"testing SPI_{GET,SET}SCREENREADER\n");
2026 vals[
i] ?
"1" :
"0" );
2030 eq(
v, (
BOOL)vals[
i],
"SPI_GETSCREENREADER",
"%d" );
2034 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
2042 DWORD old_type, old_contrast, old_orient;
2043 const UINT vals[]={0xffffffff,0,1,2};
2046 trace(
"testing SPI_{GET,SET}FONTSMOOTHING\n");
2066 vals[
i] ?
"2" :
"0" );
2086 if (!
test_error_msg(rc,
"SPI_SETFONTSMOOTHINGORIENTATION"))
return;
2094 eq(
v, vals[
i] ? 1 : 0,
"SPI_GETFONTSMOOTHING",
"%d" );
2098 ok(
v == vals[
i],
"wrong value %x/%x\n",
v, vals[
i] );
2102 ok(
v == vals[
i],
"wrong value %x/%x\n",
v, vals[
i] );
2106 ok(
v == vals[
i],
"wrong value %x/%x\n",
v, vals[
i] );
2110 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
2112 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
2114 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
2116 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
2127 trace(
"testing SPI_{GET,SET}LOWPOWERACTIVE\n");
2144 vals[
i] ?
"1" :
"0" );
2150 ok(
v == vals[
i] ||
v == 0,
2151 "SPI_GETLOWPOWERACTIVE: got %d instead of 0 or %d\n",
v, vals[
i]);
2155 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
2166 trace(
"testing SPI_{GET,SET}POWEROFFACTIVE\n");
2183 vals[
i] ?
"1" :
"0" );
2189 ok(
v == vals[
i] ||
v == 0,
2190 "SPI_GETPOWEROFFACTIVE: got %d instead of 0 or %d\n",
v, vals[
i]);
2194 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
2205 trace(
"testing SPI_{GET,SET}SNAPTODEFBUTTON\n");
2222 vals[
i] ?
"1" :
"0" );
2226 eq(
v, vals[
i],
"SPI_GETSNAPTODEFBUTTON",
"%d" );
2230 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
2238 const UINT vals[]={0,32767};
2241 trace(
"testing SPI_{GET,SET}MOUSEHOVERWIDTH\n");
2263 eq(
v, vals[
i],
"SPI_{GET,SET}MOUSEHOVERWIDTH",
"%d" );
2268 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
2276 const UINT vals[]={0,32767};
2279 trace(
"testing SPI_{GET,SET}MOUSEHOVERHEIGHT\n");
2301 eq(
v, vals[
i],
"SPI_{GET,SET}MOUSEHOVERHEIGHT",
"%d" );
2306 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
2318 const UINT vals[]={10,32767};
2321 trace(
"testing SPI_{GET,SET}MOUSEHOVERTIME\n");
2343 eq(
v, vals[
i],
"SPI_{GET,SET}MOUSEHOVERTIME",
"%d" );
2348 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
2356 const UINT vals[]={0,32767};
2359 trace(
"testing SPI_{GET,SET}WHEELSCROLLLINES\n");
2383 eq(
v, vals[
i],
"SPI_{GET,SET}WHEELSCROLLLINES",
"%d" );
2388 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
2396 const UINT vals[]={0,32767};
2399 trace(
"testing SPI_{GET,SET}MENUSHOWDELAY\n");
2423 eq(
v, vals[
i],
"SPI_{GET,SET}MENUSHOWDELAY",
"%d" );
2428 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
2436 const UINT vals[]={32767,0};
2439 trace(
"testing SPI_{GET,SET}WHEELSCROLLCHARS\n");
2462 eq(
v, vals[
i],
"SPI_{GET,SET}WHEELSCROLLCHARS",
"%d" );
2467 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
2477 trace(
"testing SPI_{GET,SET}DESKWALLPAPER\n");
2486 ok(rc,
"SystemParametersInfoA: rc=%d err=%ld\n", rc,
GetLastError());
2490 ok(rc,
"***warning*** failed to restore the original value: rc=%d err=%ld\n", rc,
GetLastError());
2498 UINT test_bpps[] = {8, 16, 24}, default_bpp,
i;
2517 default_bpp =
settings.dmBitsPerPel;
2526 ok( !
res,
"ChangeDisplaySettingsExW returned %ld\n",
res );
2551 ok( !
res,
"WaitForSingleObject returned %#lx\n",
res );
2557 win_skip(
"ChangeDisplaySettingsExW returned %ld\n",
res );
2559 "ChangeDisplaySettingsExW returned %ld\n",
res );
2569 settings.dmBitsPerPel = default_bpp;
2576 ok( !
res,
"ChangeDisplaySettingsExW returned %ld\n",
res );
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};
2665 return (sz.
cx / 26 + 1) / 2;
2674 if( !ptm) ptm = &
tm;
2692#define ok_gsm( i, e)\
2695 int act = GetSystemMetrics( (i));\
2696 if( exp != act) gsm_error_ctr++;\
2697 ok( !( exp != act),"GetSystemMetrics(%s): expected %d actual %d\n", #i, exp,act);\
2699#define ok_gsm_2( i, e1, e2)\
2703 int act = GetSystemMetrics( (i));\
2704 if( exp1 != act && exp2 != act) gsm_error_ctr++;\
2705 ok( !( exp1 != act && exp2 != act), "GetSystemMetrics(%s): expected %d or %d actual %d\n", #i, exp1, exp2, act);\
2707#define ok_gsm_3( i, e1, e2, e3)\
2712 int act = GetSystemMetrics( (i));\
2713 if( exp1 != act && exp2 != act && exp3 != act) gsm_error_ctr++;\
2714 ok( !( exp1 != act && exp2 != act && exp3 != act),"GetSystemMetrics(%s): expected %d or %d or %d actual %d\n", #i, exp1, exp2, exp3, act);\
2737 if (
size >= 64)
return 64;
2738 if (
size >= 48)
return 48;
2745 UINT IconSpacing, IconVerticalSpacing;
2750 INT CaptionWidthfromreg,
width, smicon, broken_val;
2752 NONCLIENTMETRICSA ncm;
2755 assert(
sizeof(ncm) == 344);
2757 ncm.cbSize =
FIELD_OFFSET(NONCLIENTMETRICSA, iPaddedBorderWidth);
2759 ok(rc,
"SystemParametersInfoA failed\n");
2761 ncm.cbSize =
FIELD_OFFSET(NONCLIENTMETRICSA, iPaddedBorderWidth) - 1;
2763 ok(!rc,
"SystemParametersInfoA should fail\n");
2765 ncm.cbSize =
FIELD_OFFSET(NONCLIENTMETRICSA, iPaddedBorderWidth) + 1;
2768 ok(!rc,
"SystemParametersInfoA should fail\n");
2770 ncm.cbSize =
sizeof(ncm);
2772 ncm.iPaddedBorderWidth = 0xcccc;
2774 ok(rc ||
broken(!rc) ,
"SystemParametersInfoA failed\n");
2775 if (rc)
ok( ncm.iPaddedBorderWidth == 0,
"wrong iPaddedBorderWidth %u\n", ncm.iPaddedBorderWidth );
2777 minim.
cbSize =
sizeof( minim);
2778 ncm.cbSize =
FIELD_OFFSET(NONCLIENTMETRICSA, iPaddedBorderWidth);
2782 win_skip(
"SPI_GETNONCLIENTMETRICS is not available\n");
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);
2795 "Control Panel\\Desktop\\WindowMetrics",
"CaptionWidth",
dpi);
2800 IconVerticalSpacing = 0;
2839 ok_gsm(
SM_CXMIN, 3 *
max( CaptionWidthfromreg >= 0 ? CaptionWidthfromreg : ncm.iCaptionWidth, 8) +
2868 width = CaptionWidthfromreg > 0 ? CaptionWidthfromreg : ncm.iCaptionWidth;
2869 if (!pIsProcessDPIAware || pIsProcessDPIAware())
2873 broken_val = (
min( ncm.iCaptionHeight,
width ) - 2) & ~1;
2874 broken_val =
min( broken_val, 20 );
2890 ncm.iSmCaptionWidth,
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",
2974 NONCLIENTMETRICSW ncm1, ncm2;
2975 ICONMETRICSW im1, im2;
2979 if (!pSystemParametersInfoForDpi)
2981 win_skip(
"custom dpi metrics not supported\n" );
2985 ncm1.cbSize =
sizeof(ncm1);
2988 ncm2.cbSize =
sizeof(ncm2);
2989 ret = pSystemParametersInfoForDpi( SPI_GETNONCLIENTMETRICS,
sizeof(ncm2), &ncm2,
FALSE, custom_dpi );
2992 for (
i = 0;
i < 92;
i++)
2995 int ret2 = pGetSystemMetricsForDpi(
i, custom_dpi );
3012 ok( ret1 ==
MulDiv( ret2,
dpi, custom_dpi ),
"%u: wrong value %u vs %u\n",
i, ret1, ret2 );
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 );
3023 else if (
val < 64)
val = 48;
3025 ok(
val == ret2,
"%u: wrong value %u vs %u\n",
i, ret1, ret2 );
3030 ok( ret1 - 1 ==
MulDiv( ret2 - 1,
dpi, custom_dpi ),
"%u: wrong value %u vs %u\n",
i, ret1, ret2 );
3033 ok( ret1 / 8 ==
MulDiv( ret2,
dpi, custom_dpi ) / 8,
"%u: wrong value %u vs %u\n",
i, ret1, ret2 );
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 );
3045 "%u: wrong value %u vs %u\n",
i, ret1, ret2 );
3051 "%u: wrong value %u vs %u font %u vs %u\n",
i, ret1, ret2,
3057 val += 2 * pGetSystemMetricsForDpi(
SM_CYFRAME, custom_dpi );
3058 val += 2 * ncm2.iPaddedBorderWidth;
3059 ok( ret1 == ret2 || ret2 ==
val ,
"%u: expected %u or %u, got %u\n",
i, ret1,
val, ret2 );
3064 ok( ret1 == ret2 || (ret2 >=
val - 10 && ret2 <=
val + 10) ,
3065 "%u: expected %u or %u, got %u\n",
i, ret1,
val, ret2 );
3068 ok( ret1 == ret2,
"%u: wrong value %u vs %u\n",
i, ret1, ret2 );
3072 im1.cbSize =
sizeof(im1);
3075 im2.cbSize =
sizeof(im2);
3076 ret = pSystemParametersInfoForDpi( SPI_GETICONMETRICS,
sizeof(im2), &im2,
FALSE, custom_dpi );
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 );
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 );
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__ );
3119 for (
i = 1;
i < 120;
i++)
3124 ret = pSystemParametersInfoForDpi(
i, 0, &
val, 0, custom_dpi );
3125 ok( !
ret,
"%u: SystemParametersInfoForDpi succeeded\n",
i );
3160 memset(&dm, 0,
sizeof(dm));
3166 "Unexpected dmFields %#lx.\n", dm.
dmFields);
3193 memset(&dm, 0,
sizeof(dm));
3197 ok(!
ret,
"EnumDisplaySettingsA succeeded\n");
3202 memset(&dm, 0,
sizeof(dm));
3206 ok(!
ret,
"EnumDisplaySettingsA succeeded\n");
3211 memset(&dm, 0,
sizeof(dm));
3212 memset(&dm2, 0,
sizeof(dm2));
3214 dm2.
dmSize =
sizeof(dm2);
3216 ok(
ret,
"get_primary_adapter_name failed\n");
3221 ok(!
memcmp(&dm, &dm2,
sizeof(dm)),
"Expect NULL device is the primary device.\n");
3225 memset(&dm, 0,
sizeof(dm));
3230 ok((dm.
dmFields & setting_fields) == setting_fields,
"Expect dmFields to contain %#lx, got %#lx\n",
3233 memset(&dm, 0,
sizeof(dm));
3239 ok((dm.
dmFields & setting_fields) == setting_fields,
"Expect dmFields to contain %#lx, got %#lx\n",
3242 memset(&dmW, 0,
sizeof(dmW));
3247 ok((dmW.
dmFields & setting_fields) == setting_fields,
"Expect dmFields to contain %#lx, got %#lx\n",
3250 memset(&dmW, 0,
sizeof(dmW));
3251 dmW.
dmSize =
sizeof(dmW);
3256 ok((dmW.
dmFields & setting_fields) == setting_fields,
"Expect dmFields to contain %#lx, got %#lx\n",
3263 memset(&dm, 0,
sizeof(dm));
3265 ok(!
ret,
"EnumDisplaySettingsExA succeed\n");
3267 memset(&dmW, 0,
sizeof(dmW));
3269 ok(!
ret,
"EnumDisplaySettingsExA succeed\n");
3272 memset(&dm, 0,
sizeof(dm));
3279 memset(&dm, 0,
sizeof(dm));
3289 memset(&dmW, 0,
sizeof(dmW));
3296 memset(&dmW, 0,
sizeof(dmW));
3310 memset(&dm, 0,
sizeof(dm));
3314 ok((dm.
dmFields & setting_fields) == setting_fields,
"Expect dmFields to contain %#lx, got %#lx\n",
3332 if (pSetThreadDpiAwarenessContext)
3335 if (pSetThreadDpiAwarenessContext &&
ctx)
3336 pSetThreadDpiAwarenessContext(
ctx);
3350 memset(&dm, 0,
sizeof(dm));
3357 ok((dm.
dmFields & setting_fields) == setting_fields,
3358 "Expect dmFields to contain %#lx, got %#lx\n", setting_fields, dm.
dmFields);
3362 ok((dm.
dmFields & mode_fields) == mode_fields,
"Expect dmFields to contain %#lx, got %#lx\n",
3386 ok(
mode >= 1,
"Expect at least one valid mode gets enumerated.\n");
3392 "Expected ERROR_NO_MORE_FILES, ERROR_MOD_NOT_FOUND or 0xdeadbeef, got %#lx\n",
err);
3402 ok(hbr ==
NULL,
"Expected NULL brush\n");
3410 ok(hbr ==
NULL,
"Expected NULL brush\n");
3414 win_skip(
"COLOR_MENUBAR unsupported\n");
3427 ok( !pIsProcessDPIAware(),
"not aware\n" );
3433 ok( pIsProcessDPIAware(),
"not aware\n" );
3442 ok(
obj[
i] != obj2[
i],
"%u: same object\n",
i );
3446 ok(
obj[
i] != obj2[
i],
"%u: same object\n",
i );
3453 ok(
obj[
i] == obj2[
i],
"%u: different object\n",
i );
3458 pSetThreadDpiAwarenessContext(
context );
3463 pt->x =
MulDiv(
pt->x, target_dpi, src_dpi );
3464 pt->y =
MulDiv(
pt->y, target_dpi, src_dpi );
3507 if (!pLogicalToPhysicalPointForPerMonitorDPI)
3509 win_skip(
"LogicalToPhysicalPointForPerMonitorDPI not supported\n" );
3535 ok( monitor != 0,
"failed to get monitor\n" );
3536 mon_info.
cbSize =
sizeof(mon_info);
3546 ok(
EqualRect( &desktop, &
rect ),
"%Iu: wrong caps virt desktop rect %s expected %s\n",
3599 "%Iu/%Iu: wrong placement min pos %ld,%ld expected %ld,%ld\n",
i,
j,
3604 "%Iu/%Iu: wrong placement max pos %ld,%ld expected %ld,%ld\n",
i,
j,
3609 "%Iu/%Iu: wrong placement rect %s expect %s\n",
i,
j,
3625 ok(
EqualRect( &desktop, &
rect ),
"%Iu/%Iu: wrong desktop resolution %s expected %s\n",
3720 win_dpi = pGetDpiForWindow(
hwnd );
3727 ret = pLogicalToPhysicalPointForPerMonitorDPI(
hwnd, &
point );
3728 ok(
ret,
"%Iu/%Iu: LogicalToPhysicalPointForPerMonitorDPI failed\n",
i,
j );
3731 "%Iu/%Iu: wrong pos %ld,%ld dpi %u\n",
i,
j,
point.
x,
point.
y, win_dpi );
3734 ret = pPhysicalToLogicalPointForPerMonitorDPI(
hwnd, &
point );
3735 ok(
ret,
"%Iu/%Iu: PhysicalToLogicalPointForPerMonitorDPI failed\n",
i,
j );
3738 "%Iu/%Iu: wrong pos %ld,%ld dpi %u\n",
i,
j,
point.
x,
point.
y, win_dpi );
3744 ret = pLogicalToPhysicalPointForPerMonitorDPI(
hwnd, &
point );
3745 ok( !
ret,
"%Iu/%Iu: LogicalToPhysicalPointForPerMonitorDPI succeeded\n",
i,
j );
3748 ret = pLogicalToPhysicalPointForPerMonitorDPI(
hwnd, &
point );
3749 ok( !
ret,
"%Iu/%Iu: LogicalToPhysicalPointForPerMonitorDPI succeeded\n",
i,
j );
3751 ret = pLogicalToPhysicalPointForPerMonitorDPI(
hwnd, &
point );
3752 ok(
ret,
"%Iu/%Iu: LogicalToPhysicalPointForPerMonitorDPI failed\n",
i,
j );
3755 ret = pLogicalToPhysicalPointForPerMonitorDPI(
hwnd, &
point );
3756 ok( !
ret,
"%Iu/%Iu: LogicalToPhysicalPointForPerMonitorDPI succeeded\n",
i,
j );
3759 ret = pLogicalToPhysicalPointForPerMonitorDPI(
hwnd, &
point );
3760 ok( !
ret,
"%Iu/%Iu: LogicalToPhysicalPointForPerMonitorDPI succeeded\n",
i,
j );
3762 ret = pLogicalToPhysicalPointForPerMonitorDPI(
hwnd, &
point );
3763 ok(
ret,
"%Iu/%Iu: LogicalToPhysicalPointForPerMonitorDPI failed\n",
i,
j );
3770 ret = pPhysicalToLogicalPointForPerMonitorDPI(
hwnd, &
point );
3771 ok( !
ret,
"%Iu/%Iu: PhysicalToLogicalPointForPerMonitorDPI succeeded\n",
i,
j );
3774 ret = pPhysicalToLogicalPointForPerMonitorDPI(
hwnd, &
point );
3775 ok( !
ret,
"%Iu/%Iu: PhysicalToLogicalPointForPerMonitorDPI succeeded\n",
i,
j );
3777 ret = pPhysicalToLogicalPointForPerMonitorDPI(
hwnd, &
point );
3778 ok(
ret,
"%Iu/%Iu: PhysicalToLogicalPointForPerMonitorDPI failed\n",
i,
j );
3781 ret = pPhysicalToLogicalPointForPerMonitorDPI(
hwnd, &
point );
3782 ok( !
ret,
"%Iu/%Iu: PhysicalToLogicalPointForPerMonitorDPI succeeded\n",
i,
j );
3785 ret = pPhysicalToLogicalPointForPerMonitorDPI(
hwnd, &
point );
3786 ok( !
ret,
"%Iu/%Iu: PhysicalToLogicalPointForPerMonitorDPI succeeded\n",
i,
j );
3788 ret = pPhysicalToLogicalPointForPerMonitorDPI(
hwnd, &
point );
3789 ok(
ret,
"%Iu/%Iu: PhysicalToLogicalPointForPerMonitorDPI failed\n",
i,
j );
3793 pSetThreadDpiAwarenessContext(
context );
3800 if (!pIsProcessDPIAware)
3802 win_skip(
"IsProcessDPIAware not available\n");
3806 ret = pSetProcessDPIAware();
3809 ret = pIsProcessDPIAware();
3845 ctx = pGetThreadDpiAwarenessContext();
3849 ret = pSetProcessDpiAwarenessContext( 0 );
3850 ok( !
ret,
"SetProcessDpiAwarenessContext succeeded\n" );
3854 ok( !
ret,
"SetProcessDpiAwarenessContext succeeded\n" );
3858 ok( !
ret,
"SetProcessDpiAwarenessContext succeeded\n" );
3862 ok( !
ret,
"SetProcessDpiAwarenessContext succeeded\n" );
3866 ok( !
ret,
"SetProcessDpiAwarenessContext succeeded\n" );
3870 ok( !
ret,
"SetProcessDpiAwarenessContext succeeded\n" );
3874 ok( !
ret,
"SetProcessDpiAwarenessContext succeeded\n" );
3878 ok( !
ret,
"SetProcessDpiAwarenessContext succeeded\n" );
3882 ok( !
ret,
"SetProcessDpiAwarenessContext succeeded\n" );
3886 ok( !
ret,
"SetProcessDpiAwarenessContext succeeded\n" );
3888 ctx = pGetThreadDpiAwarenessContext();
3892 ret = pSetProcessDpiAwarenessContext(
context );
3895 ctx = pGetThreadDpiAwarenessContext();
3896 ok(
ctx == expect_ctx,
"got %p\n",
ctx );
3901 ret = pSetProcessDpiAwarenessContext( contexts[
i] );
3902 ok( !
ret,
"SetProcessDpiAwarenessContext succeeded\n" );
3904 ctx = pGetThreadDpiAwarenessContext();
3905 ok(
ctx == expect_ctx,
"got %p\n",
ctx );
3909 ctx = pGetThreadDpiAwarenessContext();
3910 ok(
ctx == expect_ctx,
"got %p\n",
ctx );
3913 ctx = pGetThreadDpiAwarenessContext();
3916 ok( old_ctx ==
ctx,
"got %p\n", old_ctx );
3917 ctx = pGetThreadDpiAwarenessContext();
3923 ok( !old_ctx,
"SetThreadDpiAwarenessContext succeeded\n" );
3927 ok( !old_ctx,
"SetThreadDpiAwarenessContext succeeded\n" );
3931 ok( old_ctx ==
ctx,
"got %p\n", old_ctx );
3932 ctx = pGetThreadDpiAwarenessContext();
3933 ok(
ctx == expect_ctx,
"got %p\n",
ctx );
3936 ctx = pGetThreadDpiAwarenessContext();
3937 ok(
ctx == expect_ctx,
"got %p\n",
ctx );
3940 ctx = pGetThreadDpiAwarenessContext();
3941 ok(
ctx == expect_ctx,
"got %p\n",
ctx );
3944 ctx = pGetThreadDpiAwarenessContext();
3945 ok(
ctx == expect_ctx,
"got %p\n",
ctx );
3954 if (!pSetThreadDpiAwarenessContext || !pGetThreadDpiAwarenessContext)
3956 win_skip(
"(Set|Get)ThreadDpiAwarenessContext missing, skipping tests\n" );
3960 ctx = pGetThreadDpiAwarenessContext();
3963 old_ctx = pSetThreadDpiAwarenessContext( 0 );
3964 ok( !old_ctx,
"SetThreadDpiAwarenessContext succeeded\n" );
3966 ok( !old_ctx,
"SetThreadDpiAwarenessContext succeeded\n" );
3970 ctx = pGetThreadDpiAwarenessContext();
3973 ok( old_ctx ==
ctx,
"got %p\n", old_ctx );
3974 ctx = pGetThreadDpiAwarenessContext();
3978 ok( !old_ctx,
"SetThreadDpiAwarenessContext succeeded\n" );
3980 ok( old_ctx ==
ctx,
"got %p\n", old_ctx );
3981 ctx = pGetThreadDpiAwarenessContext();
3985 ok( !old_ctx,
"SetThreadDpiAwarenessContext succeeded\n" );
3987 ok( old_ctx ==
ctx,
"got %p\n", old_ctx );
3988 ctx = pGetThreadDpiAwarenessContext();
3992 ok( old_ctx ==
ctx,
"got %p\n", old_ctx );
3993 ctx = pGetThreadDpiAwarenessContext();
3997 ok( old_ctx ==
ctx,
"got %p\n", old_ctx );
3998 ctx = pGetThreadDpiAwarenessContext();
4001 ok( old_ctx ==
ctx,
"got %p\n", old_ctx );
4002 ctx = pGetThreadDpiAwarenessContext();
4005 ok( old_ctx ==
ctx,
"got %p\n", old_ctx );
4006 ctx = pGetThreadDpiAwarenessContext();
4009 ok( old_ctx ==
ctx,
"got %p\n", old_ctx );
4010 ctx = pGetThreadDpiAwarenessContext();
4013 ok( old_ctx ==
ctx,
"got %p\n", old_ctx );
4014 ctx = pGetThreadDpiAwarenessContext();
4027 if (!pIsValidDpiAwarenessContext)
4029 win_skip(
"IsValidDpiAwarenessContext missing, skipping tests\n" );
4033 ret = pIsValidDpiAwarenessContext( 0 );
4034 ok( !
ret,
"IsValidDpiAwarenessContext returned %u\n",
ret );
4038 ok(
ret,
"IsValidDpiAwarenessContext returned %u\n",
ret );
4040 ok(
ret,
"IsValidDpiAwarenessContext returned %u\n",
ret );
4042 ok(
ret,
"IsValidDpiAwarenessContext returned %u\n",
ret );
4044 ok(
ret,
"IsValidDpiAwarenessContext returned %u\n",
ret );
4046 ok(
ret,
"IsValidDpiAwarenessContext returned %u\n",
ret );
4049 ok(
ret,
"IsValidDpiAwarenessContext returned %u\n",
ret );
4051 ok(
ret,
"IsValidDpiAwarenessContext returned %u\n",
ret );
4053 ok(
ret,
"IsValidDpiAwarenessContext returned %u\n",
ret );
4055 ok(
ret,
"IsValidDpiAwarenessContext returned %u\n",
ret );
4057 ok(
ret,
"IsValidDpiAwarenessContext returned %u\n",
ret );
4059 ok( !
ret,
"IsValidDpiAwarenessContext returned %u\n",
ret );
4061 for (
i = 1;
i < 0xff;
i++)
4064 if (
i == 0x12 ||
i == 0x22)
ok(
ret,
"IsValidDpiAwarenessContext %#Ix failed\n",
i );
4066 else if (
i != 0x11)
ok( !
ret,
"IsValidDpiAwarenessContext %#Ix succeeded\n",
i );
4069 if (
i == 0x10 ||
i == 0x11)
ok(
ret,
"IsValidDpiAwarenessContext %#Ix failed\n", (
i | 0x6000) );
4071 else if (
i != 0x13)
ok( !
ret,
"IsValidDpiAwarenessContext %#Ix succeeded\n", (
i | 0x6000) );
4074 if (
i == 0x60)
ok(
ret,
"IsValidDpiAwarenessContext %#Ix failed\n", ((
i << 8) | 0x10) );
4075 else ok( !
ret,
"IsValidDpiAwarenessContext %#Ix succeeded\n", ((
i << 8) | 0x10) );
4077 if (
i != 0xff)
ok(
ret,
"IsValidDpiAwarenessContext %#Ix failed\n", ((
i << 8) | 0x11) );
4078 else ok( !
ret,
"IsValidDpiAwarenessContext %#Ix succeeded\n", ((
i << 8) | 0x11) );
4080 ok( !
ret,
"IsValidDpiAwarenessContext %#Ix succeeded\n", ((
i << 8) | 0x12) );
4082 ok( !
ret,
"IsValidDpiAwarenessContext %#Ix succeeded\n", ((
i << 8) | 0x22) );
4085 ok( !
ret,
"IsValidDpiAwarenessContext %#Ix succeeded\n", ((
i << 16) | 0x6010) );
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) );
4090 ok( !
ret,
"IsValidDpiAwarenessContext %#Ix succeeded\n", ((
i << 16) | 0x12) );
4092 ok( !
ret,
"IsValidDpiAwarenessContext %#Ix succeeded\n", ((
i << 16) | 0x22) );
4095 if (
i & 0x1f)
ok( !
ret,
"IsValidDpiAwarenessContext %#Ix succeeded\n", ((
i << 24) | 0x6010) );
4097 else if (!(
i & 0x20))
ok(
ret,
"IsValidDpiAwarenessContext %#Ix failed\n", ((
i << 24) | 0x6010) );
4099 if (
i & 0x5f)
ok( !
ret,
"IsValidDpiAwarenessContext %#Ix succeeded\n", ((
i << 24) | (
real_dpi << 8) | 0x11) );
4101 else if (!(
i & 0x20))
ok(
ret,
"IsValidDpiAwarenessContext %#Ix failed\n", ((
i << 24) | (
real_dpi << 8) | 0x11) );
4103 if (
i & 0x5f)
ok( !
ret,
"IsValidDpiAwarenessContext %#Ix succeeded\n", ((
i << 24) | 0x12) );
4105 else if (!(
i & 0x20))
ok(
ret,
"IsValidDpiAwarenessContext %#Ix failed\n", ((
i << 24) | 0x12) );
4107 if (
i & 0x5f)
ok( !
ret,
"IsValidDpiAwarenessContext %#Ix succeeded\n", ((
i << 24) | 0x22) );
4109 else if (!(
i & 0x20))
ok(
ret,
"IsValidDpiAwarenessContext %#Ix failed\n", ((
i << 24) | 0x22) );
4117 if (!pGetDpiFromDpiAwarenessContext)
4119 win_skip(
"GetDpiFromDpiAwarenessContext missing, skipping tests\n" );
4123 ret = pGetDpiFromDpiAwarenessContext( 0 );
4124 ok( !
ret,
"GetDpiFromDpiAwarenessContext returned %u\n",
ret );
4127 ok(
ret == 0,
"GetDpiFromDpiAwarenessContext returned %u\n",
ret );
4129 ok(
ret == 0,
"GetDpiFromDpiAwarenessContext returned %u\n",
ret );
4131 ok(
ret == 0,
"GetDpiFromDpiAwarenessContext returned %u\n",
ret );
4133 ok(
ret == 96,
"GetDpiFromDpiAwarenessContext returned %u\n",
ret );
4135 ok(
ret == 96,
"GetDpiFromDpiAwarenessContext returned %u\n",
ret );
4137 ok(
ret == 97,
"GetDpiFromDpiAwarenessContext returned %u\n",
ret );
4139 ok(
ret == 120,
"GetDpiFromDpiAwarenessContext returned %u\n",
ret );
4141 ok(
ret == 256,
"GetDpiFromDpiAwarenessContext returned %u\n",
ret );
4143 ok(
ret == 96,
"GetDpiFromDpiAwarenessContext returned %u\n",
ret );
4146 ok(
ret == 96,
"GetDpiFromDpiAwarenessContext returned %u\n",
ret );
4150 ok(
ret == 0,
"GetDpiFromDpiAwarenessContext returned %u\n",
ret );
4152 ok(
ret == 0,
"GetDpiFromDpiAwarenessContext returned %u\n",
ret );
4154 ok(
ret == 96,
"GetDpiFromDpiAwarenessContext returned %u\n",
ret );
4161 if (!pAreDpiAwarenessContextsEqual)
4163 win_skip(
"AreDpiAwarenessContextsEqual missing, skipping tests\n" );
4167 ret = pAreDpiAwarenessContextsEqual( 0, 0 );
4168 ok( !
ret,
"AreDpiAwarenessContextsEqual returned %u\n",
ret );
4171 ok(
ret,
"AreDpiAwarenessContextsEqual returned %u\n",
ret );
4173 ok(
ret,
"AreDpiAwarenessContextsEqual returned %u\n",
ret );
4175 ok(
ret,
"AreDpiAwarenessContextsEqual returned %u\n",
ret );
4177 ok(
ret,
"AreDpiAwarenessContextsEqual returned %u\n",
ret );
4179 ok(
ret,
"AreDpiAwarenessContextsEqual returned %u\n",
ret );
4181 ok(
ret,
"AreDpiAwarenessContextsEqual returned %u\n",
ret );
4183 ok(
ret,
"AreDpiAwarenessContextsEqual returned %u\n",
ret );
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 );
4197 ok(
ret,
"AreDpiAwarenessContextsEqual returned %u\n",
ret );
4199 ok(
ret,
"AreDpiAwarenessContextsEqual returned %u\n",
ret );
4201 ok( !
ret,
"AreDpiAwarenessContextsEqual returned %u\n",
ret );
4204 ok(
ret,
"AreDpiAwarenessContextsEqual returned %u\n",
ret );
4206 ok(
ret,
"AreDpiAwarenessContextsEqual returned %u\n",
ret );
4208 ok( !
ret,
"AreDpiAwarenessContextsEqual returned %u\n",
ret );
4211 ok(
ret,
"AreDpiAwarenessContextsEqual returned %u\n",
ret );
4213 ok(
ret,
"AreDpiAwarenessContextsEqual returned %u\n",
ret );
4215 ok(
ret,
"AreDpiAwarenessContextsEqual returned %u\n",
ret );
4217 ok(
ret,
"AreDpiAwarenessContextsEqual returned %u\n",
ret );
4219 ok(
ret,
"AreDpiAwarenessContextsEqual returned %u\n",
ret );
4221 ok(
ret,
"AreDpiAwarenessContextsEqual returned %u\n",
ret );
4223 ok( !
ret,
"AreDpiAwarenessContextsEqual returned %u\n",
ret );
4226 ok( !
ret,
"AreDpiAwarenessContextsEqual returned %u\n",
ret );
4228 ok( !
ret,
"AreDpiAwarenessContextsEqual returned %u\n",
ret );
4230 ok( !
ret,
"AreDpiAwarenessContextsEqual returned %u\n",
ret );
4232 ok( !
ret,
"AreDpiAwarenessContextsEqual returned %u\n",
ret );
4234 ok( !
ret,
"AreDpiAwarenessContextsEqual returned %u\n",
ret );
4236 ok( !
ret,
"AreDpiAwarenessContextsEqual returned %u\n",
ret );
4238 ok(
ret,
"AreDpiAwarenessContextsEqual returned %u\n",
ret );
4245 if (!pGetAwarenessFromDpiAwarenessContext)
4247 win_skip(
"GetAwarenessFromDpiAwarenessContext missing, skipping tests\n" );
4251 ret = pGetAwarenessFromDpiAwarenessContext( 0 );
4295 context = pGetThreadDpiAwarenessContext();
4297 awareness = pGetAwarenessFromDpiAwarenessContext(
context );
4299 ok( !pIsProcessDPIAware(),
"already aware\n" );
4300 dpi = pGetDpiForSystem();
4307 ret = pSetProcessDpiAwarenessContext(
NULL );
4316 ok( pIsProcessDPIAware(),
"not aware\n" );
4333 ret = pGetProcessDpiAwarenessInternal( 0, &awareness );
4340 ret = pGetProcessDpiAwarenessInternal( (
HANDLE)0xdeadbeef, &awareness );
4350 ret = pIsProcessDPIAware();
4352 context = pGetThreadDpiAwarenessContext();
4354 awareness = pGetAwarenessFromDpiAwarenessContext(
context );
4357 context = pSetThreadDpiAwarenessContext( 0 );
4366 awareness = pGetAwarenessFromDpiAwarenessContext(
context );
4368 dpi = pGetDpiForSystem();
4372 ok( !pIsProcessDPIAware(),
"still aware\n" );
4373 context = pGetThreadDpiAwarenessContext();
4375 awareness = pGetAwarenessFromDpiAwarenessContext(
context );
4379 awareness = pGetAwarenessFromDpiAwarenessContext(
context );
4381 dpi = pGetDpiForSystem();
4385 context = pGetThreadDpiAwarenessContext();
4387 awareness = pGetAwarenessFromDpiAwarenessContext(
context );
4391 awareness = pGetAwarenessFromDpiAwarenessContext(
context );
4393 dpi = pGetDpiForSystem();
4397 ok( pIsProcessDPIAware(),
"not aware\n" );
4398 context = pGetThreadDpiAwarenessContext();
4402 context = pGetThreadDpiAwarenessContext();
4406 context = pGetThreadDpiAwarenessContext();
4412 context = pGetThreadDpiAwarenessContext();
4425 ok( pGetAwarenessFromDpiAwarenessContext(
ctx ) == pGetAwarenessFromDpiAwarenessContext( ctx2 ),
4426 "msg %04x wrong awareness %p / %p\n",
msg,
ctx, ctx2 );
4431 ok(
pos == pos2,
"wrong pos %08lx / %08lx\n",
pos, pos2 );
4432 pSetThreadDpiAwarenessContext( ctx2 );
4445 if (!pGetWindowDpiAwarenessContext)
4447 win_skip(
"GetWindowDpiAwarenessContext not supported\n" );
4456 ok(
hwnd != 0,
"failed to create window\n" );
4458 awareness = pGetAwarenessFromDpiAwarenessContext(
context );
4459 ok( awareness ==
i,
"%Iu: wrong awareness %u\n",
i, awareness );
4460 dpi = pGetDpiForWindow(
hwnd );
4463 if (pGetDpiForMonitorInternal)
4468 ok( !
res,
"succeeded\n" );
4472 ok( !
res,
"succeeded\n" );
4476 ok( !
res,
"succeeded\n" );
4493 awareness = pGetAwarenessFromDpiAwarenessContext(
context );
4494 ok( awareness ==
i,
"%Iu/%Iu: wrong awareness %u\n",
i,
j, awareness );
4501 awareness = pGetAwarenessFromDpiAwarenessContext(
context );
4502 ok( awareness ==
i,
"%Iu/%Iu: wrong awareness %u\n",
i,
j, awareness );
4510 awareness = pGetAwarenessFromDpiAwarenessContext(
context );
4511 ok( awareness ==
j,
"%Iu/%Iu: wrong awareness %u\n",
i,
j, awareness );
4519 awareness = pGetAwarenessFromDpiAwarenessContext(
context );
4520 ok( awareness == (
ret ?
i :
j),
"%Iu/%Iu: wrong awareness %u\n",
i,
j, awareness );
4530 context = pGetWindowDpiAwarenessContext( (
HWND)0xdeadbeef );
4534 dpi = pGetDpiForWindow( (
HWND)0xdeadbeef );
4541 awareness = pGetAwarenessFromDpiAwarenessContext(
context );
4549 awareness = pGetAwarenessFromDpiAwarenessContext(
context );
4554 pSetThreadDpiAwarenessContext( orig );
4562 if (!pGetAutoRotationState)
4564 win_skip(
"GetAutoRotationState not supported\n");
4569 ret = pGetAutoRotationState(
NULL);
4570 ok(!
ret,
"Expected GetAutoRotationState to fail\n");
4574 ret = pGetAutoRotationState(&
state);
4575 ok(
ret,
"Expected GetAutoRotationState to succeed, error %ld\n",
GetLastError());
4582 NONCLIENTMETRICSA ncm;
4595 ncm.cbSize =
FIELD_OFFSET(NONCLIENTMETRICSA, iPaddedBorderWidth);
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);
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");
4628 pSystemParametersInfoForDpi = (
void*)
GetProcAddress(
hdll,
"SystemParametersInfoForDpi");
4630 pLogicalToPhysicalPointForPerMonitorDPI = (
void*)
GetProcAddress(
hdll,
"LogicalToPhysicalPointForPerMonitorDPI");
4631 pPhysicalToLogicalPointForPerMonitorDPI = (
void*)
GetProcAddress(
hdll,
"PhysicalToLogicalPointForPerMonitorDPI");
4633 pAreDpiAwarenessContextsEqual = (
void*)
GetProcAddress(
hdll,
"AreDpiAwarenessContextsEqual");
4634 pGetDpiFromDpiAwarenessContext = (
void*)
GetProcAddress(
hdll,
"GetDpiFromDpiAwarenessContext");
4649 if (
argc > 3 && !
strcmp(
argv[2],
"SetProcessDpiAwarenessContext" ))
4659 trace(
"testing GetSystemMetrics with your current desktop settings\n");
4701 if (pSetThreadDpiAwarenessContext)
4707 else win_skip(
"SetThreadDpiAwarenessContext not supported\n" );
4711 if (!pSetProcessDpiAwarenessContext || !pSetThreadDpiAwarenessContext || !pGetThreadDpiAwarenessContext)
4712 win_skip(
"SetProcessDpiAwarenessContext not supported\n" );
struct mke2fs_defaults settings[]
static void startup(void)
static const char * wine_dbgstr_rect(const RECT *prc)
#define SPI_GETWHEELSCROLLCHARS
#define RegCloseKey(hKey)
LONG WINAPI RegOpenKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
LONG WINAPI RegQueryValueExA(_In_ HKEY hkeyorg, _In_ LPCSTR name, _In_ LPDWORD reserved, _Out_opt_ LPDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ LPDWORD count)
#define ERROR_INVALID_ADDRESS
#define ERROR_CALL_NOT_IMPLEMENTED
#define ERROR_INVALID_PARAMETER
#define ERROR_MOD_NOT_FOUND
#define GetProcAddress(x, y)
#define GetCurrentProcess()
#define WideCharToMultiByte
#define ERROR_ACCESS_DENIED
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
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)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
int WINAPI lstrcmpiA(LPCSTR str1, LPCSTR str2)
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)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_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
_ACRTIMP int __cdecl atoi(const char *)
_ACRTIMP __msvcrt_ulong __cdecl strtoul(const char *, char **, int)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
#define wrap(journal, var)
GLint GLint GLsizei GLsizei GLsizei GLint border
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei GLenum type
GLint GLint GLint GLint GLint GLint y
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLint GLint GLsizei GLsizei height
GLint GLint GLsizei width
GLboolean GLboolean GLboolean b
GLenum GLuint GLenum GLsizei const GLchar * buf
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
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
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
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
#define todo_wine_if(is_todo)
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
#define memcpy(s1, s2, n)
static unsigned int number
static LPTEXTMETRICW lptm
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
static const char * setmouse_valuenames[3]
#define SPI_SETSCREENREADER_REGKEY_LEGACY
static void test_EnumDisplaySettings(void)
static DWORD WINAPI SysParamsThreadFunc(LPVOID lpParam)
static void test_GetAwarenessFromDpiAwarenessContext(void)
#define test_reg_key_ex2(subKey1, subKey2, valName1, valName2, testValue)
static BOOL dotest_spi_iconhorizontalspacing(INT curr_val)
static BOOL dotest_spi_iconverticalspacing(INT curr_val)
static void test_SPI_SETSCREENREADER(void)
static void test_SPI_SETBORDER(void)
static int change_last_param
static BOOL get_reg_dword(HKEY base, const char *key_name, const char *value_name, DWORD *value)
#define SPI_SETMOUSESCROLLLINES_REGKEY
static void test_SPI_SETWHEELSCROLLLINES(void)
#define SPI_SETICONTITLEWRAP_REGKEY1
static void test_dpi_context(void)
#define SPI_SETSNAPTODEFBUTTON_VALNAME
#define SPI_SETKEYBOARDPREF_REGKEY
static void test_SPI_SETICONMETRICS(void)
static LRESULT CALLBACK dpi_winproc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
static void test_SPI_SETKEYBOARDDELAY(void)
#define SPI_SETMENUDROPALIGNMENT_VALNAME
#define SPI_MINWIDTH_VALNAME
#define SPI_ICONHORIZONTALSPACING_REGKEY2
static void test_SPI_SETLOWPOWERACTIVE(void)
#define eq(received, expected, label, type)
#define SPI_SETDOUBLECLICKTIME_REGKEY
#define SPI_SETMOUSEHOVERTIME_REGKEY
static void test_dpi_mapping(void)
#define SPI_SETMOUSEHOVERHEIGHT_VALNAME
#define SPI_SETDESKWALLPAPER_REGKEY
#define SPI_SETSCREENSAVETIMEOUT_VALNAME
#define SPI_SETKEYBOARDPREF_VALNAME_LEGACY
static void test_dpi_window(void)
#define SPI_SETMENUDROPALIGNMENT_REGKEY2
#define SPI_SETFONTSMOOTHINGCONTRAST_VALNAME
#define SPI_SETSHOWSOUNDS_REGKEY
#define SPI_SETBORDER_REGKEY2
static void test_GetSysColorBrush(void)
#define SPI_SETMOUSE_VALNAME3
static void test_GetAutoRotationState(void)
#define SPI_SETMENUDROPALIGNMENT_REGKEY1
#define SPI_MINIMIZEDMETRICS_REGKEY
#define SPI_SETMOUSE_VALNAME1
static void test_SPI_SETSHOWSOUNDS(void)
static void test_change_message(int action, int optional)
static void scale_point_dpi_aware(POINT *pt, DPI_AWARENESS from, DPI_AWARENESS to)
static void test_SPI_SETKEYBOARDSPEED(void)
#define ok_gsm_2(i, e1, e2)
#define SPI_SETBEEP_VALNAME
static BOOL get_primary_adapter_name(CHAR *name)
#define SPI_SETMOUSESCROLLCHARS_VALNAME
#define SPI_SETMOUSESCROLLCHARS_REGKEY
static void test_SPI_SETICONTITLEWRAP(void)
#define SPI_SETSCREENREADER_REGKEY
static void test_GetDpiFromDpiAwarenessContext(void)
#define test_reg_key_optional(subKey, valName, testValue)
static int get_tmheightW(LOGFONTW *plf, int flag)
static int change_counter
static int lffromreg(const char *keyname, const char *valname, LOGFONTA *plf)
#define SPI_ICONVERTICALSPACING_REGKEY2
#define TEST_NONCLIENTMETRICS_REG(ncm)
static BOOL is_font_enumerated(const char *name)
static void test_SPI_SETWALLPAPER(void)
#define SPI_SETDOUBLECLKHEIGHT_REGKEY1
#define SPI_SETMOUSESCROLLLINES_VALNAME
static BOOL CALLBACK test_enum_display_settings(HMONITOR hmonitor, HDC hdc, LPRECT rect, LPARAM lparam)
static void test_SPI_SETBEEP(void)
static void flush_change_messages(void)
static void test_SPI_SETMOUSEHOVERWIDTH(void)
#define SPI_SETSCREENSAVEACTIVE_VALNAME
struct LOGFONT16 * LPLOGFONT16
static void test_SPI_SETMOUSEBUTTONSWAP(void)
#define SPI_SETSNAPTODEFBUTTON_REGKEY
#define SPI_SETMOUSEHOVERWIDTH_VALNAME
#define SPI_CAPTIONHEIGHT_VALNAME
static DWORD get_real_dpi(void)
#define SPI_SETMOUSEHOVERWIDTH_REGKEY
#define SPI_SETMENUSHOWDELAY_VALNAME
static void test_AreDpiAwarenessContextsEqual(void)
#define SPI_SETICONTITLEWRAP_VALNAME
static void test_SetThreadDpiAwarenessContext(void)
static void _test_reg_key(LPCSTR subKey1, LPCSTR subKey2, LPCSTR valName1, LPCSTR valName2, const void *exp_value, DWORD exp_type, BOOL optional)
static int get_tmheight(LOGFONTA *plf, int flag)
static BOOL displaychange_test_active
static void test_SPI_SETKEYBOARDPREF(void)
#define SPI_ICONVERTICALSPACING_VALNAME
#define test_reg_key_dword(subKey, valName, testValue)
#define SPI_SETMOUSEHOVERHEIGHT_REGKEY
#define SPI_SETBEEP_REGKEY
static void test_SPI_SETSCREENSAVEACTIVE(void)
static void test_SPI_SETDOUBLECLICKTIME(void)
#define SPI_SETPOWEROFFACTIVE_REGKEY
static void get_text_metr_size(HDC hdc, LOGFONTA *plf, TEXTMETRICA *ptm, UINT *psz)
#define run_in_process(a, b)
static void compare_font(const LOGFONTW *lf1, const LOGFONTW *lf2, int dpi, int custom_dpi, int line)
#define SPI_SETSCREENREADER_VALNAME_LEGACY
static void scale_rect_dpi(RECT *rect, UINT src_dpi, UINT target_dpi)
static void test_SPI_SETMOUSE(void)
#define SPI_SETLOWPOWERACTIVE_VALNAME
#define SPI_SETMOUSEBUTTONSWAP_VALNAME
#define SPI_SETSCREENREADER_VALNAME
static void scale_rect_dpi_aware(RECT *rect, DPI_AWARENESS from, DPI_AWARENESS to)
#define SPI_SETDOUBLECLICKTIME_VALNAME
#define SPI_CAPTIONWIDTH_VALNAME
static void test_WM_DISPLAYCHANGE(void)
#define SPI_SETKEYBOARDDELAY_REGKEY
#define SPI_MINVERTGAP_VALNAME
#define SPI_SETDRAGFULLWINDOWS_REGKEY
static void test_SPI_SETFONTSMOOTHING(void)
static BOOL run_spi_setmouse_test(int curr_val[], POINT *req_change, POINT *proj_change, int nchange)
static void test_SPI_SETMINIMIZEDMETRICS(void)
#define SPI_SETSHOWSOUNDS_VALNAME
static void test_LOGFONT_charset(void)
static BOOL displaychange_ok
static LONG _GdiGetCharDimensions(HDC hdc, LPTEXTMETRICA lptm, LONG *height)
static void test_GetSystemMetrics(void)
static void test_SPI_SETWHEELSCROLLCHARS(void)
#define SPI_SETKEYBOARDSPEED_REGKEY
#define SPI_SETFONTSMOOTHINGTYPE_VALNAME
#define SPI_SETICONTITLEWRAP_REGKEY2
static BOOL test_setborder(UINT curr_val, int usesetborder, int dpi)
static void test_SPI_SETDRAGFULLWINDOWS(void)
#define SPI_SETLOWPOWERACTIVE_REGKEY
static void test_SPI_SETPOWEROFFACTIVE(void)
#define ok_gsm_3(i, e1, e2, e3)
#define SPI_MENUHEIGHT_VALNAME
static void test_SPI_SETSNAPTODEFBUTTON(void)
static void test_SPI_SETWORKAREA(void)
#define SPI_SETDOUBLECLKWIDTH_VALNAME
static void test_SPI_SETMOUSEHOVERTIME(void)
static LRESULT CALLBACK SysParamsTestWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
static void test_SPI_SETFASTTASKSWITCH(void)
static HANDLE displaychange_sem
#define SPI_SETBORDER_REGKEY
static void test_dpi_stock_objects(HDC hdc)
#define SPI_SETBORDER_VALNAME
#define SPI_SETMOUSE_REGKEY
static void test_dpi_aware(void)
#define SPI_SETDOUBLECLKWIDTH_REGKEY2
#define test_reg_key(subKey, valName, testValue)
#define SPI_SETFONTSMOOTHING_VALNAME
#define SPI_SETFONTSMOOTHING_REGKEY
#define SPI_SETKEYBOARDDELAY_VALNAME
#define SPI_SETDRAGFULLWINDOWS_VALNAME
#define SPI_SMCAPTIONHEIGHT_VALNAME
static void test_SPI_ICONVERTICALSPACING(void)
static void test_SPI_SETMENUSHOWDELAY(void)
static void test_metrics_for_dpi(int custom_dpi)
static void test_SetProcessDpiAwarenessContext(ULONG arg)
static void test_SPI_SETDOUBLECLKWIDTH(void)
static void test_SPI_SETMENUDROPALIGNMENT(void)
#define SPI_SETDOUBLECLKHEIGHT_VALNAME
#define SPI_SETKEYBOARDPREF_VALNAME
#define SPI_SETFONTSMOOTHINGORIENTATION_VALNAME
#define SPI_MINHORZGAP_VALNAME
#define test_reg_key_ex(subKey1, subKey2, valName, testValue)
#define SPI_SETDOUBLECLKHEIGHT_REGKEY2
static void test_SPI_ICONHORIZONTALSPACING(void)
static int get_cursor_size(int size)
static DPI_AWARENESS_CONTEXT
static void test_SPI_SETGRIDGRANULARITY(void)
static void run_in_process_(const char *file, int line, char **argv, const char *args)
#define SPI_SETKEYBOARDPREF_REGKEY_LEGACY
static void test_SPI_SETDOUBLECLKHEIGHT(void)
static INT CALLBACK enum_all_fonts_proc(const LOGFONTA *elf, const TEXTMETRICA *ntm, DWORD type, LPARAM lparam)
#define SPI_SETSCREENSAVEACTIVE_REGKEY
#define SPI_SETMOUSE_VALNAME2
#define SPI_SETMOUSEHOVERTIME_VALNAME
#define SPI_SETPOWEROFFACTIVE_VALNAME
#define SPI_ICONHORIZONTALSPACING_REGKEY
#define SPI_SETKEYBOARDSPEED_VALNAME
static void test_SPI_SETSCREENSAVETIMEOUT(void)
static void scale_point_dpi(POINT *pt, UINT src_dpi, UINT target_dpi)
#define SPI_ICONVERTICALSPACING_REGKEY
static UINT metricfromreg(const char *keyname, const char *valname, int dpi)
#define test_reg_key_ex2_optional(subKey1, subKey2, valName1, valName2, testValue)
#define SPI_SETDESKWALLPAPER_VALNAME
static void test_SPI_SETNONCLIENTMETRICS(void)
#define SPI_SETDOUBLECLKWIDTH_REGKEY1
#define SPI_SETMOUSEBUTTONSWAP_REGKEY
#define SPI_SETMENUSHOWDELAY_REGKEY
#define SPI_METRIC_REGKEY
#define SPI_ICONHORIZONTALSPACING_VALNAME
#define SPI_MINARRANGE_VALNAME
#define SPI_SETSCREENSAVETIMEOUT_REGKEY
static void test_SPI_SETMOUSEHOVERHEIGHT(void)
static BOOL test_error_msg(int rc, const char *name)
static void test_IsValidDpiAwarenessContext(void)
unsigned __int3264 UINT_PTR
INT WINAPI MulDiv(INT nNumber, INT nNumerator, INT nDenominator)
HMONITOR WINAPI MonitorFromRect(LPCRECT, DWORD)
HMONITOR WINAPI MonitorFromWindow(HWND, DWORD)
#define WS_OVERLAPPEDWINDOW
static Real area(Real A[2], Real B[2], Real C[2])
char screen[SCREENY][SCREENX]
struct _STARTUPINFOA STARTUPINFOA
#define offsetof(TYPE, MEMBER)
int winetest_get_mainargs(char ***pargv)
#define wait_child_process
CHAR lfFaceName[LF_FACESIZE]
CHAR lfFaceName[LF_FACESIZE]
WCHAR lfFaceName[LF_FACESIZE]
DWORD dmDisplayOrientation
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateSemaphoreW(IN LPSECURITY_ATTRIBUTES lpSemaphoreAttributes OPTIONAL, IN LONG lInitialCount, IN LONG lMaximumCount, IN LPCWSTR lpName OPTIONAL)
BOOL WINAPI DECLSPEC_HOTPATCH ReleaseSemaphore(IN HANDLE hSemaphore, IN LONG lReleaseCount, IN LPLONG lpPreviousCount)
TW_UINT32 TW_UINT16 TW_UINT16 MSG
#define FIELD_OFFSET(t, f)
BOOL WINAPI EnumDisplaySettingsExA(LPCSTR lpszDeviceName, DWORD iModeNum, LPDEVMODEA lpDevMode, DWORD dwFlags)
LONG WINAPI ChangeDisplaySettingsExW(LPCWSTR lpszDeviceName, LPDEVMODEW lpDevMode, HWND hwnd, DWORD dwflags, LPVOID lParam)
BOOL WINAPI EnumDisplayDevicesA(LPCSTR lpDevice, DWORD iDevNum, PDISPLAY_DEVICEA lpDisplayDevice, DWORD dwFlags)
BOOL WINAPI EnumDisplaySettingsW(LPCWSTR lpszDeviceName, DWORD iModeNum, LPDEVMODEW lpDevMode)
BOOL WINAPI EnumDisplaySettingsA(LPCSTR lpszDeviceName, DWORD iModeNum, LPDEVMODEA lpDevMode)
BOOL WINAPI EnumDisplaySettingsExW(LPCWSTR lpszDeviceName, DWORD iModeNum, LPDEVMODEW lpDevMode, DWORD dwFlags)
DWORD WINAPI GetLastError(void)
@ DPI_AWARENESS_PER_MONITOR_AWARE
@ DPI_AWARENESS_SYSTEM_AWARE
#define DPI_AWARENESS_CONTEXT_UNAWARE
#define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE
#define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2
#define DPI_AWARENESS_CONTEXT_SYSTEM_AWARE
#define DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED
#define ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION
#define ERROR_INVALID_SPI_VALUE
#define ERROR_NO_MORE_FILES
#define ERROR_INVALID_WINDOW_HANDLE
#define ERROR_INVALID_STATE
#define ERROR_BAD_ARGUMENTS
#define DM_DISPLAYFREQUENCY
BOOL WINAPI GetTextMetricsW(_In_ HDC, _Out_ LPTEXTMETRICW)
HGDIOBJ WINAPI GetStockObject(_In_ int)
int WINAPI GetObjectW(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
int WINAPI GetClipBox(_In_ HDC, _Out_ LPRECT)
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
HDC WINAPI CreateICA(_In_opt_ LPCSTR, _In_opt_ LPCSTR, _In_opt_ LPCSTR, _In_opt_ const DEVMODEA *)
HRGN WINAPI CreateRectRgn(_In_ int, _In_ int, _In_ int, _In_ int)
HFONT WINAPI CreateFontIndirectA(_In_ const LOGFONTA *)
int WINAPI GetObjectA(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
HDC WINAPI CreateDCA(_In_opt_ LPCSTR pszDriver, _In_opt_ LPCSTR pszDevice, _In_opt_ LPCSTR pszOutput, _In_opt_ const DEVMODEA *pdmInit)
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
struct _devicemodeW DEVMODEW
#define SYSTEM_FIXED_FONT
int WINAPI EnumFontFamiliesA(_In_ HDC, _In_opt_ LPCSTR, _In_ FONTENUMPROCA, _In_ LPARAM)
#define OUT_DEFAULT_PRECIS
#define DISPLAY_DEVICE_PRIMARY_DEVICE
#define DM_DISPLAYORIENTATION
#define DISPLAY_DEVICE_ATTACHED_TO_DESKTOP
BOOL WINAPI GetTextMetricsA(_In_ HDC, _Out_ LPTEXTMETRICA)
HFONT WINAPI CreateFontIndirectW(_In_ const LOGFONTW *)
BOOL WINAPI DeleteDC(_In_ HDC)
BOOL WINAPI GetTextExtentPointA(_In_ HDC hdc, _In_reads_(c) LPCSTR lpString, _In_ int c, _Out_ LPSIZE lpsz)
BOOL WINAPI TranslateCharsetInfo(_Inout_ PDWORD, _Out_ LPCHARSETINFO, _In_ DWORD)
int WINAPI GetRgnBox(_In_ HRGN, _Out_ LPRECT)
#define HKEY_CURRENT_CONFIG
#define HKEY_CURRENT_USER
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
#define SM_MENUDROPALIGNMENT
LRESULT WINAPI DispatchMessageA(_In_ const MSG *)
#define MOUSEEVENTF_ABSOLUTE
BOOL WINAPI SetDoubleClickTime(_In_ UINT)
#define SM_CYVIRTUALSCREEN
BOOL WINAPI RedrawWindow(_In_opt_ HWND, _In_opt_ LPCRECT, _In_opt_ HRGN, _In_ UINT)
void WINAPI mouse_event(_In_ DWORD, _In_ DWORD, _In_ DWORD, _In_ DWORD, _In_ ULONG_PTR)
HDC WINAPI GetWindowDC(_In_opt_ HWND)
BOOL WINAPI TranslateMessage(_In_ const MSG *)
#define SPI_GETSHOWSOUNDS
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
DWORD WINAPI GetMessagePos(void)
#define SPI_SETHANDEDNESS
#define SPI_SETMENUDROPALIGNMENT
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define SPI_SETDESKWALLPAPER
BOOL WINAPI GetWindowPlacement(_In_ HWND, _Inout_ WINDOWPLACEMENT *)
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
HWND WINAPI SetParent(_In_ HWND, _In_opt_ HWND)
#define SPI_ICONVERTICALSPACING
HBRUSH WINAPI GetSysColorBrush(_In_ int)
#define DISP_CHANGE_BADMODE
#define SPI_SETDOUBLECLKWIDTH
#define SPI_SETSCREENSAVEACTIVE
BOOL WINAPI GetCursorPos(_Out_ LPPOINT)
#define SPI_SETDOUBLECLKHEIGHT
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define ENUM_REGISTRY_SETTINGS
BOOL WINAPI EnumDisplayMonitors(_In_opt_ HDC, _In_opt_ LPCRECT, _In_ MONITORENUMPROC, _In_ LPARAM)
#define SPI_GETFASTTASKSWITCH
#define SPI_GETICONTITLELOGFONT
BOOL WINAPI MessageBeep(_In_ UINT uType)
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
UINT WINAPI GetDoubleClickTime(void)
#define DISP_CHANGE_FAILED
HWND WINAPI GetDesktopWindow(void)
#define SM_CXVIRTUALSCREEN
#define SPI_SETKEYBOARDSPEED
#define SPIF_UPDATEINIFILE
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
enum tagAR_STATE AR_STATE
ATOM WINAPI RegisterClassA(_In_ CONST WNDCLASSA *)
#define ENUM_CURRENT_SETTINGS
enum tagAR_STATE * PAR_STATE
struct tagMINIMIZEDMETRICS MINIMIZEDMETRICS
HICON WINAPI LoadIconA(_In_opt_ HINSTANCE hInstance, _In_ LPCSTR lpIconName)
#define SPI_GETKEYBOARDSPEED
int WINAPI GetUpdateRgn(_In_ HWND, _In_ HRGN, _In_ BOOL)
BOOL WINAPI SwapMouseButton(_In_ BOOL)
BOOL WINAPI UpdateWindow(_In_ HWND)
BOOL WINAPI GetMonitorInfoA(_In_ HMONITOR, _Inout_ LPMONITORINFO)
#define SPI_SETDOUBLECLICKTIME
#define SPI_GETICONTITLEWRAP
HDC WINAPI GetDC(_In_opt_ HWND)
LONG WINAPI GetDialogBaseUnits(void)
BOOL WINAPI SystemParametersInfoW(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)
#define SPI_SETMOUSEBUTTONSWAP
BOOL WINAPI SystemParametersInfoA(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)
#define SPI_ICONHORIZONTALSPACING
BOOL WINAPI OffsetRect(_Inout_ LPRECT, _In_ int, _In_ int)
BOOL WINAPI GetMonitorInfoW(_In_ HMONITOR, _Inout_ LPMONITORINFO)
#define SPI_GETKEYBOARDDELAY
#define USER_DEFAULT_SCREEN_DPI
#define SPI_SETICONTITLEWRAP
BOOL WINAPI InflateRect(_Inout_ LPRECT, _In_ int, _In_ int)
#define SPI_SETKEYBOARDDELAY
BOOL WINAPI GetMessageA(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
BOOL WINAPI GetUpdateRect(_In_ HWND, _Out_opt_ LPRECT, _In_ BOOL)
BOOL WINAPI DestroyWindow(_In_ HWND)
#define SPI_SETSCREENSAVETIMEOUT
BOOL WINAPI EqualRect(_In_ LPCRECT, _In_ LPCRECT)
#define SPI_SETSHOWSOUNDS
int WINAPI GetSystemMetrics(_In_ int)
HWND WINAPI GetAncestor(_In_ HWND, _In_ UINT)
#define SPI_GETSCREENSAVETIMEOUT
LRESULT WINAPI CallWindowProcA(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define SPI_GETSCREENSAVEACTIVE
HCURSOR WINAPI LoadCursorA(_In_opt_ HINSTANCE, _In_ LPCSTR)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
#define SPI_GETMENUDROPALIGNMENT
#define SPI_SETWHEELSCROLLLINES