[WIN32SS] Make window foreground in SwitchToThisWindow (#995)
[reactos.git] / win32ss / user / ntuser / simplecall.c
index 8296b8d..0c9b184 100644 (file)
@@ -3,7 +3,8 @@
  * PROJECT:          ReactOS kernel
  * PURPOSE:          NtUserCallXxx call stubs
  * FILE:             win32ss/user/ntuser/simplecall.c
- * PROGRAMER:        Ge van Geldorp (ge@gse.nl)
+ * PROGRAMERS:       Ge van Geldorp (ge@gse.nl)
+ *                   Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com)
  */
 
 #include <win32k.h>
@@ -505,9 +506,30 @@ NtUserCallTwoParam(
         }
 
         case TWOPARAM_ROUTINE_SWITCHTOTHISWINDOW:
-            STUB
+        {
+            HWND hwnd = (HWND)Param1;
+            BOOL fAltTab = (BOOL)Param2;
             Ret = 0;
+            Window = UserGetWindowObject(hwnd);
+            if (!Window)
+            {
+                break;
+            }
+            if (fAltTab)
+            {
+                if (Window->style & WS_MINIMIZE)
+                {
+                    UserPostMessage(hwnd, WM_SYSCOMMAND, SC_RESTORE, 0);
+                }
+                /* bring window to top and activate */
+                co_WinPosSetWindowPos(Window, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
+            }
+            else
+            {
+                UserSetActiveWindow(Window);
+            }
             break;
+        }
 
         case TWOPARAM_ROUTINE_SETCARETPOS:
             Ret = (DWORD_PTR)co_IntSetCaretPos((int)Param1, (int)Param2);
@@ -725,7 +747,7 @@ DWORD
 APIENTRY
 NtUserCallHwndParam(
     HWND hWnd,
-    DWORD Param,
+    DWORD_PTR Param,
     DWORD Routine)
 {
 
@@ -834,7 +856,7 @@ DWORD
 APIENTRY
 NtUserCallHwndParamLock(
     HWND hWnd,
-    DWORD Param,
+    DWORD_PTR Param,
     DWORD Routine)
 {
     DWORD Ret = FALSE;