From 76bac9c7df6f7c855dd093a4e94250852ac007dd Mon Sep 17 00:00:00 2001 From: James Tabor Date: Tue, 5 Oct 2010 20:13:32 +0000 Subject: [PATCH] [Win32k|User32] - Implement NtUserGetMenuIndex, see Bug 5528. svn path=/trunk/; revision=49005 --- reactos/dll/win32/user32/misc/stubs.c | 5 ++- reactos/subsystems/win32/win32k/ntuser/menu.c | 36 +++++++++++++------ 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/reactos/dll/win32/user32/misc/stubs.c b/reactos/dll/win32/user32/misc/stubs.c index 13697c526d7..354b5d3f31c 100644 --- a/reactos/dll/win32/user32/misc/stubs.c +++ b/reactos/dll/win32/user32/misc/stubs.c @@ -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); } /* diff --git a/reactos/subsystems/win32/win32k/ntuser/menu.c b/reactos/subsystems/win32/win32k/ntuser/menu.c index 0e32359ad2f..65475c48620 100644 --- a/reactos/subsystems/win32/win32k/ntuser/menu.c +++ b/reactos/subsystems/win32/win32k/ntuser/menu.c @@ -2034,21 +2034,41 @@ 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 */