[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
This commit is contained in:
Giannis Adamopoulos 2017-08-14 15:25:58 +00:00
parent 9748e8bde3
commit 551d8fa312
39 changed files with 438 additions and 465 deletions

View file

@ -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<CDefView, CWindow, CControlWinTraits>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
@ -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)

View file

@ -20,6 +20,9 @@ class CDefViewBckgrndMenu :
CComPtr<IShellFolder> m_psf;
CComPtr<IContextMenu> 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

View file

@ -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<DRAWITEMSTRUCT*>(lParam);
*CmdId = pDrawStruct->itemID;
return S_OK;
}
else if (uMsg == WM_MEASUREITEM)
{
MEASUREITEMSTRUCT* pMeasureStruct = reinterpret_cast<MEASUREITEMSTRUCT*>(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<DRAWITEMSTRUCT*>(lParam);
pDrawStruct->itemID = CmdId;
return S_OK;
}
else if (uMsg == WM_MEASUREITEM)
{
MEASUREITEMSTRUCT* pMeasureStruct = reinterpret_cast<MEASUREITEMSTRUCT*>(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:
{
DRAWITEMSTRUCT* pDrawStruct = reinterpret_cast<DRAWITEMSTRUCT*>(lParam);
PDynamicShellEntry pEntry = GetDynamicEntry(pDrawStruct->itemID);
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)
SHForwardContextMenuMsg(pEntry->pCM, uMsg, wParam, lParam, plResult, TRUE);
break;
}
case WM_MEASUREITEM:
{
MEASUREITEMSTRUCT* pMeasureStruct = reinterpret_cast<MEASUREITEMSTRUCT*>(lParam);
PDynamicShellEntry pEntry = GetDynamicEntry(pMeasureStruct->itemID);
if (pEntry)
SHSetMenuIdInMenuMsg(uMsg, lParam, CmdId - pEntry->iIdCmdFirst);
SHForwardContextMenuMsg(pEntry->pCM, uMsg, wParam, lParam, plResult, TRUE);
break;
}
case WM_MENUCHAR :
/* FIXME */
break;
default:
ERR("Got unknown message:%d\n", uMsg);
}
return S_OK;
}

View file

@ -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;

View file

@ -60,7 +60,6 @@ private:
CComPtr<IUnknown> m_pSite;
HMENU m_hSubMenu;
HICON m_hiconFolder, m_hiconLink;
UINT m_idCmdFirst;
SHELLNEW_ITEM *LoadItem(LPCWSTR pwszExt);
void UnloadItem(SHELLNEW_ITEM *pItem);

View file

@ -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;

View file

@ -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;

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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