diff --git a/base/shell/rshell/CMenuToolbars.cpp b/base/shell/rshell/CMenuToolbars.cpp index ad84f33b411..ec331271fbe 100644 --- a/base/shell/rshell/CMenuToolbars.cpp +++ b/base/shell/rshell/CMenuToolbars.cpp @@ -1095,6 +1095,10 @@ CMenuStaticToolbar::CMenuStaticToolbar(CMenuBand *menuBand) : { } +CMenuStaticToolbar::~CMenuStaticToolbar() +{ +} + HRESULT CMenuStaticToolbar::GetMenu( _Out_opt_ HMENU *phmenu, _Out_opt_ HWND *phwnd, diff --git a/base/shell/rshell/CMenuToolbars.h b/base/shell/rshell/CMenuToolbars.h index b8099d0765d..a44bb128e3a 100644 --- a/base/shell/rshell/CMenuToolbars.h +++ b/base/shell/rshell/CMenuToolbars.h @@ -132,7 +132,7 @@ private: public: CMenuStaticToolbar(CMenuBand *menuBand); - virtual ~CMenuStaticToolbar() {} + virtual ~CMenuStaticToolbar(); HRESULT SetMenu(HMENU hmenu, HWND hwnd, DWORD dwFlags); HRESULT GetMenu(HMENU *phmenu, HWND *phwnd, DWORD *pdwFlags); diff --git a/dll/win32/browseui/internettoolbar.cpp b/dll/win32/browseui/internettoolbar.cpp index 28d8d94a49e..2b0cb721428 100644 --- a/dll/win32/browseui/internettoolbar.cpp +++ b/dll/win32/browseui/internettoolbar.cpp @@ -1680,6 +1680,8 @@ LRESULT CInternetToolbar::OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, SendMessage(fToolbarWindow, TB_CUSTOMIZE, 0, 0); break; } + + DestroyMenu(contextMenuBar); return 1; } diff --git a/dll/win32/browseui/shellbrowser.cpp b/dll/win32/browseui/shellbrowser.cpp index 7dee374fbbf..98c90eb2ec1 100644 --- a/dll/win32/browseui/shellbrowser.cpp +++ b/dll/win32/browseui/shellbrowser.cpp @@ -1571,8 +1571,15 @@ void CShellBrowser::UpdateViewMenu(HMENU theMenu) DeleteMenu(theMenu, IDM_VIEW_TOOLBARS, MF_BYCOMMAND); else { + menuItemInfo.cbSize = sizeof(menuItemInfo); + menuItemInfo.fMask = MIIM_SUBMENU; + GetMenuItemInfo(theMenu, IDM_VIEW_TOOLBARS, FALSE, &menuItemInfo); + DestroyMenu(menuItemInfo.hSubMenu); + toolbarMenuBar = LoadMenu(_AtlBaseModule.GetResourceInstance(), MAKEINTRESOURCE(IDM_CABINET_CONTEXTMENU)); toolbarMenu = GetSubMenu(toolbarMenuBar, 0); + RemoveMenu(toolbarMenuBar, 0, MF_BYPOSITION); + DestroyMenu(toolbarMenuBar); SHCheckMenuItem(toolbarMenu, IDM_TOOLBARS_STANDARDBUTTONS, commandList[0].cmdf); SHCheckMenuItem(toolbarMenu, IDM_TOOLBARS_ADDRESSBAR, commandList[1].cmdf & OLECMDF_ENABLED); @@ -1847,6 +1854,8 @@ HRESULT STDMETHODCALLTYPE CShellBrowser::InsertMenusSB(HMENU hmenuShared, LPOLEM int GCCU(itemCount3) = GetMenuItemCount(hmenuShared); Unused(itemCount3); + DestroyMenu(mainMenu); + lpMenuWidths->width[0] = 2; lpMenuWidths->width[2] = 3; lpMenuWidths->width[4] = 1; diff --git a/dll/win32/shell32/shlview.cpp b/dll/win32/shell32/shlview.cpp index e5b6f2ce92d..1caa3f91f87 100644 --- a/dll/win32/shell32/shlview.cpp +++ b/dll/win32/shell32/shlview.cpp @@ -1383,9 +1383,7 @@ void CDefView::DoActivate(UINT uState) for (int i = 0; i < mic; i++) { HMENU submenu = GetSubMenu(m_hMenu, 0); - RemoveMenu(m_hMenu, 0, MF_BYPOSITION); - if (submenu) - DestroyMenu(submenu); + DeleteMenu(m_hMenu, 0, MF_BYPOSITION); } m_pShellBrowser->InsertMenusSB(m_hMenu, &omw);