diff --git a/dlls/user/user_main.c b/dlls/user/user_main.c
index 7932948..0b7f627 100644
--- a/dlls/user/user_main.c
+++ b/dlls/user/user_main.c
@@ -98,6 +98,7 @@
     GET_USER_FUNC(SetWindowPos);
     GET_USER_FUNC(SetWindowRgn);
     GET_USER_FUNC(SetWindowIcon);
+    GET_USER_FUNC(SetWindowStyle);
     GET_USER_FUNC(SetWindowText);
     GET_USER_FUNC(ShowWindow);
     GET_USER_FUNC(SysCommandSizeMove);
diff --git a/dlls/x11drv/winpos.c b/dlls/x11drv/winpos.c
index 29a6217..0d4c286 100644
--- a/dlls/x11drv/winpos.c
+++ b/dlls/x11drv/winpos.c
@@ -685,6 +685,29 @@
 
 
 /***********************************************************************
+ *		SetWindowStyle   (X11DRV.@)
+ *
+ * Update the X state of a window to reflect a style change
+ */
+void X11DRV_SetWindowStyle( HWND hwnd, LONG oldStyle )
+{
+    Display *display = thread_display();
+    WND *wndPtr = WIN_FindWndPtr( hwnd );
+    if (!wndPtr) return;
+
+    if ((wndPtr->dwStyle & WS_VISIBLE) && (!(oldStyle & WS_VISIBLE)))
+    {
+        if (!IsRectEmpty( &wndPtr->rectWindow ))
+        {
+            TRACE( "mapping win %x\n", hwnd );
+            TSXMapWindow( display, get_whole_window(wndPtr) );
+        }
+    }
+    WIN_ReleaseWndPtr(wndPtr);
+}
+
+
+/***********************************************************************
  *		SetWindowPos   (X11DRV.@)
  */
 BOOL X11DRV_SetWindowPos( WINDOWPOS *winpos )
diff --git a/dlls/x11drv/x11drv.spec b/dlls/x11drv/x11drv.spec
index 140bac8..ac08c9e 100644
--- a/dlls/x11drv/x11drv.spec
+++ b/dlls/x11drv/x11drv.spec
@@ -90,6 +90,7 @@
 @ cdecl SetWindowPos(ptr) X11DRV_SetWindowPos
 @ cdecl SetWindowRgn(long long long) X11DRV_SetWindowRgn
 @ cdecl SetWindowIcon(long long long) X11DRV_SetWindowIcon
+@ cdecl SetWindowStyle(ptr long) X11DRV_SetWindowStyle
 @ cdecl SetWindowText(long wstr) X11DRV_SetWindowText
 @ cdecl ShowWindow(long long) X11DRV_ShowWindow
 @ cdecl SysCommandSizeMove(long long) X11DRV_SysCommandSizeMove
diff --git a/include/user.h b/include/user.h
index b50fe3e..6b9dd35 100644
--- a/include/user.h
+++ b/include/user.h
@@ -83,6 +83,7 @@
     BOOL   (*pSetWindowPos)(WINDOWPOS *);
     BOOL   (*pSetWindowRgn)(HWND,HRGN,BOOL);
     HICON  (*pSetWindowIcon)(HWND,HICON,BOOL);
+    void   (*pSetWindowStyle)(HWND,DWORD);
     BOOL   (*pSetWindowText)(HWND,LPCWSTR);
     BOOL   (*pShowWindow)(HWND,INT);
     void   (*pSysCommandSizeMove)(HWND,WPARAM);
diff --git a/windows/defwnd.c b/windows/defwnd.c
index a193cab..8567523 100644
--- a/windows/defwnd.c
+++ b/windows/defwnd.c
@@ -169,6 +169,8 @@
 	if( !bVisible )
 	{
 	    wndPtr->dwStyle |= WS_VISIBLE;
+            if (USER_Driver.pSetWindowStyle)
+                USER_Driver.pSetWindowStyle( hwnd, wndPtr->dwStyle & ~WS_VISIBLE );
             DCE_InvalidateDCE( hwnd, &wndPtr->rectWindow );
 	}
     }
@@ -180,6 +182,8 @@
         RedrawWindow( hwnd, NULL, 0, wParam );
         DCE_InvalidateDCE( hwnd, &wndPtr->rectWindow );
 	wndPtr->dwStyle &= ~WS_VISIBLE;
+        if (USER_Driver.pSetWindowStyle)
+            USER_Driver.pSetWindowStyle( hwnd, wndPtr->dwStyle | WS_VISIBLE );
     }
     WIN_ReleaseWndPtr( wndPtr );
 }
diff --git a/windows/win.c b/windows/win.c
index a080870..e0c5e31 100644
--- a/windows/win.c
+++ b/windows/win.c
@@ -1762,10 +1762,12 @@
 						type, WIN_PROC_WINDOW );
 		goto end;
 	case GWL_STYLE:
+                retval = wndPtr->dwStyle;
 	       	style.styleOld = wndPtr->dwStyle;
 		style.styleNew = newval;
                 SendMessageA(hwnd,WM_STYLECHANGING,GWL_STYLE,(LPARAM)&style);
 		wndPtr->dwStyle = style.styleNew;
+                if (USER_Driver.pSetWindowStyle) USER_Driver.pSetWindowStyle( hwnd, retval );
                 SendMessageA(hwnd,WM_STYLECHANGED,GWL_STYLE,(LPARAM)&style);
                 retval = style.styleOld;
                 goto end;
