diff --git a/reactos/base/shell/explorer/desktop/desktop.cpp b/reactos/base/shell/explorer/desktop/desktop.cpp index b31b8ebe595..f83e74914c6 100644 --- a/reactos/base/shell/explorer/desktop/desktop.cpp +++ b/reactos/base/shell/explorer/desktop/desktop.cpp @@ -656,6 +656,7 @@ HRESULT DesktopShellView::DoDesktopContextMenu(int x, int y) } } else _cm_ifs.reset(); + DestroyMenu(hmenu); } pcm->Release(); diff --git a/reactos/base/shell/explorer/explorer.cpp b/reactos/base/shell/explorer/explorer.cpp index 0fe421c0d92..0730f08d62d 100644 --- a/reactos/base/shell/explorer/explorer.cpp +++ b/reactos/base/shell/explorer/explorer.cpp @@ -855,6 +855,8 @@ PopupMenu::PopupMenu(UINT nid) { HMENU hMenu = LoadMenu(g_Globals._hInstance, MAKEINTRESOURCE(nid)); _hmenu = GetSubMenu(hMenu, 0); + RemoveMenu(hMenu, 0, MF_BYPOSITION); + DestroyMenu(hMenu); } diff --git a/reactos/base/shell/explorer/utility/shellclasses.cpp b/reactos/base/shell/explorer/utility/shellclasses.cpp index 287a9f2d468..839cbd96a8d 100644 --- a/reactos/base/shell/explorer/utility/shellclasses.cpp +++ b/reactos/base/shell/explorer/utility/shellclasses.cpp @@ -566,6 +566,7 @@ HRESULT ShellFolderContextMenu(IShellFolder* shell_folder, HWND hwndParent, int } } else cm_ifs.reset(); + DestroyMenu(hmenu); } pcm->Release(); diff --git a/reactos/base/shell/explorer/utility/utility.h b/reactos/base/shell/explorer/utility/utility.h index 03c7434ea6b..eae720280b7 100644 --- a/reactos/base/shell/explorer/utility/utility.h +++ b/reactos/base/shell/explorer/utility/utility.h @@ -663,6 +663,11 @@ struct PopupMenu { } + ~PopupMenu() + { + DestroyMenu(_hmenu); + } + PopupMenu(UINT nid); operator HMENU() {return _hmenu;}