Make sure that functions returning an HWND always return a full 32-bit
handle.

diff --git a/windows/winpos.c b/windows/winpos.c
index 8a9be5e..843864a 100644
--- a/windows/winpos.c
+++ b/windows/winpos.c
@@ -374,6 +374,7 @@
 
     if (!hwndScope) hwndScope = GetDesktopWindow();
     if (!(wndScope = WIN_FindWndPtr( hwndScope ))) return 0;
+    hwndScope = wndScope->hwndSelf;  /* make it a full handle */
 
     *hittest = HTERROR;
     wndPtr = WIN_LockWndPtr(wndScope->child);
@@ -892,7 +893,7 @@
 HWND WINAPI SetShellWindow(HWND hwndshell)
 {   WARN("(hWnd=%08x) semi stub\n",hwndshell );
 
-    hGlobalShellWindow = hwndshell;
+    hGlobalShellWindow = WIN_GetFullHandle( hwndshell );
     return hGlobalShellWindow;
 }
 
@@ -1423,6 +1424,9 @@
             hwndActive = PERQDATA_GetActiveWnd( pOldActiveQueue->pQData );
     }
 
+    if ((wndPtr = WIN_FindWndPtr(hWnd)))
+        hWnd = wndPtr->hwndSelf;  /* make it a full handle */
+
     /* paranoid checks */
     if( hWnd == GetDesktopWindow() || (bRet = (hWnd == hwndActive)) )
 	goto CLEANUP_END;
@@ -1430,7 +1434,6 @@
 /*  if (wndPtr && (GetFastQueue16() != wndPtr->hmemTaskQ))
  *	return 0;
  */
-    wndPtr = WIN_FindWndPtr(hWnd);
     hOldActiveQueue = hActiveQueue;
 
     if( (wndTemp = WIN_FindWndPtr(hwndActive)) )