📄 sysparams.c
字号:
test_change_message( SPI_SETDOUBLECLKWIDTH, 0 ); sprintf( buf, "%d", vals[i] ); test_reg_key_ex( SPI_SETDOUBLECLKWIDTH_REGKEY1, SPI_SETDOUBLECLKWIDTH_REGKEY2, SPI_SETDOUBLECLKWIDTH_VALNAME, buf ); eq( GetSystemMetrics( SM_CXDOUBLECLK ), (int)vals[i], "SM_CXDOUBLECLK", "%d" ); } rc=SystemParametersInfoA( SPI_SETDOUBLECLKWIDTH, old_width, 0, SPIF_UPDATEINIFILE ); ok(rc!=0,"***warning*** failed to restore the original value: rc=%d err=%ld\n",rc,GetLastError());}static void test_SPI_SETDOUBLECLKHEIGHT( void ) /* 30 */{ BOOL rc; INT old_height; const UINT vals[]={0,10000}; int i; trace("testing SPI_{GET,SET}DOUBLECLKHEIGHT\n"); old_height = GetSystemMetrics( SM_CYDOUBLECLK ); for (i=0;i<sizeof(vals)/sizeof(*vals);i++) { char buf[10]; rc=SystemParametersInfoA( SPI_SETDOUBLECLKHEIGHT, vals[i], 0, SPIF_UPDATEINIFILE | SPIF_SENDCHANGE ); ok(rc!=0,"%d: rc=%d err=%ld\n",i,rc,GetLastError()); test_change_message( SPI_SETDOUBLECLKHEIGHT, 0 ); sprintf( buf, "%d", vals[i] ); test_reg_key_ex( SPI_SETDOUBLECLKHEIGHT_REGKEY1, SPI_SETDOUBLECLKHEIGHT_REGKEY2, SPI_SETDOUBLECLKHEIGHT_VALNAME, buf ); eq( GetSystemMetrics( SM_CYDOUBLECLK ), (int)vals[i], "SM_CYDOUBLECLK", "%d" ); } rc=SystemParametersInfoA( SPI_SETDOUBLECLKHEIGHT, old_height, 0, SPIF_UPDATEINIFILE ); ok(rc!=0,"***warning*** failed to restore the original value: rc=%d err=%ld\n",rc,GetLastError());}static void test_SPI_SETDOUBLECLICKTIME( void ) /* 32 */{ BOOL rc; UINT curr_val; UINT saved_val; UINT old_time; char buf[10]; trace("testing SPI_{GET,SET}DOUBLECLICKTIME\n"); old_time = GetDoubleClickTime(); curr_val = 0; rc=SystemParametersInfoA( SPI_SETDOUBLECLICKTIME, curr_val, 0, SPIF_UPDATEINIFILE | SPIF_SENDCHANGE ); ok(rc!=0,"SystemParametersInfoA: rc=%d err=%ld\n",rc,GetLastError()); test_change_message( SPI_SETDOUBLECLICKTIME, 0 ); sprintf( buf, "%d", curr_val ); test_reg_key( SPI_SETDOUBLECLICKTIME_REGKEY, SPI_SETDOUBLECLICKTIME_VALNAME, buf ); curr_val = 500; /* used value for 0 */ eq( GetDoubleClickTime(), curr_val, "GetDoubleClickTime", "%d" ); curr_val = 1000; rc=SystemParametersInfoA( SPI_SETDOUBLECLICKTIME, curr_val, 0, SPIF_UPDATEINIFILE | SPIF_SENDCHANGE ); ok(rc!=0,"SystemParametersInfoA: rc=%d err=%ld\n",rc,GetLastError()); test_change_message( SPI_SETDOUBLECLICKTIME, 0 ); sprintf( buf, "%d", curr_val ); test_reg_key( SPI_SETDOUBLECLICKTIME_REGKEY, SPI_SETDOUBLECLICKTIME_VALNAME, buf ); eq( GetDoubleClickTime(), curr_val, "GetDoubleClickTime", "%d" ); saved_val = curr_val; curr_val = 0; SetDoubleClickTime( curr_val ); sprintf( buf, "%d", saved_val ); test_reg_key( SPI_SETDOUBLECLICKTIME_REGKEY, SPI_SETDOUBLECLICKTIME_VALNAME, buf ); curr_val = 500; /* used value for 0 */ eq( GetDoubleClickTime(), curr_val, "GetDoubleClickTime", "%d" ); curr_val = 1000; SetDoubleClickTime( curr_val ); sprintf( buf, "%d", saved_val ); test_reg_key( SPI_SETDOUBLECLICKTIME_REGKEY, SPI_SETDOUBLECLICKTIME_VALNAME, buf ); eq( GetDoubleClickTime(), curr_val, "GetDoubleClickTime", "%d" ); rc=SystemParametersInfoA(SPI_SETDOUBLECLICKTIME, old_time, 0, SPIF_UPDATEINIFILE); ok(rc!=0,"***warning*** failed to restore the original value: rc=%d err=%ld\n",rc,GetLastError());}static void test_SPI_SETMOUSEBUTTONSWAP( void ) /* 33 */{ BOOL rc; BOOL old_b; const UINT vals[]={TRUE,FALSE}; int i; trace("testing SPI_{GET,SET}MOUSEBUTTONSWAP\n"); old_b = GetSystemMetrics( SM_SWAPBUTTON ); for (i=0;i<sizeof(vals)/sizeof(*vals);i++) { rc=SystemParametersInfoA( SPI_SETMOUSEBUTTONSWAP, vals[i], 0, SPIF_UPDATEINIFILE | SPIF_SENDCHANGE ); ok(rc!=0,"%d: rc=%d err=%ld\n",i,rc,GetLastError()); test_change_message( SPI_SETMOUSEBUTTONSWAP, 0 ); test_reg_key( SPI_SETMOUSEBUTTONSWAP_REGKEY, SPI_SETMOUSEBUTTONSWAP_VALNAME, vals[i] ? "1" : "0" ); eq( GetSystemMetrics( SM_SWAPBUTTON ), (int)vals[i], "SM_SWAPBUTTON", "%d" ); } rc=SystemParametersInfoA( SPI_SETMOUSEBUTTONSWAP, old_b, 0, SPIF_UPDATEINIFILE ); ok(rc!=0,"***warning*** failed to restore the original value: rc=%d err=%ld\n",rc,GetLastError());}static void test_SPI_SETFASTTASKSWITCH( void ) /* 36 */{ BOOL rc; BOOL v; trace("testing SPI_GETFASTTASKSWITCH\n"); rc=SystemParametersInfoA( SPI_GETFASTTASKSWITCH, 0, &v, 0 ); ok(rc!=0,"SystemParametersInfoA: rc=%d err=%ld\n",rc,GetLastError()); /* there is not a single Windows platform on which SPI_GETFASTTASKSWITCH * works. That sure simplifies testing! */}static void test_SPI_SETDRAGFULLWINDOWS( void ) /* 37 */{ BOOL rc; BOOL old_b; const UINT vals[]={TRUE,FALSE}; int i; trace("testing SPI_{GET,SET}DRAGFULLWINDOWS\n"); rc=SystemParametersInfoA( SPI_GETDRAGFULLWINDOWS, 0, &old_b, 0 ); if (rc==0 && (GetLastError()==0 || GetLastError()==ERROR_CALL_NOT_IMPLEMENTED)) { /* SPI_{GET,SET}DRAGFULLWINDOWS is not implemented on Win95 */ trace("SPI_{GET,SET}DRAGFULLWINDOWS not supported on this platform\n"); return; } ok(rc!=0,"SystemParametersInfoA: rc=%d err=%ld\n",rc,GetLastError()); for (i=0;i<sizeof(vals)/sizeof(*vals);i++) { UINT v; rc=SystemParametersInfoA( SPI_SETDRAGFULLWINDOWS, vals[i], 0, SPIF_UPDATEINIFILE | SPIF_SENDCHANGE ); ok(rc!=0,"%d: rc=%d err=%ld\n",i,rc,GetLastError()); test_change_message( SPI_SETDRAGFULLWINDOWS, 0 ); test_reg_key( SPI_SETDRAGFULLWINDOWS_REGKEY, SPI_SETDRAGFULLWINDOWS_VALNAME, vals[i] ? "1" : "0" ); rc=SystemParametersInfoA( SPI_GETDRAGFULLWINDOWS, 0, &v, 0 ); ok(rc!=0,"%d: rc=%d err=%ld\n",i,rc,GetLastError()); eq( v, vals[i], "SPI_{GET,SET}DRAGFULLWINDOWS", "%d" ); } rc=SystemParametersInfoA( SPI_SETDRAGFULLWINDOWS, old_b, 0, SPIF_UPDATEINIFILE ); ok(rc!=0,"***warning*** failed to restore the original value: rc=%d err=%ld\n",rc,GetLastError());}static void test_SPI_SETWORKAREA( void ) /* 47 */{ BOOL rc; RECT old_area; RECT area; RECT curr_val; trace("testing SPI_{GET,SET}WORKAREA\n"); rc=SystemParametersInfoA(SPI_GETWORKAREA, 0, &old_area, 0); ok(rc!=0,"SystemParametersInfoA: rc=%d err=%ld\n",rc,GetLastError()); /* Modify the work area only minimally as this causes the icons that * fall outside it to be moved around thus requiring the user to * reposition them manually one by one. * Changing the work area by just one pixel should make this occurence * reasonably unlikely. */ curr_val.left = old_area.left; curr_val.top = old_area.top; curr_val.right = old_area.right-1; curr_val.bottom = old_area.bottom-1; rc=SystemParametersInfoA( SPI_SETWORKAREA, 0, &curr_val, SPIF_UPDATEINIFILE | SPIF_SENDCHANGE ); ok(rc!=0,"SystemParametersInfoA: rc=%d err=%ld\n",rc,GetLastError()); test_change_message( SPI_SETWORKAREA, 0 ); rc=SystemParametersInfoA( SPI_GETWORKAREA, 0, &area, 0 ); ok(rc!=0,"SystemParametersInfoA: rc=%d err=%ld\n",rc,GetLastError()); eq( area.left, curr_val.left, "left", "%ld" ); eq( area.top, curr_val.top, "top", "%ld" ); eq( area.right, curr_val.right, "right", "%ld" ); eq( area.bottom, curr_val.bottom, "bottom", "%ld" ); rc=SystemParametersInfoA( SPI_SETWORKAREA, 0, &old_area, SPIF_UPDATEINIFILE | SPIF_SENDCHANGE ); ok(rc!=0,"***warning*** failed to restore the original value: rc=%d err=%ld\n",rc,GetLastError()); test_change_message( SPI_SETWORKAREA, 0 ); rc=SystemParametersInfoA( SPI_GETWORKAREA, 0, &area, 0 ); ok(rc!=0,"SystemParametersInfoA: rc=%d err=%ld\n",rc,GetLastError()); eq( area.left, old_area.left, "left", "%ld" ); eq( area.top, old_area.top, "top", "%ld" ); eq( area.right, old_area.right, "right", "%ld" ); eq( area.bottom, old_area.bottom, "bottom", "%ld" );}static void test_SPI_SETSHOWSOUNDS( void ) /* 57 */{ BOOL rc; BOOL old_b; const UINT vals[]={TRUE,FALSE}; int i; trace("testing SPI_{GET,SET}SHOWSOUNDS\n"); SetLastError(0); rc=SystemParametersInfoA( SPI_GETSHOWSOUNDS, 0, &old_b, 0 ); if (rc==0 && GetLastError()==0) { /* SPI_{GET,SET}SHOWSOUNDS is completely broken on Win9x */ trace("SPI_{GET,SET}SHOWSOUNDS not supported on this platform\n"); return; } ok(rc!=0,"SystemParametersInfoA: rc=%d err=%ld\n",rc,GetLastError()); for (i=0;i<sizeof(vals)/sizeof(*vals);i++) { UINT v; rc=SystemParametersInfoA( SPI_SETSHOWSOUNDS, vals[i], 0, SPIF_UPDATEINIFILE | SPIF_SENDCHANGE ); ok(rc!=0,"%d: rc=%d err=%ld\n",i,rc,GetLastError()); test_change_message( SPI_SETSHOWSOUNDS, 0 ); test_reg_key( SPI_SETSHOWSOUNDS_REGKEY, SPI_SETSHOWSOUNDS_VALNAME, vals[i] ? "1" : "0" ); rc=SystemParametersInfoA( SPI_GETSHOWSOUNDS, 0, &v, 0 ); ok(rc!=0,"%d: rc=%d err=%ld\n",i,rc,GetLastError()); eq( v, vals[i], "SPI_GETSHOWSOUNDS", "%d" ); eq( GetSystemMetrics( SM_SHOWSOUNDS ), (int)vals[i], "SM_SHOWSOUNDS", "%d" ); } rc=SystemParametersInfoA( SPI_SETSHOWSOUNDS, old_b, 0, SPIF_UPDATEINIFILE ); ok(rc!=0,"***warning*** failed to restore the original value: rc=%d err=%ld\n",rc,GetLastError());}static void test_SPI_SETKEYBOARDPREF( void ) /* 69 */{ /* TODO!!! - don't have version of Windows which has this */}static void test_SPI_SETSCREENREADER( void ) /* 71 */{ /* TODO!!! - don't have version of Windows which has this */}static void test_SPI_SETWALLPAPER( void ) /* 115 */{ BOOL rc; char oldval[260]; char newval[260]; trace("testing SPI_{GET,SET}DESKWALLPAPER\n"); SetLastError(0); rc=SystemParametersInfoA(SPI_GETDESKWALLPAPER, 260, oldval, 0); if (rc==0 && (GetLastError()==0 || GetLastError()==ERROR_INVALID_SPI_VALUE)) { /* SPI_{GET,SET}DESKWALLPAPER is completely broken on Win9x and * unimplemented on NT4 */ trace("SPI_{GET,SET}DESKWALLPAPER not supported on this platform\n"); return; } ok(rc!=0,"SystemParametersInfoA: rc=%d err=%ld\n",rc,GetLastError()); strcpy(newval, ""); rc=SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, newval, SPIF_UPDATEINIFILE | SPIF_SENDCHANGE); ok(rc!=0,"SystemParametersInfoA: rc=%d err=%ld\n",rc,GetLastError()); test_change_message(SPI_SETDESKWALLPAPER, 0); rc=SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, oldval, SPIF_UPDATEINIFILE); ok(rc!=0,"***warning*** failed to restore the original value: rc=%d err=%ld\n",rc,GetLastError()); test_reg_key(SPI_SETDESKWALLPAPER_REGKEY, SPI_SETDESKWALLPAPER_VALNAME, oldval);}/* * Registry entries for the system parameters. * Names are created by 'SET' flags names. * We assume that corresponding 'GET' entries use the same registry keys. */static DWORD WINAPI SysParamsThreadFunc( LPVOID lpParam ){ test_SPI_SETBEEP(); /* 1 */ test_SPI_SETMOUSE(); /* 4 */ /* Messes up systems settings on Win9x */ /*test_SPI_SETBORDER();*/ /* 6 */ test_SPI_SETKEYBOARDSPEED(); /* 10 */ test_SPI_ICONHORIZONTALSPACING(); /* 13 */ test_SPI_SETSCREENSAVETIMEOUT(); /* 14 */ test_SPI_SETSCREENSAVEACTIVE(); /* 17 */ test_SPI_SETGRIDGRANULARITY(); /* 19 */ test_SPI_SETKEYBOARDDELAY(); /* 23 */ test_SPI_ICONVERTICALSPACING(); /* 24 */ test_SPI_SETICONTITLEWRAP(); /* 26 */ test_SPI_SETMENUDROPALIGNMENT(); /* 28 */ test_SPI_SETDOUBLECLKWIDTH(); /* 29 */ test_SPI_SETDOUBLECLKHEIGHT(); /* 30 */ test_SPI_SETDOUBLECLICKTIME(); /* 32 */ test_SPI_SETMOUSEBUTTONSWAP(); /* 33 */ test_SPI_SETFASTTASKSWITCH(); /* 36 */ test_SPI_SETDRAGFULLWINDOWS(); /* 37 */ test_SPI_SETWORKAREA(); /* 47 */ test_SPI_SETSHOWSOUNDS(); /* 57 */ test_SPI_SETKEYBOARDPREF(); /* 69 */ test_SPI_SETSCREENREADER(); /* 71 */ test_SPI_SETWALLPAPER(); /* 115 */ SendMessageA( ghTestWnd, WM_DESTROY, 0, 0 ); return 0;}START_TEST(sysparams){ int argc; char** argv; WNDCLASSA wc; MSG msg; HANDLE hThread; DWORD dwThreadId; HANDLE hInstance = GetModuleHandleA( NULL ); argc = winetest_get_mainargs(&argv); strict=(argc >= 3 && strcmp(argv[2],"strict")==0); trace("strict=%d\n",strict); change_counter = 0; change_last_param = 0; wc.lpszClassName = "SysParamsTestClass"; wc.lpfnWndProc = SysParamsTestWndProc; wc.style = CS_OWNDC | CS_VREDRAW | CS_HREDRAW; wc.hInstance = hInstance; wc.hIcon = LoadIconA( 0, (LPSTR)IDI_APPLICATION ); wc.hCursor = LoadCursorA( 0, (LPSTR)IDC_ARROW ); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1 ); wc.lpszMenuName = 0; wc.cbClsExtra = 0; wc.cbWndExtra = 0; RegisterClassA( &wc ); ghTestWnd = CreateWindowA( "SysParamsTestClass", "Test System Parameters Application", WS_OVERLAPPEDWINDOW, 0, 0, 100, 100, 0, 0, hInstance, NULL ); hThread = CreateThread( NULL, 0, SysParamsThreadFunc, 0, 0, &dwThreadId ); assert( hThread ); CloseHandle( hThread ); while( GetMessageA( &msg, 0, 0, 0 )) { TranslateMessage( &msg ); DispatchMessageA( &msg ); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -