diff --git a/dlls/user32/menu.c b/dlls/user32/menu.c index eb96ab4765b..230e412dc06 100644 --- a/dlls/user32/menu.c +++ b/dlls/user32/menu.c @@ -3509,6 +3509,7 @@ static LRESULT WINAPI PopupMenuWndProc( HWND hwnd, UINT message, WPARAM wParam, break; case MM_GETMENUHANDLE: + case MN_GETHMENU: return GetWindowLongPtrW( hwnd, 0 ); default: diff --git a/dlls/user32/tests/menu.c b/dlls/user32/tests/menu.c index a3881039bd6..56535ae40dd 100644 --- a/dlls/user32/tests/menu.c +++ b/dlls/user32/tests/menu.c @@ -150,10 +150,12 @@ static int gflag_initmenupopup, static LRESULT WINAPI menu_ownerdraw_wnd_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { + static HMENU hmenupopup; switch (msg) { case WM_INITMENUPOPUP: gflag_initmenupopup++; + hmenupopup = (HMENU) wparam; break; case WM_ENTERMENULOOP: gflag_entermenuloop++; @@ -229,6 +231,11 @@ static LRESULT WINAPI menu_ownerdraw_wnd_proc(HWND hwnd, UINT msg, { ok( lparam || broken(!lparam), /* win9x, nt4 */ "Menu window handle is NULL!\n"); + if( lparam) { + HMENU hmenu = (HMENU)SendMessageA( (HWND)lparam, MN_GETHMENU, 0, 0); + ok( hmenupopup == hmenu, "MN_GETHMENU returns %p expected %p\n", + hmenu, hmenupopup); + } PostMessage(hwnd, WM_CANCELMODE, 0, 0); return TRUE; }