Implemented SPI_GETDESKWALLPAPER action, fixed SPI_SETDESKWALLPAPER.

diff --git a/dlls/user/tests/sysparams.c b/dlls/user/tests/sysparams.c
index 34d17af..3c29faf 100644
--- a/dlls/user/tests/sysparams.c
+++ b/dlls/user/tests/sysparams.c
@@ -82,6 +82,8 @@
 #define SPI_SETFASTTASKSWITCH_VALNAME           "CoolSwitch"
 #define SPI_SETDRAGFULLWINDOWS_REGKEY           "Control Panel\\Desktop"
 #define SPI_SETDRAGFULLWINDOWS_VALNAME          "DragFullWindows"
+#define SPI_SETDESKWALLPAPER_REGKEY		"Control Panel\\Desktop"
+#define SPI_SETDESKWALLPAPER_VALNAME		"Wallpaper"
 /* FIXME - don't have access to Windows with this action (W95, NT5.0). Set real values */
 #define SPI_SETKEYBOARDPREF_REGKEY      "Control Panel\\Desktop"
 #define SPI_SETKEYBOARDPREF_VALNAME     "WINE_WorkArea"
@@ -984,6 +986,22 @@
     /* TODO!!! - don't have version of Windows which has this */
 }
 
+static void test_SPI_SETWALLPAPER( void )              /*   115 */
+{
+    char oldval[260];
+    char newval[260];
+    trace("testing SPI_{GET,SET}DESKWALLPAPER\n");
+
+    SystemParametersInfoA(SPI_GETDESKWALLPAPER, 260, oldval, 0);
+    test_reg_key(SPI_SETDESKWALLPAPER_REGKEY, SPI_SETDESKWALLPAPER_VALNAME, oldval);
+
+    strcpy(newval, "");
+    SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, newval, SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
+    test_change_message(SPI_SETDESKWALLPAPER, "");
+
+    SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, oldval, SPIF_UPDATEINIFILE);
+}
+
 /*
  * Registry entries for the system parameters.
  * Names are created by 'SET' flags names.
@@ -1013,6 +1031,7 @@
     test_SPI_SETSHOWSOUNDS();                   /*     57 */
     test_SPI_SETKEYBOARDPREF();                 /*     69 */
     test_SPI_SETSCREENREADER();                 /*     71 */
+    test_SPI_SETWALLPAPER();			/*    115 */
     SendMessageA( ghTestWnd, WM_DESTROY, 0, 0 );
     return 0;
 }
diff --git a/windows/sysparams.c b/windows/sysparams.c
index a23f61c..7d74414 100644
--- a/windows/sysparams.c
+++ b/windows/sysparams.c
@@ -109,6 +109,8 @@
 #define SPI_SETWORKAREA_VALNAME                 "WINE_WorkArea"
 #define SPI_SETSHOWSOUNDS_REGKEY        "Control Panel\\Accessibility\\ShowSounds"
 #define SPI_SETSHOWSOUNDS_VALNAME       "On"
+#define SPI_SETDESKWALLPAPER_REGKEY	"Control Panel\\Desktop"
+#define SPI_SETDESKWALLPAPER_VALNAME	"Wallpaper"
 /* FIXME - real values */
 #define SPI_SETKEYBOARDPREF_REGKEY      "Control Panel\\Desktop"
 #define SPI_SETKEYBOARDPREF_VALNAME     "WINE_KeyboardPref"
@@ -836,6 +838,7 @@
     }
 
     case SPI_SETDESKWALLPAPER:			/*     20 */
+        SYSPARAMS_Save(SPI_SETDESKWALLPAPER_REGKEY, SPI_SETDESKWALLPAPER_VALNAME, pvParam, fWinIni);
 	ret = SetDeskWallPaper( (LPSTR)pvParam );
 	break;
     case SPI_SETDESKPATTERN:			/*     21 */
@@ -1661,7 +1664,28 @@
 	*(BOOL *)pvParam = screensaver_running;
         break;
 
-    WINE_SPI_FIXME(SPI_GETDESKWALLPAPER);       /*    115  _WIN32_WINNT >= 0x500 || _WIN32_WINDOW > 0x400 */
+    case SPI_GETDESKWALLPAPER:                  /*    115  _WIN32_WINNT >= 0x500 || _WIN32_WINDOW > 0x400 */
+    {
+	char buf[MAX_PATH];
+
+        if (uiParam > MAX_PATH)
+	{
+	    uiParam = MAX_PATH;
+	}
+
+        if (SYSPARAMS_Load(SPI_SETDESKWALLPAPER_REGKEY, SPI_SETDESKWALLPAPER_VALNAME, buf))
+	{
+	    strncpy((char*)pvParam, buf, uiParam);
+	}
+	else
+	{
+	    /* Return an empty string */
+	    memset((char*)pvParam, 0, uiParam);
+	}
+
+	break;
+    }
+
     WINE_SPI_FIXME(SPI_GETACTIVEWINDOWTRACKING);/* 0x1000  _WIN32_WINNT >= 0x500 || _WIN32_WINDOW > 0x400 */
     WINE_SPI_FIXME(SPI_SETACTIVEWINDOWTRACKING);/* 0x1001  _WIN32_WINNT >= 0x500 || _WIN32_WINDOW > 0x400 */
     WINE_SPI_FIXME(SPI_GETMENUANIMATION);       /* 0x1002  _WIN32_WINNT >= 0x500 || _WIN32_WINDOW > 0x400 */