From: Mark Harmstone Subject: [PATCH] user32: Use correct offset in GetMenuItemRect. Message-Id: <552D96E0.8050907@burntcomma.com> Date: Tue, 14 Apr 2015 23:38:24 +0100 MapWindowPoints deals with client coordinates, whereas menu item rects are stored in window coordinates. GetMenuItemRect should use GetWindowRect as an offset instead, or it will always be out by the size of the titlebar. --- dlls/user32/menu.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dlls/user32/menu.c b/dlls/user32/menu.c index 847540b..ab8b61d 100644 --- a/dlls/user32/menu.c +++ b/dlls/user32/menu.c @@ -5084,6 +5084,7 @@ BOOL WINAPI GetMenuItemRect (HWND hwnd, HMENU hMenu, UINT uItem, POPUPMENU *itemMenu; MENUITEM *item; HWND referenceHwnd; + RECT wr; TRACE("(%p,%p,%d,%p)\n", hwnd, hMenu, uItem, rect); @@ -5106,7 +5107,8 @@ BOOL WINAPI GetMenuItemRect (HWND hwnd, HMENU hMenu, UINT uItem, *rect = item->rect; - MapWindowPoints(referenceHwnd, 0, (LPPOINT)rect, 2); + GetWindowRect(referenceHwnd, &wr); + OffsetRect(rect, wr.left, wr.top); return TRUE; }