From 551d8fa312b48996b505f4f4c080c67de6c008fd Mon Sep 17 00:00:00 2001 From: Giannis Adamopoulos Date: Mon, 14 Aug 2017 15:25:58 +0000 Subject: [PATCH] [SHELL32] - CDefaultContextMenu: Make it respect the IContextMenu interface and expect menu id offsets instead of real menu ids and actually use the idCmdFirst and idCmdLast parameters in QueryContextMenu. Make the default part use and existed menu from the resources but changed accordingly so the ids of its elements can be adjusted to the next free id of the constructed menu. Rename InsertMenuItemsOfDynamicContextMenuExtension to AddShellExtensionsToMenu, DoDynamicShellExtensions to InvokeShellExt, and DoStaticShellExtensions to InvokeRegVerb. Make AddShellExtensionsToMenu and AddStaticContextMenusToMenu behave like QueryContextMenu to return the number of ids they occupy. Add two helpers SHGetMenuIdFromMenuMsg and SHSetMenuIdInMenuMsg to change the id that is contained in the lparam of WM_DRAWITEM and WM_MEASUREITEM before forwarding them. - CDefView: When calling QueryContextMenu before using TrackPopupMenu, use 1 as the first id that will filled by the IContextMenu because we want 0 to be used as an indicator that the menu was canceled. Use SHGetMenuIdFromMenuMsg and SHSetMenuIdInMenuMsg to change the lparam of the messages forwarded to the IContextMenu accordingly. - CDefViewBckgrndMenu: Add a hack so as to keep the code as simple as possible while respecting idCmdFirst and idCmdLast. - CNewMenu: Remove a hack that was needed because WM_DRAWITEM didn't come with the menu id offset but with the real menu id. - CDesktopFolder, CFSFolder: Make the callbacks avoid adding an extra separators. After that shell extensions in menus should work better and callbacks to shell folders should really be able to add several menu items. svn path=/trunk/; revision=75533 --- reactos/dll/win32/shell32/CDefView.cpp | 32 +- .../dll/win32/shell32/CDefViewBckgrndMenu.cpp | 98 +++--- .../dll/win32/shell32/CDefaultContextMenu.cpp | 306 +++++++++--------- reactos/dll/win32/shell32/CNewMenu.cpp | 7 +- reactos/dll/win32/shell32/CNewMenu.h | 1 - .../win32/shell32/folders/CDesktopFolder.cpp | 8 +- .../dll/win32/shell32/folders/CFSFolder.cpp | 8 +- reactos/dll/win32/shell32/lang/bg-BG.rc | 14 +- reactos/dll/win32/shell32/lang/ca-ES.rc | 14 +- reactos/dll/win32/shell32/lang/cs-CZ.rc | 14 +- reactos/dll/win32/shell32/lang/da-DK.rc | 14 +- reactos/dll/win32/shell32/lang/de-DE.rc | 14 +- reactos/dll/win32/shell32/lang/el-GR.rc | 14 +- reactos/dll/win32/shell32/lang/en-GB.rc | 14 +- reactos/dll/win32/shell32/lang/en-US.rc | 15 +- reactos/dll/win32/shell32/lang/es-ES.rc | 14 +- reactos/dll/win32/shell32/lang/fi-FI.rc | 14 +- reactos/dll/win32/shell32/lang/fr-FR.rc | 14 +- reactos/dll/win32/shell32/lang/he-IL.rc | 14 +- reactos/dll/win32/shell32/lang/hu-HU.rc | 14 +- reactos/dll/win32/shell32/lang/it-IT.rc | 14 +- reactos/dll/win32/shell32/lang/ja-JP.rc | 14 +- reactos/dll/win32/shell32/lang/ko-KR.rc | 14 +- reactos/dll/win32/shell32/lang/nl-NL.rc | 14 +- reactos/dll/win32/shell32/lang/no-NO.rc | 14 +- reactos/dll/win32/shell32/lang/pl-PL.rc | 14 +- reactos/dll/win32/shell32/lang/pt-BR.rc | 14 +- reactos/dll/win32/shell32/lang/pt-PT.rc | 14 +- reactos/dll/win32/shell32/lang/ro-RO.rc | 14 +- reactos/dll/win32/shell32/lang/ru-RU.rc | 14 +- reactos/dll/win32/shell32/lang/sk-SK.rc | 14 +- reactos/dll/win32/shell32/lang/sl-SI.rc | 14 +- reactos/dll/win32/shell32/lang/sq-AL.rc | 14 +- reactos/dll/win32/shell32/lang/sv-SE.rc | 14 +- reactos/dll/win32/shell32/lang/tr-TR.rc | 14 +- reactos/dll/win32/shell32/lang/uk-UA.rc | 14 +- reactos/dll/win32/shell32/lang/zh-CN.rc | 14 +- reactos/dll/win32/shell32/lang/zh-TW.rc | 14 +- reactos/dll/win32/shell32/shresdef.h | 8 + 39 files changed, 438 insertions(+), 465 deletions(-) diff --git a/reactos/dll/win32/shell32/CDefView.cpp b/reactos/dll/win32/shell32/CDefView.cpp index 895f9e0e240..b31044df079 100644 --- a/reactos/dll/win32/shell32/CDefView.cpp +++ b/reactos/dll/win32/shell32/CDefView.cpp @@ -53,6 +53,10 @@ typedef struct #define SHV_CHANGE_NOTIFY WM_USER + 0x1111 +/* For the context menu of the def view, the id of the items are based on 1 because we need + to call TrackPopupMenu and let it use the 0 value as an indication that the menu was canceled */ +#define CONTEXT_MENU_BASE_ID 1 + class CDefView : public CWindowImpl, public CComObjectRootEx, @@ -1272,7 +1276,7 @@ HRESULT CDefView::OpenSelectedItems() IUnknown_SetSite(m_pCM, (IShellView *)this); - hResult = m_pCM->QueryContextMenu(hMenu, 0, 0x20, 0x7fff, CMF_DEFAULTONLY); + hResult = m_pCM->QueryContextMenu(hMenu, 0, FCIDM_SHVIEWFIRST, FCIDM_SHVIEWLAST, CMF_DEFAULTONLY); if (FAILED_UNEXPECTEDLY(hResult)) goto cleanup; @@ -1325,7 +1329,8 @@ LRESULT CDefView::OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &b IUnknown_SetSite(m_pCM, (IShellView *)this); - hResult = m_pCM->QueryContextMenu(m_hContextMenu, 0, FCIDM_SHVIEWFIRST, FCIDM_SHVIEWLAST, CMF_NORMAL); + /* Use 1 as the first id as we want 0 the mean that the user canceled the menu */ + hResult = m_pCM->QueryContextMenu(m_hContextMenu, 0, CONTEXT_MENU_BASE_ID, FCIDM_SHVIEWLAST, CMF_NORMAL); if (FAILED_UNEXPECTEDLY(hResult)) goto cleanup; @@ -1338,7 +1343,7 @@ LRESULT CDefView::OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &b if (uCommand == FCIDM_SHVIEW_OPEN && OnDefaultCommand() == S_OK) goto cleanup; - InvokeContextMenuCommand(uCommand); + InvokeContextMenuCommand(uCommand - CONTEXT_MENU_BASE_ID); cleanup: if (m_pCM) @@ -1600,7 +1605,7 @@ LRESULT CDefView::OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHand return OnExplorerCommand(dwCmdID, FALSE); default: /* WM_COMMAND messages from the file menu are routed to the CDefView so as to let m_pCM handle the command */ - if (m_pCM) + if (m_pCM && dwCmd == 0) { InvokeContextMenuCommand(dwCmdID); } @@ -1955,6 +1960,9 @@ LRESULT CDefView::OnChangeNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL & return TRUE; } +HRESULT SHGetMenuIdFromMenuMsg(UINT uMsg, LPARAM lParam, UINT *CmdId); +HRESULT SHSetMenuIdInMenuMsg(UINT uMsg, LPARAM lParam, UINT CmdId); + /********************************************************** * CDefView::OnCustomItem */ @@ -1967,12 +1975,18 @@ LRESULT CDefView::OnCustomItem(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bH return FALSE; } - LRESULT result; - HRESULT hres = SHForwardContextMenuMsg(m_pCM, uMsg, wParam, lParam, &result, TRUE); + /* The lParam of WM_DRAWITEM WM_MEASUREITEM contain a menu id and this also needs to + be changed to a menu identifier offset */ + UINT CmdID; + HRESULT hres = SHGetMenuIdFromMenuMsg(uMsg, lParam, &CmdID); if (SUCCEEDED(hres)) - return TRUE; - else - return FALSE; + SHSetMenuIdInMenuMsg(uMsg, lParam, CmdID - CONTEXT_MENU_BASE_ID); + + /* Forward the message to the IContextMenu2 */ + LRESULT result; + hres = SHForwardContextMenuMsg(m_pCM, uMsg, wParam, lParam, &result, TRUE); + + return (SUCCEEDED(hres)); } LRESULT CDefView::OnSettingChange(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled) diff --git a/reactos/dll/win32/shell32/CDefViewBckgrndMenu.cpp b/reactos/dll/win32/shell32/CDefViewBckgrndMenu.cpp index 6cb859ebe74..0b8b1352511 100644 --- a/reactos/dll/win32/shell32/CDefViewBckgrndMenu.cpp +++ b/reactos/dll/win32/shell32/CDefViewBckgrndMenu.cpp @@ -20,6 +20,9 @@ class CDefViewBckgrndMenu : CComPtr m_psf; CComPtr m_folderCM; + UINT m_idCmdFirst; + UINT m_LastFolderCMId; + BOOL _bIsDesktopBrowserMenu(); BOOL _bCanPaste(); public: @@ -52,6 +55,8 @@ class CDefViewBckgrndMenu : CDefViewBckgrndMenu::CDefViewBckgrndMenu() { + m_idCmdFirst = 0; + m_LastFolderCMId = 0; } CDefViewBckgrndMenu::~CDefViewBckgrndMenu() @@ -135,6 +140,39 @@ CDefViewBckgrndMenu::QueryContextMenu(HMENU hMenu, UINT indexMenu, UINT idCmdFir { HRESULT hr; HMENU hMenuPart; + UINT cIds = 0; + + /* This is something the implementations of IContextMenu should never really do. + However CDefViewBckgrndMenu is more or less an overengineering result, its code could really be part of the + CDefView. Given this, I think that abusing the interface here is not that bad since only CDefView is the ony + user of this class. Here we need to do two things to keep things as simple as possible. + First we want the menu part added by the shell folder to be the first to add so as to make as few id translations + as possible. Second, we want to add the default part of the background menu without shifted ids, so as + to let the CDefView fill some parts like filling the arrange modes or checking the view mode. In order + for that to work we need to save idCmdFirst because our caller will pass id offsets to InvokeCommand. + This makes it impossible to concatenate the CDefViewBckgrndMenu with other menus since it abuses IContextMenu + but as stated above, its sole user is CDefView and should really be that way. */ + m_idCmdFirst = idCmdFirst; + + /* Query the shell folder to add any items it wants to add in the background context menu */ + hr = m_psf->CreateViewObject(NULL, IID_PPV_ARG(IContextMenu, &m_folderCM)); + if (SUCCEEDED(hr)) + { + hr = m_folderCM->QueryContextMenu(hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags); + if (SUCCEEDED(hr)) + { + m_LastFolderCMId = LOWORD(hr); + cIds = m_LastFolderCMId; + } + else + { + WARN("QueryContextMenu failed!\n"); + } + } + else + { + WARN("GetUIObjectOf didn't give any context menu!\n"); + } /* Load the default part of the background context menu */ hMenuPart = LoadMenuW(shell32_hInstance, L"MENU_002"); @@ -154,8 +192,7 @@ CDefViewBckgrndMenu::QueryContextMenu(HMENU hMenu, UINT indexMenu, UINT idCmdFir } /* merge general background context menu in */ - Shell_MergeMenus(hMenu, GetSubMenu(hMenuPart, 0), indexMenu, 0, 0xFFFF, MM_DONTREMOVESEPS | MM_SUBMENUSHAVEIDS); - indexMenu += GetMenuItemCount(GetSubMenu(hMenuPart, 0)); + Shell_MergeMenus(hMenu, GetSubMenu(hMenuPart, 0), indexMenu, 0, idCmdLast, MM_DONTREMOVESEPS | MM_SUBMENUSHAVEIDS | MM_ADDSEPARATOR); DestroyMenu(hMenuPart); } else @@ -163,52 +200,24 @@ CDefViewBckgrndMenu::QueryContextMenu(HMENU hMenu, UINT indexMenu, UINT idCmdFir ERR("Failed to load menu from resource!\n"); } - /* Query the shell folder to add any items it wants to add in the background context menu */ - hMenuPart = CreatePopupMenu(); - if (hMenuPart) - { - hr = m_psf->CreateViewObject(NULL, IID_PPV_ARG(IContextMenu, &m_folderCM)); - if (SUCCEEDED(hr)) - { - InsertMenuA(hMenu, indexMenu++, MF_BYPOSITION | MF_SEPARATOR, 0, NULL); - UINT SeparatorIndex = indexMenu; - int count = GetMenuItemCount(hMenu); - - hr = m_folderCM->QueryContextMenu(hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags); - if (SUCCEEDED(hr)) - { - //Shell_MergeMenus(hMenu, hMenuPart, indexMenu, 0, UINT_MAX, MM_ADDSEPARATOR| MM_DONTREMOVESEPS | MM_SUBMENUSHAVEIDS); - //DestroyMenu(hMenuPart); - } - else - { - WARN("QueryContextMenu failed!\n"); - } - - /* If no item was added after the separator, remove it */ - if (count == GetMenuItemCount(hMenu)) - DeleteMenu(hMenu, SeparatorIndex, MF_BYPOSITION); - - } - else - { - WARN("GetUIObjectOf didn't give any context menu!\n"); - } - } - else - { - ERR("CreatePopupMenu failed!\n"); - } - - return S_OK; + return MAKE_HRESULT(SEVERITY_SUCCESS, 0, cIds); } HRESULT WINAPI CDefViewBckgrndMenu::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi) { + UINT idCmd = LOWORD(lpcmi->lpVerb); + if(HIWORD(lpcmi->lpVerb) != 0 || idCmd < m_LastFolderCMId) + { + return m_folderCM->InvokeCommand(lpcmi); + } + + /* The default part of the background menu doesn't have shifted ids so we need to convert the id offset to the real id */ + idCmd += m_idCmdFirst; + /* The commands that are handled by the def view are forwarded to it */ - switch (LOWORD(lpcmi->lpVerb)) + switch (idCmd) { case FCIDM_SHVIEW_BIGICON: case FCIDM_SHVIEW_SMALLICON: @@ -232,13 +241,12 @@ CDefViewBckgrndMenu::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi) HWND hwndSV = NULL; if (SUCCEEDED(psv->GetWindow(&hwndSV))) - SendMessageW(hwndSV, WM_COMMAND, MAKEWPARAM(LOWORD(lpcmi->lpVerb), 0), 0); + SendMessageW(hwndSV, WM_COMMAND, MAKEWPARAM(idCmd, 0), 0); return S_OK; } - /* Unknown commands are added by the folder context menu so forward the invocation */ - return m_folderCM->InvokeCommand(lpcmi); - + ERR("Got unknown command id %ul\n", LOWORD(lpcmi->lpVerb)); + return E_FAIL; } HRESULT diff --git a/reactos/dll/win32/shell32/CDefaultContextMenu.cpp b/reactos/dll/win32/shell32/CDefaultContextMenu.cpp index 849c837f965..a16ab80e32d 100644 --- a/reactos/dll/win32/shell32/CDefaultContextMenu.cpp +++ b/reactos/dll/win32/shell32/CDefaultContextMenu.cpp @@ -78,6 +78,8 @@ class CDefaultContextMenu : UINT m_iIdSCMLast; /* last static used id */ UINT m_iIdCBFirst; /* first callback used id */ UINT m_iIdCBLast; /* last callback used id */ + UINT m_iIdDfltFirst; /* first default part id */ + UINT m_iIdDfltLast; /* last default part id */ HRESULT _DoCallback(UINT uMsg, WPARAM wParam, LPVOID lParam); void AddStaticEntry(const HKEY hkeyClass, const WCHAR *szVerb); @@ -85,8 +87,8 @@ class CDefaultContextMenu : BOOL IsShellExtensionAlreadyLoaded(const CLSID *pclsid); HRESULT LoadDynamicContextMenuHandler(HKEY hKey, const CLSID *pclsid); BOOL EnumerateDynamicContextHandlerForKey(HKEY hRootKey); - UINT InsertMenuItemsOfDynamicContextMenuExtension(HMENU hMenu, UINT IndexMenu, UINT idCmdFirst, UINT idCmdLast); - UINT AddStaticContextMenusToMenu(HMENU hMenu, UINT IndexMenu, UINT iIdCmdFirst, UINT iIdCmdLast); + UINT AddShellExtensionsToMenu(HMENU hMenu, UINT* pIndexMenu, UINT idCmdFirst, UINT idCmdLast); + UINT AddStaticContextMenusToMenu(HMENU hMenu, UINT* IndexMenu, UINT iIdCmdFirst, UINT iIdCmdLast); HRESULT DoPaste(LPCMINVOKECOMMANDINFO lpcmi, BOOL bLink); HRESULT DoOpenOrExplore(LPCMINVOKECOMMANDINFO lpcmi); HRESULT DoCreateLink(LPCMINVOKECOMMANDINFO lpcmi); @@ -95,8 +97,8 @@ class CDefaultContextMenu : HRESULT DoRename(LPCMINVOKECOMMANDINFO lpcmi); HRESULT DoProperties(LPCMINVOKECOMMANDINFO lpcmi); HRESULT DoCreateNewFolder(LPCMINVOKECOMMANDINFO lpici); - HRESULT DoDynamicShellExtensions(LPCMINVOKECOMMANDINFO lpcmi); - HRESULT DoStaticShellExtensions(LPCMINVOKECOMMANDINFO lpcmi); + HRESULT InvokeShellExt(LPCMINVOKECOMMANDINFO lpcmi); + HRESULT InvokeRegVerb(LPCMINVOKECOMMANDINFO lpcmi); DWORD BrowserFlagsFromVerb(LPCMINVOKECOMMANDINFO lpcmi, PStaticShellEntry pEntry); HRESULT TryToBrowse(LPCMINVOKECOMMANDINFO lpcmi, LPCITEMIDLIST pidl, DWORD wFlags); HRESULT InvokePidl(LPCMINVOKECOMMANDINFO lpcmi, LPCITEMIDLIST pidl, PStaticShellEntry pEntry); @@ -149,7 +151,10 @@ CDefaultContextMenu::CDefaultContextMenu() : m_iIdSCMFirst(0), m_iIdSCMLast(0), m_iIdCBFirst(0), - m_iIdCBLast(0) + m_iIdCBLast(0), + m_iIdDfltFirst(0), + m_iIdDfltLast(0) + { } @@ -463,47 +468,38 @@ CDefaultContextMenu::EnumerateDynamicContextHandlerForKey(HKEY hRootKey) } UINT -CDefaultContextMenu::InsertMenuItemsOfDynamicContextMenuExtension(HMENU hMenu, UINT IndexMenu, UINT idCmdFirst, UINT idCmdLast) +CDefaultContextMenu::AddShellExtensionsToMenu(HMENU hMenu, UINT* pIndexMenu, UINT idCmdFirst, UINT idCmdLast) { + UINT cIds = 0; + if (!m_pDynamicEntries) - { - m_iIdSHEFirst = 0; - m_iIdSHELast = 0; - return IndexMenu; - } + return cIds; PDynamicShellEntry pEntry = m_pDynamicEntries; - m_iIdSHEFirst = idCmdFirst; do { - HRESULT hr = pEntry->pCM->QueryContextMenu(hMenu, IndexMenu++, idCmdFirst, idCmdLast, CMF_NORMAL); + HRESULT hr = pEntry->pCM->QueryContextMenu(hMenu, *pIndexMenu, idCmdFirst + cIds, idCmdLast, CMF_NORMAL); if (SUCCEEDED(hr)) { - pEntry->iIdCmdFirst = idCmdFirst; + pEntry->iIdCmdFirst = cIds; pEntry->NumIds = LOWORD(hr); - IndexMenu += pEntry->NumIds; - idCmdFirst += pEntry->NumIds + 0x10; + (*pIndexMenu) += pEntry->NumIds; - if(idCmdFirst >= idCmdLast) - { - /* There is no more room for items */ - idCmdFirst = idCmdLast; + cIds += pEntry->NumIds; + if(idCmdFirst + cIds >= idCmdLast) break; - } } TRACE("pEntry %p hr %x contextmenu %p cmdfirst %x num ids %x\n", pEntry, hr, pEntry->pCM, pEntry->iIdCmdFirst, pEntry->NumIds); pEntry = pEntry->pNext; } while (pEntry); - m_iIdSHELast = idCmdFirst; - TRACE("SH_LoadContextMenuHandlers first %x last %x\n", m_iIdSHEFirst, m_iIdSHELast); - return IndexMenu; + return cIds; } UINT CDefaultContextMenu::AddStaticContextMenusToMenu( HMENU hMenu, - UINT IndexMenu, + UINT* pIndexMenu, UINT iIdCmdFirst, UINT iIdCmdLast) { @@ -511,13 +507,12 @@ CDefaultContextMenu::AddStaticContextMenusToMenu( UINT idResource; WCHAR wszVerb[40]; UINT fState; + UINT cIds = 0; mii.cbSize = sizeof(mii); mii.fMask = MIIM_ID | MIIM_TYPE | MIIM_STATE | MIIM_DATA; mii.fType = MFT_STRING; - mii.wID = iIdCmdFirst; mii.dwTypeData = NULL; - m_iIdSCMFirst = mii.wID; PStaticShellEntry pEntry = m_pStaticEntries; @@ -596,17 +591,18 @@ CDefaultContextMenu::AddStaticContextMenusToMenu( mii.cch = wcslen(mii.dwTypeData); mii.fState = fState; - InsertMenuItemW(hMenu, IndexMenu++, TRUE, &mii); + mii.wID = iIdCmdFirst + cIds; + InsertMenuItemW(hMenu, *pIndexMenu, TRUE, &mii); + (*pIndexMenu)++; + cIds++; - mii.wID++; pEntry = pEntry->pNext; if (mii.wID >= iIdCmdLast) break; } - m_iIdSCMLast = mii.wID - 1; - return IndexMenu; + return cIds; } void WINAPI _InsertMenuItemW( @@ -659,10 +655,7 @@ CDefaultContextMenu::QueryContextMenu( { HRESULT hr; UINT idCmdNext = idCmdFirst; - - /* Add a tiny hack to make all the shell happy until we understand how we should handle 0 ids */ - if (!idCmdNext) - idCmdNext = 1; + UINT cIds = 0; TRACE("BuildShellItemContextMenu entered\n"); @@ -674,92 +667,69 @@ CDefaultContextMenu::QueryContextMenu( } /* Add static context menu handlers */ - IndexMenu = AddStaticContextMenusToMenu(hMenu, IndexMenu, idCmdNext, idCmdLast); - if (m_iIdSCMLast && m_iIdSCMFirst > m_iIdSCMLast) - m_iIdSCMLast = m_iIdSCMFirst = 0; - else if (m_iIdSCMLast) - idCmdNext = m_iIdSCMLast + 1; + cIds = AddStaticContextMenusToMenu(hMenu, &IndexMenu, idCmdFirst, idCmdLast); + m_iIdSCMFirst = 0; + m_iIdSCMLast = cIds; + idCmdNext = idCmdFirst + cIds; /* Add dynamic context menu handlers */ - BOOL bAddSep = FALSE; - IndexMenu = InsertMenuItemsOfDynamicContextMenuExtension(hMenu, IndexMenu, idCmdNext, idCmdLast); - if (m_iIdSHELast && m_iIdSHELast != m_iIdSHEFirst) - idCmdNext = m_iIdSHELast + 1; + cIds += AddShellExtensionsToMenu(hMenu, &IndexMenu, idCmdNext, idCmdLast); + m_iIdSHEFirst = m_iIdSCMLast; + m_iIdSHELast = cIds; + idCmdNext = idCmdFirst + cIds; + TRACE("SH_LoadContextMenuHandlers first %x last %x\n", m_iIdSHEFirst, m_iIdSHELast); /* Now let the callback add its own items */ QCMINFO qcminfo = {hMenu, IndexMenu, idCmdNext, idCmdLast, NULL}; if (SUCCEEDED(_DoCallback(DFM_MERGECONTEXTMENU, uFlags, &qcminfo))) { - m_iIdCBFirst = idCmdNext; - m_iIdCBLast = qcminfo.idCmdFirst; - idCmdNext = m_iIdCBLast + 1; + cIds += qcminfo.idCmdFirst; + IndexMenu += qcminfo.idCmdFirst; + m_iIdCBFirst = m_iIdSHELast; + m_iIdCBLast = cIds; + idCmdNext = idCmdFirst + cIds; } - /* The rest of the items will be added in the end of the menu */ - IndexMenu = GetMenuItemCount(hMenu); - if (uFlags & CMF_VERBSONLY) - return MAKE_HRESULT(SEVERITY_SUCCESS, 0, idCmdNext - idCmdFirst); + return MAKE_HRESULT(SEVERITY_SUCCESS, 0, cIds); /* If this is a background context menu we are done */ if (!m_cidl) - return MAKE_HRESULT(SEVERITY_SUCCESS, 0, idCmdNext - idCmdFirst); + return MAKE_HRESULT(SEVERITY_SUCCESS, 0, cIds); /* Get the attributes of the items */ SFGAOF rfg = SFGAO_BROWSABLE | SFGAO_CANCOPY | SFGAO_CANLINK | SFGAO_CANMOVE | SFGAO_CANDELETE | SFGAO_CANRENAME | SFGAO_HASPROPSHEET | SFGAO_FILESYSTEM | SFGAO_FOLDER; hr = m_psf->GetAttributesOf(m_cidl, m_apidl, &rfg); if (FAILED_UNEXPECTEDLY(hr)) - return MAKE_HRESULT(SEVERITY_SUCCESS, 0, idCmdNext - idCmdFirst); + return MAKE_HRESULT(SEVERITY_SUCCESS, 0, cIds); - /* Add the standard menu entries based on the attributes of the items */ - BOOL bClipboardData = (HasClipboardData() && (rfg & SFGAO_FILESYSTEM)); - if (rfg & (SFGAO_CANCOPY | SFGAO_CANMOVE) || bClipboardData) - { - _InsertMenuItemW(hMenu, IndexMenu++, TRUE, 0, MFT_SEPARATOR, NULL, 0); - if (rfg & SFGAO_CANMOVE) - _InsertMenuItemW(hMenu, IndexMenu++, TRUE, FCIDM_SHVIEW_CUT, MFT_STRING, MAKEINTRESOURCEW(IDS_CUT), MFS_ENABLED); - if (rfg & SFGAO_CANCOPY) - _InsertMenuItemW(hMenu, IndexMenu++, TRUE, FCIDM_SHVIEW_COPY, MFT_STRING, MAKEINTRESOURCEW(IDS_COPY), MFS_ENABLED); - if (bClipboardData) - _InsertMenuItemW(hMenu, IndexMenu++, TRUE, FCIDM_SHVIEW_INSERT, MFT_STRING, MAKEINTRESOURCEW(IDS_PASTE), MFS_ENABLED); + /* Add the default part of the menu */ + HMENU hmenuDefault = LoadMenu(_AtlBaseModule.GetResourceInstance(), L"MENU_SHV_FILE"); - bAddSep = TRUE; - } + /* Remove uneeded entries */ + if (!(rfg & SFGAO_CANMOVE)) + DeleteMenu(hmenuDefault, IDM_CUT, MF_BYCOMMAND); + if (!(rfg & SFGAO_CANCOPY)) + DeleteMenu(hmenuDefault, IDM_COPY, MF_BYCOMMAND); + if (!((rfg & SFGAO_FILESYSTEM) && HasClipboardData())) + DeleteMenu(hmenuDefault, IDM_INSERT, MF_BYCOMMAND); + if (!(rfg & SFGAO_CANLINK)) + DeleteMenu(hmenuDefault, IDM_CREATELINK, MF_BYCOMMAND); + if (!(rfg & SFGAO_CANDELETE)) + DeleteMenu(hmenuDefault, IDM_DELETE, MF_BYCOMMAND); + if (!(rfg & SFGAO_CANRENAME)) + DeleteMenu(hmenuDefault, IDM_RENAME, MF_BYCOMMAND); + if (!(rfg & SFGAO_HASPROPSHEET)) + DeleteMenu(hmenuDefault, IDM_PROPERTIES, MF_BYCOMMAND); - if (rfg & SFGAO_CANLINK) - { - bAddSep = FALSE; - _InsertMenuItemW(hMenu, IndexMenu++, TRUE, 0, MFT_SEPARATOR, NULL, 0); - _InsertMenuItemW(hMenu, IndexMenu++, TRUE, FCIDM_SHVIEW_CREATELINK, MFT_STRING, MAKEINTRESOURCEW(IDS_CREATELINK), MFS_ENABLED); - } + UINT idMax = Shell_MergeMenus(hMenu, GetSubMenu(hmenuDefault, 0), IndexMenu, idCmdNext, idCmdLast, 0); + m_iIdDfltFirst = cIds; + cIds += idMax - idCmdNext; + m_iIdDfltLast = cIds; - if (rfg & SFGAO_CANDELETE) - { - if (bAddSep) - { - bAddSep = FALSE; - _InsertMenuItemW(hMenu, IndexMenu++, TRUE, 0, MFT_SEPARATOR, NULL, 0); - } - _InsertMenuItemW(hMenu, IndexMenu++, TRUE, FCIDM_SHVIEW_DELETE, MFT_STRING, MAKEINTRESOURCEW(IDS_DELETE), MFS_ENABLED); - } + DestroyMenu(hmenuDefault); - if (rfg & SFGAO_CANRENAME) - { - if (bAddSep) - { - _InsertMenuItemW(hMenu, IndexMenu++, TRUE, 0, MFT_SEPARATOR, NULL, 0); - } - _InsertMenuItemW(hMenu, IndexMenu++, TRUE, FCIDM_SHVIEW_RENAME, MFT_STRING, MAKEINTRESOURCEW(IDS_RENAME), MFS_ENABLED); - bAddSep = TRUE; - } - - if (rfg & SFGAO_HASPROPSHEET) - { - _InsertMenuItemW(hMenu, IndexMenu++, TRUE, 0, MFT_SEPARATOR, NULL, 0); - _InsertMenuItemW(hMenu, IndexMenu++, TRUE, FCIDM_SHVIEW_PROPERTIES, MFT_STRING, MAKEINTRESOURCEW(IDS_PROPERTIES), MFS_ENABLED); - } - - return S_OK; + return MAKE_HRESULT(SEVERITY_SUCCESS, 0, cIds); } HRESULT CDefaultContextMenu::DoPaste(LPCMINVOKECOMMANDINFO lpcmi, BOOL bLink) @@ -967,7 +937,7 @@ PDynamicShellEntry CDefaultContextMenu::GetDynamicEntry(UINT idCmd) { PDynamicShellEntry pEntry = m_pDynamicEntries; - while(pEntry && idCmd > pEntry->iIdCmdFirst + pEntry->NumIds) + while(pEntry && idCmd >= pEntry->iIdCmdFirst + pEntry->NumIds) pEntry = pEntry->pNext; if (!pEntry) @@ -1016,7 +986,7 @@ CDefaultContextMenu::MapVerbToCmdId(PVOID Verb, PUINT idCmd, BOOL IsUnicode) } HRESULT -CDefaultContextMenu::DoDynamicShellExtensions( +CDefaultContextMenu::InvokeShellExt( LPCMINVOKECOMMANDINFO lpcmi) { TRACE("verb %p first %x last %x\n", lpcmi->lpVerb, m_iIdSHEFirst, m_iIdSHELast); @@ -1134,7 +1104,7 @@ CDefaultContextMenu::InvokePidl(LPCMINVOKECOMMANDINFO lpcmi, LPCITEMIDLIST pidl, } HRESULT -CDefaultContextMenu::DoStaticShellExtensions( +CDefaultContextMenu::InvokeRegVerb( LPCMINVOKECOMMANDINFO lpcmi) { PStaticShellEntry pEntry = m_pStaticEntries; @@ -1198,8 +1168,37 @@ CDefaultContextMenu::InvokeCommand( LocalInvokeInfo.lpVerb = MAKEINTRESOURCEA(CmdId); } + CmdId = LOWORD(LocalInvokeInfo.lpVerb); + + if (m_pDynamicEntries && CmdId >= m_iIdSHEFirst && CmdId < m_iIdSHELast) + { + LocalInvokeInfo.lpVerb -= m_iIdSHEFirst; + Result = InvokeShellExt(&LocalInvokeInfo); + return Result; + } + + if (m_pStaticEntries && CmdId >= m_iIdSCMFirst && CmdId < m_iIdSCMLast) + { + LocalInvokeInfo.lpVerb -= m_iIdSCMFirst; + Result = InvokeRegVerb(&LocalInvokeInfo); + return Result; + } + + if (m_iIdCBFirst != m_iIdCBLast && CmdId >= m_iIdCBFirst && CmdId < m_iIdCBLast) + { + Result = _DoCallback(DFM_INVOKECOMMAND, CmdId - m_iIdCBFirst, NULL); + return Result; + } + + if (m_iIdDfltFirst != m_iIdDfltLast && CmdId >= m_iIdDfltFirst && CmdId < m_iIdDfltLast) + { + CmdId -= m_iIdDfltFirst; + /* See the definitions of IDM_CUT and co to see how this works */ + CmdId += 0x7000; + } + /* Check if this is a Id */ - switch (LOWORD(LocalInvokeInfo.lpVerb)) + switch (CmdId) { case FCIDM_SHVIEW_INSERT: Result = DoPaste(&LocalInvokeInfo, FALSE); @@ -1232,34 +1231,10 @@ CDefaultContextMenu::InvokeCommand( break; default: Result = E_UNEXPECTED; + ERR("Unhandled Verb %xl\n", LOWORD(LocalInvokeInfo.lpVerb)); break; } - /* Check for ID's we didn't find a handler for */ - if (Result == E_UNEXPECTED) - { - if (m_pDynamicEntries) - { - if (LOWORD(LocalInvokeInfo.lpVerb) >= m_iIdSHEFirst && LOWORD(LocalInvokeInfo.lpVerb) <= m_iIdSHELast) - Result = DoDynamicShellExtensions(&LocalInvokeInfo); - } - - if (m_pStaticEntries) - { - if (LOWORD(LocalInvokeInfo.lpVerb) >= m_iIdSCMFirst && LOWORD(LocalInvokeInfo.lpVerb) <= m_iIdSCMLast) - Result = DoStaticShellExtensions(&LocalInvokeInfo); - } - - if (m_iIdCBFirst != m_iIdCBLast) - { - if (LOWORD(LocalInvokeInfo.lpVerb) >= m_iIdCBFirst && LOWORD(LocalInvokeInfo.lpVerb) <= m_iIdCBLast) - Result = _DoCallback(DFM_INVOKECOMMAND, LOWORD(LocalInvokeInfo.lpVerb), NULL); - } - } - - if (Result == E_UNEXPECTED) - ERR("Unhandled Verb %xl\n", LOWORD(LocalInvokeInfo.lpVerb)); - return Result; } @@ -1315,6 +1290,42 @@ CDefaultContextMenu::HandleMenuMsg( return S_OK; } +HRESULT SHGetMenuIdFromMenuMsg(UINT uMsg, LPARAM lParam, UINT *CmdId) +{ + if (uMsg == WM_DRAWITEM) + { + DRAWITEMSTRUCT* pDrawStruct = reinterpret_cast(lParam); + *CmdId = pDrawStruct->itemID; + return S_OK; + } + else if (uMsg == WM_MEASUREITEM) + { + MEASUREITEMSTRUCT* pMeasureStruct = reinterpret_cast(lParam); + *CmdId = pMeasureStruct->itemID; + return S_OK; + } + + return E_FAIL; +} + +HRESULT SHSetMenuIdInMenuMsg(UINT uMsg, LPARAM lParam, UINT CmdId) +{ + if (uMsg == WM_DRAWITEM) + { + DRAWITEMSTRUCT* pDrawStruct = reinterpret_cast(lParam); + pDrawStruct->itemID = CmdId; + return S_OK; + } + else if (uMsg == WM_MEASUREITEM) + { + MEASUREITEMSTRUCT* pMeasureStruct = reinterpret_cast(lParam); + pMeasureStruct->itemID = CmdId; + return S_OK; + } + + return E_FAIL; +} + HRESULT WINAPI CDefaultContextMenu::HandleMenuMsg2( @@ -1323,9 +1334,7 @@ CDefaultContextMenu::HandleMenuMsg2( LPARAM lParam, LRESULT *plResult) { - switch (uMsg) - { - case WM_INITMENUPOPUP: + if (uMsg == WM_INITMENUPOPUP) { PDynamicShellEntry pEntry = m_pDynamicEntries; while (pEntry) @@ -1333,30 +1342,25 @@ CDefaultContextMenu::HandleMenuMsg2( SHForwardContextMenuMsg(pEntry->pCM, uMsg, wParam, lParam, plResult, TRUE); pEntry = pEntry->pNext; } - break; + return S_OK; } - case WM_DRAWITEM: + + UINT CmdId; + HRESULT hr = SHGetMenuIdFromMenuMsg(uMsg, lParam, &CmdId); + if (FAILED(hr)) + return S_FALSE; + + if (CmdId < m_iIdSHEFirst || CmdId >= m_iIdSHELast) + return S_FALSE; + + CmdId -= m_iIdSHEFirst; + PDynamicShellEntry pEntry = GetDynamicEntry(CmdId); + if (pEntry) { - DRAWITEMSTRUCT* pDrawStruct = reinterpret_cast(lParam); - PDynamicShellEntry pEntry = GetDynamicEntry(pDrawStruct->itemID); - if (pEntry) - SHForwardContextMenuMsg(pEntry->pCM, uMsg, wParam, lParam, plResult, TRUE); - break; - } - case WM_MEASUREITEM: - { - MEASUREITEMSTRUCT* pMeasureStruct = reinterpret_cast(lParam); - PDynamicShellEntry pEntry = GetDynamicEntry(pMeasureStruct->itemID); - if (pEntry) - SHForwardContextMenuMsg(pEntry->pCM, uMsg, wParam, lParam, plResult, TRUE); - break; - } - case WM_MENUCHAR : - /* FIXME */ - break; - default: - ERR("Got unknown message:%d\n", uMsg); + SHSetMenuIdInMenuMsg(uMsg, lParam, CmdId - pEntry->iIdCmdFirst); + SHForwardContextMenuMsg(pEntry->pCM, uMsg, wParam, lParam, plResult, TRUE); } + return S_OK; } diff --git a/reactos/dll/win32/shell32/CNewMenu.cpp b/reactos/dll/win32/shell32/CNewMenu.cpp index e8e202e2764..8dd1d86f747 100644 --- a/reactos/dll/win32/shell32/CNewMenu.cpp +++ b/reactos/dll/win32/shell32/CNewMenu.cpp @@ -31,8 +31,7 @@ CNewMenu::CNewMenu() : m_pLinkItem(NULL), m_pSite(NULL), m_hiconFolder(NULL), - m_hiconLink(NULL), - m_idCmdFirst(0) + m_hiconLink(NULL) { } @@ -614,8 +613,6 @@ CNewMenu::QueryContextMenu(HMENU hMenu, MENUITEMINFOW mii; UINT cItems = 0; - m_idCmdFirst = idCmdFirst; - TRACE("%p %p %u %u %u %u\n", this, hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags); @@ -711,7 +708,7 @@ CNewMenu::HandleMenuMsg2(UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *plRes if (!lpdis || lpdis->CtlType != ODT_MENU) break; - DWORD id = LOWORD(lpdis->itemID) - m_idCmdFirst; + DWORD id = LOWORD(lpdis->itemID); HICON hIcon = 0; if (id == 0) hIcon = m_hiconFolder; diff --git a/reactos/dll/win32/shell32/CNewMenu.h b/reactos/dll/win32/shell32/CNewMenu.h index a5bb86b8f82..2d2c52a355a 100644 --- a/reactos/dll/win32/shell32/CNewMenu.h +++ b/reactos/dll/win32/shell32/CNewMenu.h @@ -60,7 +60,6 @@ private: CComPtr m_pSite; HMENU m_hSubMenu; HICON m_hiconFolder, m_hiconLink; - UINT m_idCmdFirst; SHELLNEW_ITEM *LoadItem(LPCWSTR pwszExt); void UnloadItem(SHELLNEW_ITEM *pItem); diff --git a/reactos/dll/win32/shell32/folders/CDesktopFolder.cpp b/reactos/dll/win32/shell32/folders/CDesktopFolder.cpp index 3db5604f5c8..98e5c4fb6cf 100644 --- a/reactos/dll/win32/shell32/folders/CDesktopFolder.cpp +++ b/reactos/dll/win32/shell32/folders/CDesktopFolder.cpp @@ -840,7 +840,7 @@ HRESULT WINAPI CDesktopFolder::CallBack(IShellFolder *psf, HWND hwndOwner, IData /* no data object means no selection */ if (!pdtobj) { - if (uMsg == DFM_INVOKECOMMAND && wParam == DFM_CMD_PROPERTIES) + if (uMsg == DFM_INVOKECOMMAND && wParam == 0) { if (32 >= (UINT)ShellExecuteW(hwndOwner, L"open", L"rundll32.exe shell32.dll,Control_RunDLL desk.cpl", NULL, NULL, SW_SHOWNORMAL)) return E_FAIL; @@ -849,8 +849,10 @@ HRESULT WINAPI CDesktopFolder::CallBack(IShellFolder *psf, HWND hwndOwner, IData else if (uMsg == DFM_MERGECONTEXTMENU) { QCMINFO *pqcminfo = (QCMINFO *)lParam; - _InsertMenuItemW(pqcminfo->hmenu, pqcminfo->indexMenu++, TRUE, 0, MFT_SEPARATOR, NULL, 0); - _InsertMenuItemW(pqcminfo->hmenu, pqcminfo->indexMenu++, TRUE, FCIDM_SHVIEW_PROPERTIES, MFT_STRING, MAKEINTRESOURCEW(IDS_PROPERTIES), MFS_ENABLED); + HMENU hpopup = CreatePopupMenu(); + _InsertMenuItemW(hpopup, 0, TRUE, 0, MFT_STRING, MAKEINTRESOURCEW(IDS_PROPERTIES), MFS_ENABLED); + Shell_MergeMenus(pqcminfo->hmenu, hpopup, pqcminfo->indexMenu++, pqcminfo->idCmdFirst, pqcminfo->idCmdLast, MM_ADDSEPARATOR); + DestroyMenu(hpopup); } return S_OK; diff --git a/reactos/dll/win32/shell32/folders/CFSFolder.cpp b/reactos/dll/win32/shell32/folders/CFSFolder.cpp index 393f7bf87bf..077cc3a7b03 100644 --- a/reactos/dll/win32/shell32/folders/CFSFolder.cpp +++ b/reactos/dll/win32/shell32/folders/CFSFolder.cpp @@ -1500,7 +1500,7 @@ HRESULT WINAPI CFSFolder::CallBack(IShellFolder *psf, HWND hwndOwner, IDataObjec /* no data object means no selection */ if (!pdtobj) { - if (uMsg == DFM_INVOKECOMMAND && wParam == DFM_CMD_PROPERTIES) + if (uMsg == DFM_INVOKECOMMAND && wParam == 0) { PUITEMID_CHILD pidlChild = ILClone(ILFindLastID(pidlRoot)); LPITEMIDLIST pidlParent = ILClone(pidlRoot); @@ -1514,8 +1514,10 @@ HRESULT WINAPI CFSFolder::CallBack(IShellFolder *psf, HWND hwndOwner, IDataObjec else if (uMsg == DFM_MERGECONTEXTMENU) { QCMINFO *pqcminfo = (QCMINFO *)lParam; - _InsertMenuItemW(pqcminfo->hmenu, pqcminfo->indexMenu++, TRUE, 0, MFT_SEPARATOR, NULL, 0); - _InsertMenuItemW(pqcminfo->hmenu, pqcminfo->indexMenu++, TRUE, FCIDM_SHVIEW_PROPERTIES, MFT_STRING, MAKEINTRESOURCEW(IDS_PROPERTIES), MFS_ENABLED); + HMENU hpopup = CreatePopupMenu(); + _InsertMenuItemW(hpopup, 0, TRUE, 0, MFT_STRING, MAKEINTRESOURCEW(IDS_PROPERTIES), MFS_ENABLED); + Shell_MergeMenus(pqcminfo->hmenu, hpopup, pqcminfo->indexMenu++, pqcminfo->idCmdFirst, pqcminfo->idCmdLast, MM_ADDSEPARATOR); + DestroyMenu(hpopup); } return S_OK; diff --git a/reactos/dll/win32/shell32/lang/bg-BG.rc b/reactos/dll/win32/shell32/lang/bg-BG.rc index 6b321738f03..b9c0e50568d 100644 --- a/reactos/dll/win32/shell32/lang/bg-BG.rc +++ b/reactos/dll/win32/shell32/lang/bg-BG.rc @@ -63,17 +63,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "&Обзор", FCIDM_SHVIEW_EXPLORE - MENUITEM "О&тваряне", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "Из&рязване", FCIDM_SHVIEW_CUT - MENUITEM "За&помняне", FCIDM_SHVIEW_COPY + MENUITEM "Из&рязване", IDM_CUT + MENUITEM "За&помняне", IDM_COPY MENUITEM SEPARATOR - MENUITEM "Създаване на &връзка", FCIDM_SHVIEW_CREATELINK - MENUITEM "Из&триване", FCIDM_SHVIEW_DELETE - MENUITEM "Пре&именуване", FCIDM_SHVIEW_RENAME + MENUITEM "Създаване на &връзка", IDM_CREATELINK + MENUITEM "Из&триване", IDM_DELETE + MENUITEM "Пре&именуване", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "&Свойства", FCIDM_SHVIEW_PROPERTIES + MENUITEM "&Свойства", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/ca-ES.rc b/reactos/dll/win32/shell32/lang/ca-ES.rc index aea05899832..0ad4880c240 100644 --- a/reactos/dll/win32/shell32/lang/ca-ES.rc +++ b/reactos/dll/win32/shell32/lang/ca-ES.rc @@ -63,17 +63,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "E&xplore", FCIDM_SHVIEW_EXPLORE - MENUITEM "&Open", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "C&ut", FCIDM_SHVIEW_CUT - MENUITEM "&Copy", FCIDM_SHVIEW_COPY + MENUITEM "C&ut", IDM_CUT + MENUITEM "&Copy", IDM_COPY MENUITEM SEPARATOR - MENUITEM "Create &Link", FCIDM_SHVIEW_CREATELINK - MENUITEM "&Delete", FCIDM_SHVIEW_DELETE - MENUITEM "&Rename", FCIDM_SHVIEW_RENAME + MENUITEM "Create &Link", IDM_CREATELINK + MENUITEM "&Delete", IDM_DELETE + MENUITEM "&Rename", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "&Properties", FCIDM_SHVIEW_PROPERTIES + MENUITEM "&Properties", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/cs-CZ.rc b/reactos/dll/win32/shell32/lang/cs-CZ.rc index db5fc2fa487..5a178f694c4 100644 --- a/reactos/dll/win32/shell32/lang/cs-CZ.rc +++ b/reactos/dll/win32/shell32/lang/cs-CZ.rc @@ -69,17 +69,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "P&rozkoumat", FCIDM_SHVIEW_EXPLORE - MENUITEM "O&tevřít", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "Vyj&mout", FCIDM_SHVIEW_CUT - MENUITEM "&Kopírovat", FCIDM_SHVIEW_COPY + MENUITEM "Vyj&mout", IDM_CUT + MENUITEM "&Kopírovat", IDM_COPY MENUITEM SEPARATOR - MENUITEM "Vytvořit zástupc&e", FCIDM_SHVIEW_CREATELINK - MENUITEM "O&dstranit", FCIDM_SHVIEW_DELETE - MENUITEM "&Přejmenovat", FCIDM_SHVIEW_RENAME + MENUITEM "Vytvořit zástupc&e", IDM_CREATELINK + MENUITEM "O&dstranit", IDM_DELETE + MENUITEM "&Přejmenovat", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "&Vlastnosti", FCIDM_SHVIEW_PROPERTIES + MENUITEM "&Vlastnosti", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/da-DK.rc b/reactos/dll/win32/shell32/lang/da-DK.rc index 99589ed9cf1..50acc12ffc9 100644 --- a/reactos/dll/win32/shell32/lang/da-DK.rc +++ b/reactos/dll/win32/shell32/lang/da-DK.rc @@ -69,17 +69,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "E&xplore", FCIDM_SHVIEW_EXPLORE - MENUITEM "&Åbn", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "K&lip", FCIDM_SHVIEW_CUT - MENUITEM "&Kopiere", FCIDM_SHVIEW_COPY + MENUITEM "K&lip", IDM_CUT + MENUITEM "&Kopiere", IDM_COPY MENUITEM SEPARATOR - MENUITEM "Opret &Link", FCIDM_SHVIEW_CREATELINK - MENUITEM "&Slet", FCIDM_SHVIEW_DELETE - MENUITEM "&Omdøb", FCIDM_SHVIEW_RENAME + MENUITEM "Opret &Link", IDM_CREATELINK + MENUITEM "&Slet", IDM_DELETE + MENUITEM "&Omdøb", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "&Egenskabe", FCIDM_SHVIEW_PROPERTIES + MENUITEM "&Egenskabe", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/de-DE.rc b/reactos/dll/win32/shell32/lang/de-DE.rc index 97ac0ee8b6c..c4447f24508 100644 --- a/reactos/dll/win32/shell32/lang/de-DE.rc +++ b/reactos/dll/win32/shell32/lang/de-DE.rc @@ -63,17 +63,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "E&xplorer", FCIDM_SHVIEW_EXPLORE - MENUITEM "&Öffnen", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "&Ausschneiden", FCIDM_SHVIEW_CUT - MENUITEM "&Kopieren", FCIDM_SHVIEW_COPY + MENUITEM "&Ausschneiden", IDM_CUT + MENUITEM "&Kopieren", IDM_COPY MENUITEM SEPARATOR - MENUITEM "&Verknüpfung erstellen", FCIDM_SHVIEW_CREATELINK - MENUITEM "&Löschen", FCIDM_SHVIEW_DELETE - MENUITEM "&Umbenennen", FCIDM_SHVIEW_RENAME + MENUITEM "&Verknüpfung erstellen", IDM_CREATELINK + MENUITEM "&Löschen", IDM_DELETE + MENUITEM "&Umbenennen", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "&Eigenschaften", FCIDM_SHVIEW_PROPERTIES + MENUITEM "&Eigenschaften", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/el-GR.rc b/reactos/dll/win32/shell32/lang/el-GR.rc index ed24a0818d3..fb643a22056 100644 --- a/reactos/dll/win32/shell32/lang/el-GR.rc +++ b/reactos/dll/win32/shell32/lang/el-GR.rc @@ -63,17 +63,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "&Εξερεύνηση", FCIDM_SHVIEW_EXPLORE - MENUITEM "&Άνοιγμα", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "Α&ποκοπή", FCIDM_SHVIEW_CUT - MENUITEM "Α&ντιγραφή", FCIDM_SHVIEW_COPY + MENUITEM "Α&ποκοπή", IDM_CUT + MENUITEM "Α&ντιγραφή", IDM_COPY MENUITEM SEPARATOR - MENUITEM "Δημιουργία &συντόμευσης", FCIDM_SHVIEW_CREATELINK - MENUITEM "&Διαγραφή", FCIDM_SHVIEW_DELETE - MENUITEM "&Μετονομασία", FCIDM_SHVIEW_RENAME + MENUITEM "Δημιουργία &συντόμευσης", IDM_CREATELINK + MENUITEM "&Διαγραφή", IDM_DELETE + MENUITEM "&Μετονομασία", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "&Ιδιότητες", FCIDM_SHVIEW_PROPERTIES + MENUITEM "&Ιδιότητες", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/en-GB.rc b/reactos/dll/win32/shell32/lang/en-GB.rc index 37b8b6e74eb..add54b89623 100644 --- a/reactos/dll/win32/shell32/lang/en-GB.rc +++ b/reactos/dll/win32/shell32/lang/en-GB.rc @@ -63,17 +63,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "E&xplore", FCIDM_SHVIEW_EXPLORE - MENUITEM "&Open", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "C&ut", FCIDM_SHVIEW_CUT - MENUITEM "&Copy", FCIDM_SHVIEW_COPY + MENUITEM "C&ut", IDM_CUT + MENUITEM "&Copy", IDM_COPY MENUITEM SEPARATOR - MENUITEM "Create &Link", FCIDM_SHVIEW_CREATELINK - MENUITEM "&Delete", FCIDM_SHVIEW_DELETE - MENUITEM "&Rename", FCIDM_SHVIEW_RENAME + MENUITEM "Create &Link", IDM_CREATELINK + MENUITEM "&Delete", IDM_DELETE + MENUITEM "&Rename", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "&Properties", FCIDM_SHVIEW_PROPERTIES + MENUITEM "&Properties", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/en-US.rc b/reactos/dll/win32/shell32/lang/en-US.rc index d3fab80ecdc..37cf3c1f367 100644 --- a/reactos/dll/win32/shell32/lang/en-US.rc +++ b/reactos/dll/win32/shell32/lang/en-US.rc @@ -63,17 +63,16 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "E&xplore", FCIDM_SHVIEW_EXPLORE - MENUITEM "&Open", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "Cu&t", FCIDM_SHVIEW_CUT - MENUITEM "&Copy", FCIDM_SHVIEW_COPY + MENUITEM "Cu&t", IDM_CUT + MENUITEM "&Copy", IDM_COPY + MENUITEM "Paste", IDM_INSERT MENUITEM SEPARATOR - MENUITEM "Create &Link", FCIDM_SHVIEW_CREATELINK - MENUITEM "&Delete", FCIDM_SHVIEW_DELETE - MENUITEM "&Rename", FCIDM_SHVIEW_RENAME + MENUITEM "Create &Link", IDM_CREATELINK + MENUITEM "&Delete", IDM_DELETE + MENUITEM "&Rename", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "&Properties", FCIDM_SHVIEW_PROPERTIES + MENUITEM "&Properties", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/es-ES.rc b/reactos/dll/win32/shell32/lang/es-ES.rc index 23372e18e34..0dcf2f7ce63 100644 --- a/reactos/dll/win32/shell32/lang/es-ES.rc +++ b/reactos/dll/win32/shell32/lang/es-ES.rc @@ -65,17 +65,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "E&xplorar", FCIDM_SHVIEW_EXPLORE - MENUITEM "&Abrir", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "C&ortar", FCIDM_SHVIEW_CUT - MENUITEM "&Copiar", FCIDM_SHVIEW_COPY + MENUITEM "C&ortar", IDM_CUT + MENUITEM "&Copiar", IDM_COPY MENUITEM SEPARATOR - MENUITEM "C&rear acceso directo", FCIDM_SHVIEW_CREATELINK - MENUITEM "&Eliminar", FCIDM_SHVIEW_DELETE - MENUITEM "Re&nombrar", FCIDM_SHVIEW_RENAME + MENUITEM "C&rear acceso directo", IDM_CREATELINK + MENUITEM "&Eliminar", IDM_DELETE + MENUITEM "Re&nombrar", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "&Propiedades", FCIDM_SHVIEW_PROPERTIES + MENUITEM "&Propiedades", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/fi-FI.rc b/reactos/dll/win32/shell32/lang/fi-FI.rc index 960efbfd7b8..4f7f8224d09 100644 --- a/reactos/dll/win32/shell32/lang/fi-FI.rc +++ b/reactos/dll/win32/shell32/lang/fi-FI.rc @@ -63,17 +63,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "&Selaa", FCIDM_SHVIEW_EXPLORE - MENUITEM "&Avaa", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "&Leikkaa", FCIDM_SHVIEW_CUT - MENUITEM "&Kopioi", FCIDM_SHVIEW_COPY + MENUITEM "&Leikkaa", IDM_CUT + MENUITEM "&Kopioi", IDM_COPY MENUITEM SEPARATOR - MENUITEM "Lu&o Linkki", FCIDM_SHVIEW_CREATELINK - MENUITEM "&Poista", FCIDM_SHVIEW_DELETE - MENUITEM "&Nimeä Uudelleen", FCIDM_SHVIEW_RENAME + MENUITEM "Lu&o Linkki", IDM_CREATELINK + MENUITEM "&Poista", IDM_DELETE + MENUITEM "&Nimeä Uudelleen", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "&Ominaisuudet", FCIDM_SHVIEW_PROPERTIES + MENUITEM "&Ominaisuudet", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/fr-FR.rc b/reactos/dll/win32/shell32/lang/fr-FR.rc index db47981645c..57ecdd8eb34 100644 --- a/reactos/dll/win32/shell32/lang/fr-FR.rc +++ b/reactos/dll/win32/shell32/lang/fr-FR.rc @@ -63,17 +63,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "E&xplorer", FCIDM_SHVIEW_EXPLORE - MENUITEM "&Ouvrir", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "C&ouper", FCIDM_SHVIEW_CUT - MENUITEM "&Copier", FCIDM_SHVIEW_COPY + MENUITEM "C&ouper", IDM_CUT + MENUITEM "&Copier", IDM_COPY MENUITEM SEPARATOR - MENUITEM "Créer un &lien", FCIDM_SHVIEW_CREATELINK - MENUITEM "&Supprimer", FCIDM_SHVIEW_DELETE - MENUITEM "&Renommer", FCIDM_SHVIEW_RENAME + MENUITEM "Créer un &lien", IDM_CREATELINK + MENUITEM "&Supprimer", IDM_DELETE + MENUITEM "&Renommer", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "&Propriétés", FCIDM_SHVIEW_PROPERTIES + MENUITEM "&Propriétés", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/he-IL.rc b/reactos/dll/win32/shell32/lang/he-IL.rc index 6d58122a859..ba19acb9694 100644 --- a/reactos/dll/win32/shell32/lang/he-IL.rc +++ b/reactos/dll/win32/shell32/lang/he-IL.rc @@ -63,17 +63,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "סייר", FCIDM_SHVIEW_EXPLORE - MENUITEM "פתח", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "גזור", FCIDM_SHVIEW_CUT - MENUITEM "העתק", FCIDM_SHVIEW_COPY + MENUITEM "גזור", IDM_CUT + MENUITEM "העתק", IDM_COPY MENUITEM SEPARATOR - MENUITEM "צור קישור", FCIDM_SHVIEW_CREATELINK - MENUITEM "מחק", FCIDM_SHVIEW_DELETE - MENUITEM "שנה שם", FCIDM_SHVIEW_RENAME + MENUITEM "צור קישור", IDM_CREATELINK + MENUITEM "מחק", IDM_DELETE + MENUITEM "שנה שם", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "מאפיינים", FCIDM_SHVIEW_PROPERTIES + MENUITEM "מאפיינים", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/hu-HU.rc b/reactos/dll/win32/shell32/lang/hu-HU.rc index 364d20d4344..4d6842d4339 100644 --- a/reactos/dll/win32/shell32/lang/hu-HU.rc +++ b/reactos/dll/win32/shell32/lang/hu-HU.rc @@ -63,17 +63,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "B&öngész", FCIDM_SHVIEW_EXPLORE - MENUITEM "Megnyit", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "Kivágás", FCIDM_SHVIEW_CUT - MENUITEM "Másolás", FCIDM_SHVIEW_COPY + MENUITEM "Kivágás", IDM_CUT + MENUITEM "Másolás", IDM_COPY MENUITEM SEPARATOR - MENUITEM "Parancsikon létrehozása", FCIDM_SHVIEW_CREATELINK - MENUITEM "Törlés", FCIDM_SHVIEW_DELETE - MENUITEM "Átnevezés", FCIDM_SHVIEW_RENAME + MENUITEM "Parancsikon létrehozása", IDM_CREATELINK + MENUITEM "Törlés", IDM_DELETE + MENUITEM "Átnevezés", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "Tulajdonságok", FCIDM_SHVIEW_PROPERTIES + MENUITEM "Tulajdonságok", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/it-IT.rc b/reactos/dll/win32/shell32/lang/it-IT.rc index b2a706e60eb..827047ee248 100644 --- a/reactos/dll/win32/shell32/lang/it-IT.rc +++ b/reactos/dll/win32/shell32/lang/it-IT.rc @@ -63,17 +63,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "E&splora", FCIDM_SHVIEW_EXPLORE - MENUITEM "&Apri", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "&Taglia", FCIDM_SHVIEW_CUT - MENUITEM "&Copia", FCIDM_SHVIEW_COPY + MENUITEM "&Taglia", IDM_CUT + MENUITEM "&Copia", IDM_COPY MENUITEM SEPARATOR - MENUITEM "&Crea Collegamento", FCIDM_SHVIEW_CREATELINK - MENUITEM "&Cancella", FCIDM_SHVIEW_DELETE - MENUITEM "&Rinomina", FCIDM_SHVIEW_RENAME + MENUITEM "&Crea Collegamento", IDM_CREATELINK + MENUITEM "&Cancella", IDM_DELETE + MENUITEM "&Rinomina", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "&Proprietà", FCIDM_SHVIEW_PROPERTIES + MENUITEM "&Proprietà", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/ja-JP.rc b/reactos/dll/win32/shell32/lang/ja-JP.rc index c6865dad79f..a0e78cfd7fe 100644 --- a/reactos/dll/win32/shell32/lang/ja-JP.rc +++ b/reactos/dll/win32/shell32/lang/ja-JP.rc @@ -63,17 +63,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "エクスプローラ(&X)", FCIDM_SHVIEW_EXPLORE - MENUITEM "開く(&O)", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "切り取り(&U)", FCIDM_SHVIEW_CUT - MENUITEM "コピー(&C)", FCIDM_SHVIEW_COPY + MENUITEM "切り取り(&U)", IDM_CUT + MENUITEM "コピー(&C)", IDM_COPY MENUITEM SEPARATOR - MENUITEM "ショートカットの作成(&L)", FCIDM_SHVIEW_CREATELINK - MENUITEM "削除(&D)", FCIDM_SHVIEW_DELETE - MENUITEM "名前の変更(&R)", FCIDM_SHVIEW_RENAME + MENUITEM "ショートカットの作成(&L)", IDM_CREATELINK + MENUITEM "削除(&D)", IDM_DELETE + MENUITEM "名前の変更(&R)", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "プロパティ(&P)", FCIDM_SHVIEW_PROPERTIES + MENUITEM "プロパティ(&P)", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/ko-KR.rc b/reactos/dll/win32/shell32/lang/ko-KR.rc index dac4134470a..c75233b8244 100644 --- a/reactos/dll/win32/shell32/lang/ko-KR.rc +++ b/reactos/dll/win32/shell32/lang/ko-KR.rc @@ -63,17 +63,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "E&xplore", FCIDM_SHVIEW_EXPLORE - MENUITEM "&Open", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "C&ut", FCIDM_SHVIEW_CUT - MENUITEM "&Copy", FCIDM_SHVIEW_COPY + MENUITEM "C&ut", IDM_CUT + MENUITEM "&Copy", IDM_COPY MENUITEM SEPARATOR - MENUITEM "Create &Link", FCIDM_SHVIEW_CREATELINK - MENUITEM "&Delete", FCIDM_SHVIEW_DELETE - MENUITEM "&Rename", FCIDM_SHVIEW_RENAME + MENUITEM "Create &Link", IDM_CREATELINK + MENUITEM "&Delete", IDM_DELETE + MENUITEM "&Rename", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "&Properties", FCIDM_SHVIEW_PROPERTIES + MENUITEM "&Properties", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/nl-NL.rc b/reactos/dll/win32/shell32/lang/nl-NL.rc index 2d56646ac5d..90f1ad2c07b 100644 --- a/reactos/dll/win32/shell32/lang/nl-NL.rc +++ b/reactos/dll/win32/shell32/lang/nl-NL.rc @@ -63,17 +63,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "E&xplore", FCIDM_SHVIEW_EXPLORE - MENUITEM "&Open", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "C&ut", FCIDM_SHVIEW_CUT - MENUITEM "&Copy", FCIDM_SHVIEW_COPY + MENUITEM "C&ut", IDM_CUT + MENUITEM "&Copy", IDM_COPY MENUITEM SEPARATOR - MENUITEM "Create &Link", FCIDM_SHVIEW_CREATELINK - MENUITEM "&Delete", FCIDM_SHVIEW_DELETE - MENUITEM "&Rename", FCIDM_SHVIEW_RENAME + MENUITEM "Create &Link", IDM_CREATELINK + MENUITEM "&Delete", IDM_DELETE + MENUITEM "&Rename", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "&Properties", FCIDM_SHVIEW_PROPERTIES + MENUITEM "&Properties", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/no-NO.rc b/reactos/dll/win32/shell32/lang/no-NO.rc index 71ac4985ddd..9e6f4b2ee53 100644 --- a/reactos/dll/win32/shell32/lang/no-NO.rc +++ b/reactos/dll/win32/shell32/lang/no-NO.rc @@ -63,17 +63,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "&Utforsk", FCIDM_SHVIEW_EXPLORE - MENUITEM "&Åpne", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "Klipp &ut", FCIDM_SHVIEW_CUT - MENUITEM "&Kopier", FCIDM_SHVIEW_COPY + MENUITEM "Klipp &ut", IDM_CUT + MENUITEM "&Kopier", IDM_COPY MENUITEM SEPARATOR - MENUITEM "&Opprett snarvei", FCIDM_SHVIEW_CREATELINK - MENUITEM "&Slett", FCIDM_SHVIEW_DELETE - MENUITEM "&Gi nytt navn", FCIDM_SHVIEW_RENAME + MENUITEM "&Opprett snarvei", IDM_CREATELINK + MENUITEM "&Slett", IDM_DELETE + MENUITEM "&Gi nytt navn", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "Egenska&per", FCIDM_SHVIEW_PROPERTIES + MENUITEM "Egenska&per", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/pl-PL.rc b/reactos/dll/win32/shell32/lang/pl-PL.rc index 34fbdc543ea..e8e0b51b0c2 100644 --- a/reactos/dll/win32/shell32/lang/pl-PL.rc +++ b/reactos/dll/win32/shell32/lang/pl-PL.rc @@ -67,17 +67,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "&Eksploruj", FCIDM_SHVIEW_EXPLORE - MENUITEM "&Otwórz", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "&Wytnij", FCIDM_SHVIEW_CUT - MENUITEM "&Kopiuj", FCIDM_SHVIEW_COPY + MENUITEM "&Wytnij", IDM_CUT + MENUITEM "&Kopiuj", IDM_COPY MENUITEM SEPARATOR - MENUITEM "Utwórz &Skrót", FCIDM_SHVIEW_CREATELINK - MENUITEM "&Usuń", FCIDM_SHVIEW_DELETE - MENUITEM "&Zmień nazwę", FCIDM_SHVIEW_RENAME + MENUITEM "Utwórz &Skrót", IDM_CREATELINK + MENUITEM "&Usuń", IDM_DELETE + MENUITEM "&Zmień nazwę", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "Wł&aściwości", FCIDM_SHVIEW_PROPERTIES + MENUITEM "Wł&aściwości", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/pt-BR.rc b/reactos/dll/win32/shell32/lang/pt-BR.rc index 4beff0ca5aa..2c894a3cad3 100644 --- a/reactos/dll/win32/shell32/lang/pt-BR.rc +++ b/reactos/dll/win32/shell32/lang/pt-BR.rc @@ -63,17 +63,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "&Explorar", FCIDM_SHVIEW_EXPLORE - MENUITEM "A&brir", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "C&ortar", FCIDM_SHVIEW_CUT - MENUITEM "&Copiar", FCIDM_SHVIEW_COPY + MENUITEM "C&ortar", IDM_CUT + MENUITEM "&Copiar", IDM_COPY MENUITEM SEPARATOR - MENUITEM "Criar a&talho", FCIDM_SHVIEW_CREATELINK - MENUITEM "E&xcluir", FCIDM_SHVIEW_DELETE - MENUITEM "&Renomear", FCIDM_SHVIEW_RENAME + MENUITEM "Criar a&talho", IDM_CREATELINK + MENUITEM "E&xcluir", IDM_DELETE + MENUITEM "&Renomear", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "&Propriedades", FCIDM_SHVIEW_PROPERTIES + MENUITEM "&Propriedades", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/pt-PT.rc b/reactos/dll/win32/shell32/lang/pt-PT.rc index ae6db0bff89..5ec0a0b08d9 100644 --- a/reactos/dll/win32/shell32/lang/pt-PT.rc +++ b/reactos/dll/win32/shell32/lang/pt-PT.rc @@ -63,17 +63,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "E&xplorador", FCIDM_SHVIEW_EXPLORE - MENUITEM "&Abrir", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "C&ortar", FCIDM_SHVIEW_CUT - MENUITEM "&Copiar", FCIDM_SHVIEW_COPY + MENUITEM "C&ortar", IDM_CUT + MENUITEM "&Copiar", IDM_COPY MENUITEM SEPARATOR - MENUITEM "Criar &Link", FCIDM_SHVIEW_CREATELINK - MENUITEM "&Apagar", FCIDM_SHVIEW_DELETE - MENUITEM "&Renomear", FCIDM_SHVIEW_RENAME + MENUITEM "Criar &Link", IDM_CREATELINK + MENUITEM "&Apagar", IDM_DELETE + MENUITEM "&Renomear", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "&Propriadades", FCIDM_SHVIEW_PROPERTIES + MENUITEM "&Propriadades", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/ro-RO.rc b/reactos/dll/win32/shell32/lang/ro-RO.rc index e2894c63fe0..031520c78b1 100644 --- a/reactos/dll/win32/shell32/lang/ro-RO.rc +++ b/reactos/dll/win32/shell32/lang/ro-RO.rc @@ -65,17 +65,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "E&xplorează", FCIDM_SHVIEW_EXPLORE - MENUITEM "Desc&hide", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "&Decupează", FCIDM_SHVIEW_CUT - MENUITEM "&Copiază", FCIDM_SHVIEW_COPY + MENUITEM "&Decupează", IDM_CUT + MENUITEM "&Copiază", IDM_COPY MENUITEM SEPARATOR - MENUITEM "Crează sc&urtătură", FCIDM_SHVIEW_CREATELINK - MENUITEM "Șt&erge", FCIDM_SHVIEW_DELETE - MENUITEM "&Redenumește", FCIDM_SHVIEW_RENAME + MENUITEM "Crează sc&urtătură", IDM_CREATELINK + MENUITEM "Șt&erge", IDM_DELETE + MENUITEM "&Redenumește", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "&Proprietăți", FCIDM_SHVIEW_PROPERTIES + MENUITEM "&Proprietăți", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/ru-RU.rc b/reactos/dll/win32/shell32/lang/ru-RU.rc index cae2c420c52..678b8f793ad 100644 --- a/reactos/dll/win32/shell32/lang/ru-RU.rc +++ b/reactos/dll/win32/shell32/lang/ru-RU.rc @@ -65,17 +65,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "&Проводник", FCIDM_SHVIEW_EXPLORE - MENUITEM "&Открыть", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "&Вырезать", FCIDM_SHVIEW_CUT - MENUITEM "&Копировать", FCIDM_SHVIEW_COPY + MENUITEM "&Вырезать", IDM_CUT + MENUITEM "&Копировать", IDM_COPY MENUITEM SEPARATOR - MENUITEM "Создать &ярлык", FCIDM_SHVIEW_CREATELINK - MENUITEM "&Удалить", FCIDM_SHVIEW_DELETE - MENUITEM "Переи&меновать", FCIDM_SHVIEW_RENAME + MENUITEM "Создать &ярлык", IDM_CREATELINK + MENUITEM "&Удалить", IDM_DELETE + MENUITEM "Переи&меновать", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "Сво&йства", FCIDM_SHVIEW_PROPERTIES + MENUITEM "Сво&йства", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/sk-SK.rc b/reactos/dll/win32/shell32/lang/sk-SK.rc index ddcec467fa8..a3485f397b8 100644 --- a/reactos/dll/win32/shell32/lang/sk-SK.rc +++ b/reactos/dll/win32/shell32/lang/sk-SK.rc @@ -63,17 +63,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "&Preskúmať", FCIDM_SHVIEW_EXPLORE - MENUITEM "&Otvoriť", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "&Vystrihnúť", FCIDM_SHVIEW_CUT - MENUITEM "&Kopírovať", FCIDM_SHVIEW_COPY + MENUITEM "&Vystrihnúť", IDM_CUT + MENUITEM "&Kopírovať", IDM_COPY MENUITEM SEPARATOR - MENUITEM "Vytvoriť o&dkaz", FCIDM_SHVIEW_CREATELINK - MENUITEM "&Odstrániť", FCIDM_SHVIEW_DELETE - MENUITEM "Pre&menovať", FCIDM_SHVIEW_RENAME + MENUITEM "Vytvoriť o&dkaz", IDM_CREATELINK + MENUITEM "&Odstrániť", IDM_DELETE + MENUITEM "Pre&menovať", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "Vl&astnosti", FCIDM_SHVIEW_PROPERTIES + MENUITEM "Vl&astnosti", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/sl-SI.rc b/reactos/dll/win32/shell32/lang/sl-SI.rc index 99621dc3b01..65be36e0a95 100644 --- a/reactos/dll/win32/shell32/lang/sl-SI.rc +++ b/reactos/dll/win32/shell32/lang/sl-SI.rc @@ -63,17 +63,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "E&xplore", FCIDM_SHVIEW_EXPLORE - MENUITEM "&Open", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "C&ut", FCIDM_SHVIEW_CUT - MENUITEM "&Copy", FCIDM_SHVIEW_COPY + MENUITEM "C&ut", IDM_CUT + MENUITEM "&Copy", IDM_COPY MENUITEM SEPARATOR - MENUITEM "Create &Link", FCIDM_SHVIEW_CREATELINK - MENUITEM "&Delete", FCIDM_SHVIEW_DELETE - MENUITEM "&Rename", FCIDM_SHVIEW_RENAME + MENUITEM "Create &Link", IDM_CREATELINK + MENUITEM "&Delete", IDM_DELETE + MENUITEM "&Rename", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "&Properties", FCIDM_SHVIEW_PROPERTIES + MENUITEM "&Properties", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/sq-AL.rc b/reactos/dll/win32/shell32/lang/sq-AL.rc index a8d487c324e..da1b8b60a83 100644 --- a/reactos/dll/win32/shell32/lang/sq-AL.rc +++ b/reactos/dll/win32/shell32/lang/sq-AL.rc @@ -67,17 +67,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "E&xplorues", FCIDM_SHVIEW_EXPLORE - MENUITEM "&Hap", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "Prej", FCIDM_SHVIEW_CUT - MENUITEM "&Kopjo", FCIDM_SHVIEW_COPY + MENUITEM "Prej", IDM_CUT + MENUITEM "&Kopjo", IDM_COPY MENUITEM SEPARATOR - MENUITEM "Krijo &Lidhje", FCIDM_SHVIEW_CREATELINK - MENUITEM "&Fshi", FCIDM_SHVIEW_DELETE - MENUITEM "&Riemërto", FCIDM_SHVIEW_RENAME + MENUITEM "Krijo &Lidhje", IDM_CREATELINK + MENUITEM "&Fshi", IDM_DELETE + MENUITEM "&Riemërto", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "&Cilësime", FCIDM_SHVIEW_PROPERTIES + MENUITEM "&Cilësime", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/sv-SE.rc b/reactos/dll/win32/shell32/lang/sv-SE.rc index 70679538c02..449f75a8ece 100644 --- a/reactos/dll/win32/shell32/lang/sv-SE.rc +++ b/reactos/dll/win32/shell32/lang/sv-SE.rc @@ -63,17 +63,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "U&tforska", FCIDM_SHVIEW_EXPLORE - MENUITEM "&Öppna", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "K&lipp ut", FCIDM_SHVIEW_CUT - MENUITEM "&Kopiera", FCIDM_SHVIEW_COPY + MENUITEM "K&lipp ut", IDM_CUT + MENUITEM "&Kopiera", IDM_COPY MENUITEM SEPARATOR - MENUITEM "Skapa &genväg", FCIDM_SHVIEW_CREATELINK - MENUITEM "&Ta bort", FCIDM_SHVIEW_DELETE - MENUITEM "&Byt namn", FCIDM_SHVIEW_RENAME + MENUITEM "Skapa &genväg", IDM_CREATELINK + MENUITEM "&Ta bort", IDM_DELETE + MENUITEM "&Byt namn", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "&Egenskaper", FCIDM_SHVIEW_PROPERTIES + MENUITEM "&Egenskaper", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/tr-TR.rc b/reactos/dll/win32/shell32/lang/tr-TR.rc index 6d982e376e3..c8c7bc3cb3e 100644 --- a/reactos/dll/win32/shell32/lang/tr-TR.rc +++ b/reactos/dll/win32/shell32/lang/tr-TR.rc @@ -65,17 +65,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "A&raştır", FCIDM_SHVIEW_EXPLORE - MENUITEM "&Aç", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "&Kes", FCIDM_SHVIEW_CUT - MENUITEM "&Çoğalt", FCIDM_SHVIEW_COPY + MENUITEM "&Kes", IDM_CUT + MENUITEM "&Çoğalt", IDM_COPY MENUITEM SEPARATOR - MENUITEM "K&ısayol Oluştur", FCIDM_SHVIEW_CREATELINK - MENUITEM "&Sil", FCIDM_SHVIEW_DELETE - MENUITEM "&Yeniden Adlandır", FCIDM_SHVIEW_RENAME + MENUITEM "K&ısayol Oluştur", IDM_CREATELINK + MENUITEM "&Sil", IDM_DELETE + MENUITEM "&Yeniden Adlandır", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "&Husûsîyetler", FCIDM_SHVIEW_PROPERTIES + MENUITEM "&Husûsîyetler", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/uk-UA.rc b/reactos/dll/win32/shell32/lang/uk-UA.rc index 0096411b3fe..91da7e5713d 100644 --- a/reactos/dll/win32/shell32/lang/uk-UA.rc +++ b/reactos/dll/win32/shell32/lang/uk-UA.rc @@ -63,17 +63,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "&Провідник", FCIDM_SHVIEW_EXPLORE - MENUITEM "В&ідкрити", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "&Вирізати", FCIDM_SHVIEW_CUT - MENUITEM "&Копіювати", FCIDM_SHVIEW_COPY + MENUITEM "&Вирізати", IDM_CUT + MENUITEM "&Копіювати", IDM_COPY MENUITEM SEPARATOR - MENUITEM "Створити &ярлик", FCIDM_SHVIEW_CREATELINK - MENUITEM "В&идалити", FCIDM_SHVIEW_DELETE - MENUITEM "Перей&менувати", FCIDM_SHVIEW_RENAME + MENUITEM "Створити &ярлик", IDM_CREATELINK + MENUITEM "В&идалити", IDM_DELETE + MENUITEM "Перей&менувати", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "В&ластивості", FCIDM_SHVIEW_PROPERTIES + MENUITEM "В&ластивості", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/zh-CN.rc b/reactos/dll/win32/shell32/lang/zh-CN.rc index 27cda4db17c..db6caa83f98 100644 --- a/reactos/dll/win32/shell32/lang/zh-CN.rc +++ b/reactos/dll/win32/shell32/lang/zh-CN.rc @@ -72,17 +72,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "浏览(&X)", FCIDM_SHVIEW_EXPLORE - MENUITEM "打开(&O)", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "剪切(&U)", FCIDM_SHVIEW_CUT - MENUITEM "复制(&C)", FCIDM_SHVIEW_COPY + MENUITEM "剪切(&U)", IDM_CUT + MENUITEM "复制(&C)", IDM_COPY MENUITEM SEPARATOR - MENUITEM "创建快捷方式(&L)", FCIDM_SHVIEW_CREATELINK - MENUITEM "删除(&D)", FCIDM_SHVIEW_DELETE - MENUITEM "重命名(&R)", FCIDM_SHVIEW_RENAME + MENUITEM "创建快捷方式(&L)", IDM_CREATELINK + MENUITEM "删除(&D)", IDM_DELETE + MENUITEM "重命名(&R)", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "属性(&P)", FCIDM_SHVIEW_PROPERTIES + MENUITEM "属性(&P)", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/lang/zh-TW.rc b/reactos/dll/win32/shell32/lang/zh-TW.rc index 858b8a3e9de..217037a327c 100644 --- a/reactos/dll/win32/shell32/lang/zh-TW.rc +++ b/reactos/dll/win32/shell32/lang/zh-TW.rc @@ -71,17 +71,15 @@ MENU_SHV_FILE MENU BEGIN POPUP "" BEGIN - MENUITEM "E&xplore", FCIDM_SHVIEW_EXPLORE - MENUITEM "&Open", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR - MENUITEM "C&ut", FCIDM_SHVIEW_CUT - MENUITEM "&Copy", FCIDM_SHVIEW_COPY + MENUITEM "C&ut", IDM_CUT + MENUITEM "&Copy", IDM_COPY MENUITEM SEPARATOR - MENUITEM "Create &Link", FCIDM_SHVIEW_CREATELINK - MENUITEM "&Delete", FCIDM_SHVIEW_DELETE - MENUITEM "&Rename", FCIDM_SHVIEW_RENAME + MENUITEM "Create &Link", IDM_CREATELINK + MENUITEM "&Delete", IDM_DELETE + MENUITEM "&Rename", IDM_RENAME MENUITEM SEPARATOR - MENUITEM "&Properties", FCIDM_SHVIEW_PROPERTIES + MENUITEM "&Properties", IDM_PROPERTIES END END diff --git a/reactos/dll/win32/shell32/shresdef.h b/reactos/dll/win32/shell32/shresdef.h index 37a418bef1f..61da35a4ddd 100644 --- a/reactos/dll/win32/shell32/shresdef.h +++ b/reactos/dll/win32/shell32/shresdef.h @@ -658,6 +658,14 @@ #define FCIDM_TB_REPORTVIEW 0xA004 #define FCIDM_TB_DESKTOP 0xA005 /* FIXME */ +#define IDM_CUT (FCIDM_SHVIEW_CUT - 0x7000) +#define IDM_COPY (FCIDM_SHVIEW_COPY - 0x7000) +#define IDM_INSERT (FCIDM_SHVIEW_INSERT - 0x7000) +#define IDM_CREATELINK (FCIDM_SHVIEW_CREATELINK - 0x7000) +#define IDM_DELETE (FCIDM_SHVIEW_DELETE - 0x7000) +#define IDM_RENAME (FCIDM_SHVIEW_RENAME - 0x7000) +#define IDM_PROPERTIES (FCIDM_SHVIEW_PROPERTIES - 0x7000) + /* Registrar scripts (RGS) */ #define IDR_ADMINFOLDERSHORTCUT 128 #define IDR_CONTROLPANEL 130