The menu bar is a different window to the actual menu being displayed.

If you need a menu to re-drawn then you will have to hook the creation of the menu window (look for WM_CREATE and and window class of #32768). This will give you the HWND of the menu, which you should be able to call Invalidate() on.

There is no known method to go from HMENU to HWND (or visa-versa - I know - I spent a week researching it), so hooking the window creation is the only method I know whcih would work for you.

Some issues may be that there are several class names used for window used by menus. #32768 is the most common, but there are others