Removed dependencies on the internals of the CLASS structure.
Added support for having both ASCII and Unicode window procedures for
builtin classes.

diff --git a/controls/desktop.c b/controls/desktop.c
index 72e41de..a1b70c1 100644
--- a/controls/desktop.c
+++ b/controls/desktop.c
@@ -96,10 +96,12 @@
 	(!desktopPtr->fTileWallPaper && ((desktopPtr->bitmapSize.cx < rect.right) ||
 	 (desktopPtr->bitmapSize.cy < rect.bottom))))
     {
+        HBRUSH brush = desktopPtr->hbrushPattern;
+        if (!brush) brush = GetClassLongA( hwnd, GCL_HBRBACKGROUND );
 	  /* Set colors in case pattern is a monochrome bitmap */
 	SetBkColor( hdc, RGB(0,0,0) );
 	SetTextColor( hdc, GetSysColor(COLOR_BACKGROUND) );
-	FillRect( hdc, &rect, desktopPtr->hbrushPattern );
+	FillRect( hdc, &rect, brush );
     }
 
       /* Paint wall paper */
@@ -289,7 +291,7 @@
 	desktopPtr->hbrushPattern = CreatePatternBrush( hbitmap );
 	DeleteObject( hbitmap );
     }
-    else desktopPtr->hbrushPattern = CreateSolidBrush( GetSysColor(COLOR_BACKGROUND) );
+    else desktopPtr->hbrushPattern = 0;
     WIN_ReleaseDesktop();
     return TRUE;
 }