Commit 992d69b9 authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

user32: Reimplement GetMenuStringA on top of NtUserThunkedMenuItemInfo.

parent 7099c8d7
...@@ -476,42 +476,21 @@ BOOL WINAPI ChangeMenuW( HMENU hMenu, UINT pos, LPCWSTR data, ...@@ -476,42 +476,21 @@ BOOL WINAPI ChangeMenuW( HMENU hMenu, UINT pos, LPCWSTR data,
/******************************************************************* /*******************************************************************
* GetMenuStringA (USER32.@) * GetMenuStringA (USER32.@)
*/ */
INT WINAPI GetMenuStringA( INT WINAPI GetMenuStringA( HMENU menu, UINT item, char *str, INT count, UINT flags )
HMENU hMenu, /* [in] menuhandle */
UINT wItemID, /* [in] menu item (dep. on wFlags) */
LPSTR str, /* [out] outbuffer. If NULL, func returns entry length*/
INT nMaxSiz, /* [in] length of buffer. if 0, func returns entry len*/
UINT wFlags /* [in] MF_ flags */
)
{ {
POPUPMENU *menu; MENUITEMINFOA info;
MENUITEM *item; int ret;
UINT pos;
INT ret;
TRACE("menu=%p item=%04x ptr=%p len=%d flags=%04x\n", hMenu, wItemID, str, nMaxSiz, wFlags );
if (str && nMaxSiz) str[0] = '\0';
if (!(menu = find_menu_item(hMenu, wItemID, wFlags, &pos)))
{
SetLastError( ERROR_MENU_ITEM_NOT_FOUND);
return 0;
}
item = &menu->items[pos];
if (!item->text) TRACE( "menu=%p item=%04x ptr=%p len=%d flags=%04x\n", menu, item, str, count, flags );
ret = 0;
else if (!str || !nMaxSiz)
ret = WideCharToMultiByte( CP_ACP, 0, item->text, -1, NULL, 0, NULL, NULL );
else
{
if (!WideCharToMultiByte( CP_ACP, 0, item->text, -1, str, nMaxSiz, NULL, NULL ))
str[nMaxSiz-1] = 0;
ret = strlen(str);
}
release_menu_ptr(menu);
TRACE("returning %s\n", debugstr_a(str)); info.cbSize = sizeof(info);
info.fMask = MIIM_STRING;
info.dwTypeData = str;
info.cch = count;
ret = NtUserThunkedMenuItemInfo( menu, item, flags, NtUserGetMenuItemInfoA,
(MENUITEMINFOW *)&info, NULL );
if (ret) ret = info.cch;
TRACE( "returning %s %d\n", debugstr_a( str ), ret );
return ret; return ret;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment