From: Mark Jansen Date: Thu, 2 Aug 2018 20:36:17 +0000 (+0200) Subject: [ZIPFLDR] Add 'Extract All' to individual item context menu. X-Git-Tag: 0.4.11-dev~214 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=572976bb1458d57a97733a51a709e20f9c97c6e2 [ZIPFLDR] Add 'Extract All' to individual item context menu. --- diff --git a/dll/shellext/zipfldr/CZipFolder.hpp b/dll/shellext/zipfldr/CZipFolder.hpp index 74dc42107b9..b5412639355 100644 --- a/dll/shellext/zipfldr/CZipFolder.hpp +++ b/dll/shellext/zipfldr/CZipFolder.hpp @@ -356,9 +356,33 @@ public: switch (uMsg) { case DFM_MERGECONTEXTMENU: - DPRINT1("FIXME: Add menu items for DFM_MERGECONTEXTMENU\n"); + { + CComQIIDPtr spContextMenu(psf); + if (!spContextMenu) + return E_NOINTERFACE; + + QCMINFO *pqcminfo = (QCMINFO *)lParam; + HRESULT hr = spContextMenu->QueryContextMenu(pqcminfo->hmenu, + pqcminfo->indexMenu, + pqcminfo->idCmdFirst, + pqcminfo->idCmdLast, + CMF_NORMAL); + if (FAILED_UNEXPECTEDLY(hr)) + return hr; + + pqcminfo->indexMenu += HRESULT_CODE(hr); return S_OK; + } case DFM_INVOKECOMMAND: + { + CComQIIDPtr spContextMenu(psf); + if (!spContextMenu) + return E_NOINTERFACE; + + CMINVOKECOMMANDINFO ici = { sizeof(ici) }; + ici.lpVerb = MAKEINTRESOURCEA(wParam); + return spContextMenu->InvokeCommand(&ici); + } case DFM_INVOKECOMMANDEX: case DFM_GETDEFSTATICID: // Required for Windows 7 to pick a default return S_FALSE;