- fix the mouse swap button issue
authorMatthias Kupfer <mkupfer@reactos.org>
Mon, 5 Oct 2009 11:35:06 +0000 (11:35 +0000)
committerMatthias Kupfer <mkupfer@reactos.org>
Mon, 5 Oct 2009 11:35:06 +0000 (11:35 +0000)
- cleanup loading mouse properties
- add function to load and store DWORD for sysparams registry keys
- TODO: check and fix the get and set cases for sysparams for the right registry key type

svn path=/trunk/; revision=43298

reactos/subsystems/win32/win32k/ntuser/input.c
reactos/subsystems/win32/win32k/ntuser/sysparams.c

index 7a3b89f..98bd07b 100644 (file)
@@ -1120,8 +1120,7 @@ IntMouseInput(MOUSEINPUT *mi)
       mi->time = MsqCalculateMessageTime(&LargeTickCount);
    }
 
-   // FIXME: CurInfo->SwapButtons doesn't contain the correct value yet
-   SwapButtons = UserGetSystemMetrics(SM_SWAPBUTTON);//CurInfo->SwapButtons;
+   SwapButtons = gspv.bMouseBtnSwap;
    DoMove = FALSE;
 
    IntGetCursorLocation(WinSta, &MousePos);
index 7759692..cd12dd9 100644 (file)
@@ -87,7 +87,19 @@ static const WCHAR* VAL_ON = L"On";
 
 static
 INT
-SpiLoadInt(PCWSTR pwszKey, PCWSTR pwszValue, INT iValue)
+SpiLoadDWord(PCWSTR pwszKey, PCWSTR pwszValue, INT iValue)
+{
+    DWORD Result;
+    if (!RegReadUserSetting(pwszKey, pwszValue, REG_DWORD, &Result, sizeof(Result)))
+    {
+        return iValue;
+    }
+    return Result;
+}
+
+static
+INT
+SpiLoadszInt(PCWSTR pwszKey, PCWSTR pwszValue, INT iValue)
 {
     WCHAR awcBuffer[12];
     ULONG cbSize;
@@ -102,9 +114,9 @@ SpiLoadInt(PCWSTR pwszKey, PCWSTR pwszValue, INT iValue)
 
 static
 INT
-SpiLoadMouse(LPWSTR pwszValue, INT iValue)
+SpiLoadMouse(PCWSTR pwszValue, INT iValue)
 {
-    return SpiLoadInt(KEY_MOUSE, pwszValue, iValue);
+    return SpiLoadDWord(KEY_MOUSE, pwszValue, iValue);
 }
 
 static
@@ -113,7 +125,7 @@ SpiLoadMetric(LPWSTR pwszValue, INT iValue)
 {
     INT iRegVal;
 
-    iRegVal = SpiLoadInt(KEY_METRIC, pwszValue, METRIC2REG(iValue));
+    iRegVal = SpiLoadszInt(KEY_METRIC, pwszValue, METRIC2REG(iValue));
     DPRINT("Loaded metric setting '%S', iValue=%d(reg:%d), ret=%d(reg:%d)\n",
            pwszValue, iValue, METRIC2REG(iValue), REG2METRIC(iRegVal), iRegVal);
     return REG2METRIC(iRegVal);
@@ -175,9 +187,14 @@ SpiUpdatePerUserSystemParameters()
     memset(&gspv, 0, sizeof(gspv));
 
     /* Load mouse settings */
-    gspv.caiMouse.FirstThreshold = SpiLoadMouse(L"MouseThreshold1", 6);
-    gspv.caiMouse.SecondThreshold = SpiLoadMouse(L"MouseThreshold2", 10);
-    gspv.caiMouse.Acceleration = SpiLoadMouse(L"MouseSpeed", 1);
+    gspv.caiMouse.FirstThreshold = SpiLoadMouse(VAL_MOUSE1, 6);
+    gspv.caiMouse.SecondThreshold = SpiLoadMouse(VAL_MOUSE2, 10);
+    gspv.caiMouse.Acceleration = SpiLoadMouse(VAL_MOUSE3, 1);
+    gspv.bMouseBtnSwap = SpiLoadMouse(VAL_SWAP, 0);
+    gspv.iMouseSpeed = SpiLoadMouse(VAL_MOUSE3, 1);
+    gspv.iDblClickTime = SpiLoadMouse(VAL_DBLCLKTIME, 500);
+    gspv.iDblClickWidth = SpiLoadMouse(VAL_DBLCLKWIDTH, 4);
+    gspv.iDblClickHeight = SpiLoadMouse(VAL_DBLCLKHEIGHT, 4);
 
     /* Load NONCLIENTMETRICS */
     gspv.ncm.cbSize = sizeof(NONCLIENTMETRICSW);
@@ -204,7 +221,7 @@ SpiUpdatePerUserSystemParameters()
     gspv.mm.iWidth = SpiLoadMetric(L"MinWidth", 160);
     gspv.mm.iHorzGap = SpiLoadMetric(L"MinHorzGap", 160);
     gspv.mm.iVertGap = SpiLoadMetric(L"MinVertGap", 24);
-    gspv.mm.iArrange = SpiLoadInt(KEY_METRIC, L"MinArrange", ARW_HIDE);
+    gspv.mm.iArrange = SpiLoadszInt(KEY_METRIC, L"MinArrange", ARW_HIDE);
 
     /* Load ICONMETRICS */
     gspv.im.cbSize = sizeof(ICONMETRICSW);
@@ -214,14 +231,7 @@ SpiUpdatePerUserSystemParameters()
     SpiLoadFont(&gspv.im.lfFont, L"IconFont", &lf1);
 
     /* Load desktop settings */
-    gspv.bDragFullWindows = SpiLoadInt(KEY_DESKTOP, VAL_DRAG, 0);
-
-    /* Load mouse settings */
-    gspv.bMouseBtnSwap = SpiLoadInt(KEY_MOUSE, VAL_SWAP, 0);
-    gspv.iMouseSpeed = SpiLoadInt(KEY_MOUSE, VAL_MOUSE3, 1);
-    gspv.iDblClickTime = SpiLoadInt(KEY_MOUSE, VAL_DBLCLKTIME, 500);
-    gspv.iDblClickWidth = SpiLoadInt(KEY_MOUSE, VAL_DBLCLKWIDTH, 4);
-    gspv.iDblClickHeight = SpiLoadInt(KEY_MOUSE, VAL_DBLCLKHEIGHT, 4);
+    gspv.bDragFullWindows = SpiLoadszInt(KEY_DESKTOP, VAL_DRAG, 0);
 
     /* Some hardcoded values for now */
     gspv.iMouseHoverTime = 80;
@@ -299,6 +309,18 @@ SpiStoreSz(PCWSTR pwszKey, PCWSTR pwszValue, PCWSTR pwsz)
                         wcslen(pwsz) * sizeof(WCHAR));
 }
 
+static
+VOID
+SpiStoreDWord(PCWSTR pwszKey, PCWSTR pwszValue, INT iValue)
+{
+    DWORD Value = iValue;
+    RegWriteUserSetting(pwszKey,
+                        pwszValue,
+                        REG_DWORD,
+                        &Value,
+                        sizeof(Value));
+}
+
 static
 VOID
 SpiStoreSzInt(PCWSTR pwszKey, PCWSTR pwszValue, INT iValue)
@@ -439,7 +461,20 @@ SpiSetBool(BOOL *pbData, INT iValue, PCWSTR pwszKey, PCWSTR pwszValue, FLONG fl)
 
 static inline
 UINT_PTR
-SpiSetInt(PVOID pvData, INT iValue, PCWSTR pwszKey, PCWSTR pwszValue, FLONG fl)
+SpiSetDWord(PVOID pvData, INT iValue, PCWSTR pwszKey, PCWSTR pwszValue, FLONG fl)
+{
+    REQ_INTERACTIVE_WINSTA(ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION);
+    *(INT*)pvData = iValue;
+    if (fl & SPIF_UPDATEINIFILE)
+    {
+        SpiStoreDWord(pwszKey, pwszValue, iValue);
+    }
+    return (UINT_PTR)pwszKey;
+}
+
+static inline
+UINT_PTR
+SpiSetszInt(PVOID pvData, INT iValue, PCWSTR pwszKey, PCWSTR pwszValue, FLONG fl)
 {
     REQ_INTERACTIVE_WINSTA(ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION);
     *(INT*)pvData = iValue;
@@ -588,8 +623,8 @@ SpiSetWallpaper(PVOID pvParam, FLONG fl)
         GDIOBJ_SetOwnership(hbmp, NULL);
 
         /* Yes, Windows really loads the current setting from the registry. */
-        ulTile = SpiLoadInt(KEY_DESKTOP, L"TileWallpaper", 0);
-        ulStyle = SpiLoadInt(KEY_DESKTOP, L"WallpaperStyle", 0);
+        ulTile = SpiLoadszInt(KEY_DESKTOP, L"TileWallpaper", 0);
+        ulStyle = SpiLoadszInt(KEY_DESKTOP, L"WallpaperStyle", 0);
         DPRINT("SpiSetWallpaper: ulTile=%ld, ulStyle=%d\n", ulTile, ulStyle);
 
         /* Check the values we found in the registry */
@@ -659,13 +694,13 @@ SpiGetSet(UINT uiAction, UINT uiParam, PVOID pvParam, FLONG fl)
 
         case SPI_SETBORDER:
             uiParam = max(uiParam, 1);
-            return SpiSetInt(&gspv.ncm.iBorderWidth, uiParam, KEY_METRIC, VAL_BORDER, fl);
+            return SpiSetszInt(&gspv.ncm.iBorderWidth, uiParam, KEY_METRIC, VAL_BORDER, fl);
 
         case SPI_GETKEYBOARDSPEED:
             return SpiGetInt(pvParam, &gspv.dwKbdSpeed, fl);
 
         case SPI_SETKEYBOARDSPEED:
-            return SpiSetInt(&gspv.dwKbdSpeed, uiParam, KEY_KBD, VAL_KBDSPD, fl);
+            return SpiSetszInt(&gspv.dwKbdSpeed, uiParam, KEY_KBD, VAL_KBDSPD, fl);
 
         case SPI_LANGDRIVER:
             DPRINT1("SPI_LANGDRIVER is unimplemented\n");
@@ -675,19 +710,19 @@ SpiGetSet(UINT uiAction, UINT uiParam, PVOID pvParam, FLONG fl)
             return SpiGetInt(pvParam, &gspv.iScrSaverTimeout, fl);
 
         case SPI_SETSCREENSAVETIMEOUT:
-            return SpiSetInt(&gspv.iScrSaverTimeout, uiParam, KEY_DESKTOP, VAL_SCRTO, fl);
+            return SpiSetszInt(&gspv.iScrSaverTimeout, uiParam, KEY_DESKTOP, VAL_SCRTO, fl);
 
         case SPI_GETSCREENSAVEACTIVE:
             return SpiGetInt(pvParam, &gspv.bScrSaverActive, fl);
 
         case SPI_SETSCREENSAVEACTIVE:
-            return SpiSetInt(&gspv.bScrSaverActive, uiParam, KEY_DESKTOP, VAL_SCRACT, fl);
+            return SpiSetszInt(&gspv.bScrSaverActive, uiParam, KEY_DESKTOP, VAL_SCRACT, fl);
 
         case SPI_GETGRIDGRANULARITY:
             return SpiGetInt(pvParam, &gspv.uiGridGranularity, fl);
 
         case SPI_SETGRIDGRANULARITY:
-            return SpiSetInt(&gspv.uiGridGranularity, uiParam, KEY_DESKTOP, VAL_GRID, fl);
+            return SpiSetszInt(&gspv.uiGridGranularity, uiParam, KEY_DESKTOP, VAL_GRID, fl);
 
         case SPI_GETDESKWALLPAPER:
             uiParam = min(uiParam, gspv.ustrWallpaper.Length + 1);
@@ -704,7 +739,7 @@ SpiGetSet(UINT uiAction, UINT uiParam, PVOID pvParam, FLONG fl)
             return SpiGetInt(pvParam, &gspv.iKbdDelay, fl);
 
         case SPI_SETKEYBOARDDELAY:
-            return SpiSetInt(&gspv.iKbdDelay, uiParam, KEY_KBD, VAL_KBDDELAY, fl);
+            return SpiSetszInt(&gspv.iKbdDelay, uiParam, KEY_KBD, VAL_KBDDELAY, fl);
 
         case SPI_ICONHORIZONTALSPACING:
             if (pvParam)
@@ -726,7 +761,7 @@ SpiGetSet(UINT uiAction, UINT uiParam, PVOID pvParam, FLONG fl)
             return SpiGetInt(pvParam, &gspv.im.iTitleWrap, fl);
 
         case SPI_SETICONTITLEWRAP:
-            return SpiSetInt(&gspv.im.iTitleWrap, uiParam, KEY_METRIC, VAL_ITWRAP, fl);
+            return SpiSetszInt(&gspv.im.iTitleWrap, uiParam, KEY_METRIC, VAL_ITWRAP, fl);
 
         case SPI_GETMENUDROPALIGNMENT:
             return SpiGetInt(pvParam, &gspv.bMenuDropAlign, fl);
@@ -735,10 +770,10 @@ SpiGetSet(UINT uiAction, UINT uiParam, PVOID pvParam, FLONG fl)
             return SpiSetBool(&gspv.bMenuDropAlign, uiParam, KEY_MDALIGN, VAL_MDALIGN, fl);
 
         case SPI_SETDOUBLECLKWIDTH:
-            return SpiSetInt(&gspv.iDblClickWidth, uiParam, KEY_MOUSE, VAL_DBLCLKWIDTH, fl);
+            return SpiSetszInt(&gspv.iDblClickWidth, uiParam, KEY_MOUSE, VAL_DBLCLKWIDTH, fl);
 
         case SPI_SETDOUBLECLKHEIGHT:
-            return SpiSetInt(&gspv.iDblClickHeight, uiParam, KEY_MOUSE, VAL_DBLCLKHEIGHT, fl);
+            return SpiSetszInt(&gspv.iDblClickHeight, uiParam, KEY_MOUSE, VAL_DBLCLKHEIGHT, fl);
 
         case SPI_GETICONTITLELOGFONT:
             return SpiGet(pvParam, &gspv.im.lfFont, sizeof(LOGFONTW), fl);
@@ -753,10 +788,10 @@ SpiGetSet(UINT uiAction, UINT uiParam, PVOID pvParam, FLONG fl)
             return (UINT_PTR)KEY_METRIC;
 
         case SPI_SETDOUBLECLICKTIME:
-            return SpiSetInt(&gspv.iDblClickTime, uiParam, KEY_MOUSE, VAL_DBLCLKTIME, fl);
+            return SpiSetszInt(&gspv.iDblClickTime, uiParam, KEY_MOUSE, VAL_DBLCLKTIME, fl);
 
         case SPI_SETMOUSEBUTTONSWAP:
-            return SpiSetInt(&gspv.bMouseBtnSwap, uiParam, KEY_MOUSE, VAL_SWAP, fl);
+            return SpiSetDWord(&gspv.bMouseBtnSwap, uiParam, KEY_MOUSE, VAL_SWAP, fl);
 
         case SPI_GETFASTTASKSWITCH:
             return SpiGetInt(pvParam, &gspv.bFastTaskSwitch, fl);
@@ -769,7 +804,7 @@ SpiGetSet(UINT uiAction, UINT uiParam, PVOID pvParam, FLONG fl)
             return SpiGetInt(pvParam, &gspv.bDragFullWindows, fl);
 
         case SPI_SETDRAGFULLWINDOWS:
-            return SpiSetInt(&gspv.bDragFullWindows, uiParam, KEY_DESKTOP, VAL_DRAG, fl);
+            return SpiSetszInt(&gspv.bDragFullWindows, uiParam, KEY_DESKTOP, VAL_DRAG, fl);
 
         case SPI_GETNONCLIENTMETRICS:
             return SpiGet(pvParam, &gspv.ncm, sizeof(NONCLIENTMETRICSW), fl);
@@ -1021,10 +1056,10 @@ SpiGetSet(UINT uiAction, UINT uiParam, PVOID pvParam, FLONG fl)
             return (UINT_PTR)KEY_DESKTOP;
 
         case SPI_SETDRAGWIDTH:
-            return SpiSetInt(&gspv.iDragWidth, uiParam, KEY_DESKTOP, VAL_DRAGWIDTH, fl);
+            return SpiSetszInt(&gspv.iDragWidth, uiParam, KEY_DESKTOP, VAL_DRAGWIDTH, fl);
 
         case SPI_SETDRAGHEIGHT:
-            return SpiSetInt(&gspv.iDragHeight, uiParam, KEY_DESKTOP, VAL_DRAGHEIGHT, fl);
+            return SpiSetszInt(&gspv.iDragHeight, uiParam, KEY_DESKTOP, VAL_DRAGHEIGHT, fl);
 
         case SPI_SETHANDHELD:
             return SpiSetBool(&gspv.bHandHeld, uiParam, KEY_DESKTOP, L"HandHeld", fl);
@@ -1036,10 +1071,10 @@ SpiGetSet(UINT uiAction, UINT uiParam, PVOID pvParam, FLONG fl)
             return SpiGetInt(pvParam, &gspv.iPwrOffTimeout, fl);
 
         case SPI_SETLOWPOWERTIMEOUT:
-            return SpiSetInt(&gspv.iLowPwrTimeout, uiParam, KEY_DESKTOP, L"LowPowerTimeOut", fl);
+            return SpiSetszInt(&gspv.iLowPwrTimeout, uiParam, KEY_DESKTOP, L"LowPowerTimeOut", fl);
 
         case SPI_SETPOWEROFFTIMEOUT:
-            return SpiSetInt(&gspv.iPwrOffTimeout, uiParam, KEY_DESKTOP, L"PowerOffTimeOut", fl);
+            return SpiSetszInt(&gspv.iPwrOffTimeout, uiParam, KEY_DESKTOP, L"PowerOffTimeOut", fl);
 
         case SPI_GETLOWPOWERACTIVE:
             return SpiGetInt(pvParam, &gspv.iPwrOffTimeout, fl);
@@ -1081,7 +1116,7 @@ SpiGetSet(UINT uiAction, UINT uiParam, PVOID pvParam, FLONG fl)
             return SpiGetInt(pvParam, &gspv.iMouseTrails, fl);
 
         case SPI_SETMOUSETRAILS:
-            return SpiSetInt(&gspv.iMouseTrails, uiParam, KEY_MOUSE, L"MouseTrails", fl);
+            return SpiSetszInt(&gspv.iMouseTrails, uiParam, KEY_MOUSE, L"MouseTrails", fl);
 
         case SPI_GETSNAPTODEFBUTTON:
             return SpiGetInt(pvParam, &gspv.bSnapToDefBtn, fl);
@@ -1093,13 +1128,13 @@ SpiGetSet(UINT uiAction, UINT uiParam, PVOID pvParam, FLONG fl)
             return SpiGetInt(pvParam, &gspv.iMouseHoverWidth, fl);
 
         case SPI_SETMOUSEHOVERWIDTH:
-            return SpiSetInt(&gspv.iMouseHoverWidth, uiParam, KEY_MOUSE, L"MouseHoverWidth", fl);
+            return SpiSetszInt(&gspv.iMouseHoverWidth, uiParam, KEY_MOUSE, L"MouseHoverWidth", fl);
 
         case SPI_GETMOUSEHOVERHEIGHT:
             return SpiGetInt(pvParam, &gspv.iMouseHoverHeight, fl);
 
         case SPI_SETMOUSEHOVERHEIGHT:
-            return SpiSetInt(&gspv.iMouseHoverHeight, uiParam, KEY_MOUSE, L"MouseHoverHeight", fl);
+            return SpiSetszInt(&gspv.iMouseHoverHeight, uiParam, KEY_MOUSE, L"MouseHoverHeight", fl);
 
         case SPI_GETMOUSEHOVERTIME:
             return SpiGetInt(pvParam, &gspv.iMouseHoverTime, fl);
@@ -1112,26 +1147,26 @@ SpiGetSet(UINT uiAction, UINT uiParam, PVOID pvParam, FLONG fl)
             *   enforce the use of USER_TIMER_MAXIMUM and USER_TIMER_MINIMUM until
             *   Windows Server 2003 SP1 and Windows XP SP2 "
             */
-            return SpiSetInt(&gspv.iMouseHoverTime, uiParam, KEY_MOUSE, L"MouseHoverTime", fl);
+            return SpiSetszInt(&gspv.iMouseHoverTime, uiParam, KEY_MOUSE, L"MouseHoverTime", fl);
 
         case SPI_GETWHEELSCROLLLINES:
             return SpiGetInt(pvParam, &gspv.iWheelScrollLines, fl);
 
         case SPI_SETWHEELSCROLLLINES:
-            return SpiSetInt(&gspv.iWheelScrollLines, uiParam, KEY_DESKTOP, L"WheelScrollLines", fl);
+            return SpiSetszInt(&gspv.iWheelScrollLines, uiParam, KEY_DESKTOP, L"WheelScrollLines", fl);
 
         case SPI_GETMENUSHOWDELAY:
             return SpiGetInt(pvParam, &gspv.dwMenuShowDelay, fl);
 
         case SPI_SETMENUSHOWDELAY:
-            return SpiSetInt(&gspv.dwMenuShowDelay, uiParam, KEY_DESKTOP, L"MenuShowDelay", fl);
+            return SpiSetszInt(&gspv.dwMenuShowDelay, uiParam, KEY_DESKTOP, L"MenuShowDelay", fl);
 
 #if (_WIN32_WINNT >= 0x0600)
         case SPI_GETWHEELSCROLLCHARS:
             return SpiGetInt(pvParam, &gspv.uiWheelScrollChars, fl);
 
         case SPI_SETWHEELSCROLLCHARS:
-            return SpiSetInt(&gspv.uiWheelScrollChars, uiParam, KEY_DESKTOP, L"WheelScrollChars", fl);
+            return SpiSetszInt(&gspv.uiWheelScrollChars, uiParam, KEY_DESKTOP, L"WheelScrollChars", fl);
 #endif
         case SPI_GETSHOWIMEUI:
             return SpiGetInt(pvParam, &gspv.bShowImeUi, fl);
@@ -1144,7 +1179,7 @@ SpiGetSet(UINT uiAction, UINT uiParam, PVOID pvParam, FLONG fl)
 
         case SPI_SETMOUSESPEED:
             // vgl SETMOUSE
-            return SpiSetInt(&gspv.iMouseSpeed, uiParam, KEY_MOUSE, L"MouseSpeed", fl);
+            return SpiSetszInt(&gspv.iMouseSpeed, uiParam, KEY_MOUSE, L"MouseSpeed", fl);
 
         case SPI_GETSCREENSAVERRUNNING:
             return SpiGetInt(pvParam, &gspv.bScrSaverRunning, fl);
@@ -1318,61 +1353,61 @@ SpiGetSet(UINT uiAction, UINT uiParam, PVOID pvParam, FLONG fl)
             return SpiGetInt(pvParam, &gspv.dwForegroundLockTimeout, fl);
 
         case SPI_SETFOREGROUNDLOCKTIMEOUT:
-            return SpiSetInt(&gspv.dwForegroundLockTimeout, uiParam, KEY_MOUSE, L"", fl);
+            return SpiSetszInt(&gspv.dwForegroundLockTimeout, uiParam, KEY_MOUSE, L"", fl);
 
         case SPI_GETACTIVEWNDTRKTIMEOUT:
             return SpiGetInt(pvParam, &gspv.dwActiveTrackingTimeout, fl);
 
         case SPI_SETACTIVEWNDTRKTIMEOUT:
-            return SpiSetInt(&gspv.dwActiveTrackingTimeout, uiParam, KEY_MOUSE, L"", fl);
+            return SpiSetszInt(&gspv.dwActiveTrackingTimeout, uiParam, KEY_MOUSE, L"", fl);
 
         case SPI_GETFOREGROUNDFLASHCOUNT:
             return SpiGetInt(pvParam, &gspv.dwForegroundFlashCount, fl);
 
         case SPI_SETFOREGROUNDFLASHCOUNT:
-            return SpiSetInt(&gspv.dwForegroundFlashCount, uiParam, KEY_MOUSE, L"", fl);
+            return SpiSetszInt(&gspv.dwForegroundFlashCount, uiParam, KEY_MOUSE, L"", fl);
 
         case SPI_GETCARETWIDTH:
             return SpiGetInt(pvParam, &gspv.dwCaretWidth, fl);
 
         case SPI_SETCARETWIDTH:
-            return SpiSetInt(&gspv.dwCaretWidth, uiParam, KEY_MOUSE, L"", fl);
+            return SpiSetszInt(&gspv.dwCaretWidth, uiParam, KEY_MOUSE, L"", fl);
 
         case SPI_GETMOUSECLICKLOCKTIME:
             return SpiGetInt(pvParam, &gspv.dwMouseClickLockTime, fl);
 
         case SPI_SETMOUSECLICKLOCKTIME:
-            return SpiSetInt(&gspv.dwMouseClickLockTime, uiParam, KEY_MOUSE, L"", fl);
+            return SpiSetszInt(&gspv.dwMouseClickLockTime, uiParam, KEY_MOUSE, L"", fl);
 
         case SPI_GETFONTSMOOTHINGTYPE:
             return SpiGetInt(pvParam, &gspv.uiFontSmoothingType, fl);
 
         case SPI_SETFONTSMOOTHINGTYPE:
-            return SpiSetInt(&gspv.uiFontSmoothingType, uiParam, KEY_MOUSE, L"", fl);
+            return SpiSetszInt(&gspv.uiFontSmoothingType, uiParam, KEY_MOUSE, L"", fl);
 
         case SPI_GETFONTSMOOTHINGCONTRAST:
             return SpiGetInt(pvParam, &gspv.uiFontSmoothingContrast, fl);
 
         case SPI_SETFONTSMOOTHINGCONTRAST:
-            return SpiSetInt(&gspv.uiFontSmoothingContrast, uiParam, KEY_MOUSE, L"", fl);
+            return SpiSetszInt(&gspv.uiFontSmoothingContrast, uiParam, KEY_MOUSE, L"", fl);
 
         case SPI_GETFOCUSBORDERWIDTH:
             return SpiGetInt(pvParam, &gspv.uiFocusBorderWidth, fl);
 
         case SPI_SETFOCUSBORDERWIDTH:
-            return SpiSetInt(&gspv.uiFocusBorderWidth, uiParam, KEY_MOUSE, L"", fl);
+            return SpiSetszInt(&gspv.uiFocusBorderWidth, uiParam, KEY_MOUSE, L"", fl);
 
         case SPI_GETFOCUSBORDERHEIGHT:
             return SpiGetInt(pvParam, &gspv.uiFocusBorderHeight, fl);
 
         case SPI_SETFOCUSBORDERHEIGHT:
-            return SpiSetInt(&gspv.uiFocusBorderHeight, uiParam, KEY_MOUSE, L"", fl);
+            return SpiSetszInt(&gspv.uiFocusBorderHeight, uiParam, KEY_MOUSE, L"", fl);
 
         case SPI_GETFONTSMOOTHINGORIENTATION:
             return SpiGetInt(pvParam, &gspv.uiFontSmoothingOrientation, fl);
 
         case SPI_SETFONTSMOOTHINGORIENTATION:
-            return SpiSetInt(&gspv.uiFontSmoothingOrientation, uiParam, KEY_MOUSE, L"", fl);
+            return SpiSetszInt(&gspv.uiFontSmoothingOrientation, uiParam, KEY_MOUSE, L"", fl);
 
         /* The following are undocumented, but valid SPI values */
         case 0x1010: