[Win32k|User32]
authorJames Tabor <james.tabor@reactos.org>
Tue, 5 Oct 2010 20:13:32 +0000 (20:13 +0000)
committerJames Tabor <james.tabor@reactos.org>
Tue, 5 Oct 2010 20:13:32 +0000 (20:13 +0000)
- Implement NtUserGetMenuIndex, see Bug 5528.

svn path=/trunk/; revision=49005

reactos/dll/win32/user32/misc/stubs.c
reactos/subsystems/win32/win32k/ntuser/menu.c

index 13697c5..354b5d3 100644 (file)
@@ -538,12 +538,11 @@ BOOL WINAPI CliImmSetHotKey(DWORD dwID, UINT uModifiers, UINT uVirtualKey, HKL h
 }
 
 /*
- * @unimplemented
+ * @implemented
  */
 DWORD WINAPI GetMenuIndex(HMENU hMenu, HMENU hSubMenu)
 {
-  UNIMPLEMENTED;
-  return 0;
+  return NtUserGetMenuIndex(hMenu, hSubMenu);
 }
 
 /*
index 0e32359..65475c4 100644 (file)
@@ -2034,20 +2034,40 @@ CLEANUP:
    END_CLEANUP;
 }
 
-
 /*
- * @unimplemented
+ * @implemented
  */
 UINT APIENTRY
 NtUserGetMenuIndex(
    HMENU hMenu,
-   UINT wID)
+   HMENU hSubMenu)
 {
-   UNIMPLEMENTED
+   PMENU_OBJECT Menu, SubMenu;
+   PMENU_ITEM MenuItem;
+   DECLARE_RETURN(UINT);
 
-   return 0;
-}
+   DPRINT("Enter NtUserGetMenuIndex\n");
+   UserEnterShared();
+
+   if ( !(Menu = UserGetMenuObject(hMenu)) ||
+        !(SubMenu = UserGetMenuObject(hSubMenu)) )
+      RETURN(0xFFFFFFFF);
+
+   MenuItem = Menu->MenuItemList;
+   while(MenuItem)
+   {
+      if (MenuItem->hSubMenu == hSubMenu)
+         RETURN(MenuItem->wID);
+      MenuItem = MenuItem->Next;
+   }
 
+   RETURN(0xFFFFFFFF);
+
+CLEANUP:
+   DPRINT("Leave NtUserGetMenuIndex, ret=%i\n",_ret_);
+   UserLeave();
+   END_CLEANUP;
+}
 
 /*
  * @implemented
@@ -2218,10 +2238,6 @@ UserMenuInfo(
    return( Res);
 }
 
-
-
-
-
 /*
  * @implemented
  */