From 059fd8e55148b8ebbc45b92f31da49c37508d135 Mon Sep 17 00:00:00 2001 From: Katayama Hirofumi MZ Date: Wed, 28 Feb 2024 16:54:15 +0900 Subject: [PATCH] [SHELL32] Fix CMenuBand's context menu (#6548) JIRA issue: CORE-17453, CORE-12328 In CMenuBand::_TrackContextMenu method: - Use 100 for idCmdFirst, instead of zero. - Use uCommand - idCmdFirst for cmi.lpVerb. Zero is an invalid command ID. --- dll/win32/shell32/shellmenu/CMenuBand.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/dll/win32/shell32/shellmenu/CMenuBand.cpp b/dll/win32/shell32/shellmenu/CMenuBand.cpp index d51dabbddf0..bebdab2638f 100644 --- a/dll/win32/shell32/shellmenu/CMenuBand.cpp +++ b/dll/win32/shell32/shellmenu/CMenuBand.cpp @@ -832,7 +832,8 @@ HRESULT CMenuBand::_TrackContextMenu(IContextMenu * contextMenu, INT x, INT y) return E_FAIL; TRACE("Before Query\n"); - hr = contextMenu->QueryContextMenu(popup, 0, 0, UINT_MAX, CMF_NORMAL); + const INT idCmdFirst = 100; + hr = contextMenu->QueryContextMenu(popup, 0, idCmdFirst, UINT_MAX, CMF_NORMAL); if (FAILED_UNEXPECTEDLY(hr)) { TRACE("Query failed\n"); @@ -854,10 +855,8 @@ HRESULT CMenuBand::_TrackContextMenu(IContextMenu * contextMenu, INT x, INT y) _MenuItemSelect(MPOS_FULLCANCEL); TRACE("Before InvokeCommand\n"); - CMINVOKECOMMANDINFO cmi = { 0 }; - cmi.cbSize = sizeof(cmi); - cmi.lpVerb = MAKEINTRESOURCEA(uCommand); - cmi.hwnd = hwnd; + CMINVOKECOMMANDINFO cmi = { sizeof(cmi), 0, hwnd }; + cmi.lpVerb = MAKEINTRESOURCEA(uCommand - idCmdFirst); hr = contextMenu->InvokeCommand(&cmi); TRACE("InvokeCommand returned hr=%08x\n", hr); }