diff -urN wine-1.1.24.orig/dlls/ddraw/ddraw.c wine-1.1.24/dlls/ddraw/ddraw.c
--- wine-1.1.24.orig/dlls/ddraw/ddraw.c	2009-03-27 18:31:22.000000000 +0000
+++ wine-1.1.24/dlls/ddraw/ddraw.c	2009-04-05 19:06:28.000000000 +0100
@@ -35,6 +35,7 @@
 #include "winbase.h"
 #include "winerror.h"
 #include "wingdi.h"
+#include "winreg.h"
 #include "wine/exception.h"
 
 #include "ddraw.h"
@@ -45,6 +46,8 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(ddraw);
 
+#define IS_OPTION_TRUE(ch) ((ch) == 'y' || (ch) == 'Y' || (ch) == 't' || (ch) == 'T' || (ch) == '1')
+
 static BOOL IDirectDrawImpl_DDSD_Match(const DDSURFACEDESC2* requested, const DDSURFACEDESC2* provided);
 static HRESULT IDirectDrawImpl_AttachD3DDevice(IDirectDrawImpl *This, IDirectDrawSurfaceImpl *primary);
 static HRESULT IDirectDrawImpl_CreateNewSurface(IDirectDrawImpl *This, DDSURFACEDESC2 *pDDSD, IDirectDrawSurfaceImpl **ppSurf, UINT level);
@@ -476,7 +479,20 @@
             !(This->devicewindow) &&
             (hwnd != window) )
         {
-            This->dest_window = hwnd;
+             BYTE buffer[32];
+             DWORD size = sizeof(buffer);
+             HKEY hkey = 0;
+             HWND drawwin = hwnd;
+             /* @@ Wine registry key: HKCU\Software\Wine\Direct3D */
+             if (!RegOpenKeyA( HKEY_CURRENT_USER, "Software\\Wine\\Direct3D", &hkey)) {
+                 if (!RegQueryValueExA( hkey, "DirectDrawDesktopHack", 0, NULL, buffer, &size)) {
+                     if ( IS_OPTION_TRUE( buffer[0] ) ) {
+                         TRACE("Enabling DirectDrawDesktopHack hack\n");
+                         drawwin = GetDesktopWindow();
+                    }
+                 }
+             }
+            This->dest_window = drawwin;
         }
     }
     else if(cooplevel & DDSCL_EXCLUSIVE)