📄 myloadmenu.cpp
字号:
{
CMenu menu;
menu.Attach(hMenu);
CMenu subMenu;
subMenu.Attach(menu.GetSubMenu(0));
while (subMenu.GetItemCount() > 0)
subMenu.RemoveItem(subMenu.GetItemCount() - 1, MF_BYPOSITION);
int i;
for (i = 0; i < 10; i++)
{
UString s = LangString(IDS_BOOKMARK, 0x03000720);
s += L" ";
wchar_t c = (wchar_t)(L'0' + i);
s += c;
s += L"\tAlt+Shift+";
s += c;
subMenu.AppendItem(MF_STRING, kSetBookmarkMenuID + i, s);
}
while (menu.GetItemCount() > 2)
menu.RemoveItem(menu.GetItemCount() - 1, MF_BYPOSITION);
for (i = 0; i < 10; i++)
{
UString path = g_App.AppState.FastFolders.GetString(i);
const int kMaxSize = 100;
const int kFirstPartSize = kMaxSize / 2;
if (path.Length() > kMaxSize)
{
path = path.Left(kFirstPartSize) + UString(L" ... ") +
path.Right(kMaxSize - kFirstPartSize);
}
UString s = path;
if (s.IsEmpty())
s = L"-";
s += L"\tAlt+";
s += (wchar_t)(L'0' + i);
menu.AppendItem(MF_STRING, kOpenBookmarkMenuID + i, s);
}
}
}
/*
It doesn't help
void OnMenuUnActivating(HWND hWnd, HMENU hMenu, int id)
{
if (::GetSubMenu(::GetMenu(g_HWND), 0) != hMenu)
return;
// g_App.GetFocusedPanel()._contextMenu.Release();
}
void OnMenuUnActivating(HWND hWnd)
{
}
*/
void LoadFileMenu(HMENU hMenu, int startPos, bool programMenu,
bool isFsFolder, int numItems, bool allAreFiles)
{
{
CMenu srcMenu;
srcMenu.Attach(::GetSubMenu(::GetMenu(g_HWND), 0));
if ((HMENU)g_FileMenu == 0)
{
g_FileMenu.CreatePopup();
CopyMenu(srcMenu, g_FileMenu);
}
}
CMenu destMenu;
destMenu.Attach(hMenu);
for (int i = 0; i < g_FileMenu.GetItemCount(); i++)
{
CMenuItem item;
item.fMask = MIIM_STATE | MIIM_ID | Get_fMaskForFTypeAndString();
item.fType = MFT_STRING;
if (g_FileMenu.GetItem(i, true, item))
{
if (!programMenu)
if (item.wID == IDCLOSE)
continue;
bool isOneFsFile = (isFsFolder && numItems == 1 && allAreFiles);
if ((item.wID == IDM_FILE_SPLIT || item.wID == IDM_FILE_COMBINE) && !isOneFsFile)
item.fState |= MFS_DISABLED;
/*
bool createItem = (item.wID == IDM_CREATE_FOLDER || item.wID == IDM_CREATE_FILE);
if (forFileMode)
{
if (createItem)
continue;
}
else
{
if (!createItem)
continue;
}
*/
if (destMenu.InsertItem(startPos, true, item))
startPos++;
}
}
while (destMenu.GetItemCount() > 0)
{
CMenuItem item;
item.fMask = MIIM_TYPE;
item.fType = 0;
// item.dwTypeData = 0;
int lastIndex = destMenu.GetItemCount() - 1;
if (!destMenu.GetItem(lastIndex, true, item))
break;
if(item.fType != MFT_SEPARATOR)
break;
if (!destMenu.RemoveItem(lastIndex, MF_BYPOSITION))
break;
}
}
bool ExecuteFileCommand(int id)
{
if (id >= kPluginMenuStartID)
{
g_App.GetFocusedPanel().InvokePluginCommand(id);
g_App.GetFocusedPanel()._sevenZipContextMenu.Release();
g_App.GetFocusedPanel()._systemContextMenu.Release();
return true;
}
switch (id)
{
// File
case IDM_FILE_OPEN:
g_App.OpenItem();
break;
case IDM_FILE_OPEN_INSIDE:
g_App.OpenItemInside();
break;
case IDM_FILE_OPEN_OUTSIDE:
g_App.OpenItemOutside();
break;
case IDM_FILE_VIEW:
break;
case IDM_FILE_EDIT:
g_App.EditItem();
break;
case IDM_RENAME:
g_App.Rename();
break;
case IDM_COPY_TO:
g_App.CopyTo();
break;
case IDM_MOVE_TO:
g_App.MoveTo();
break;
case IDM_DELETE:
{
bool shift = (::GetKeyState(VK_SHIFT) & 0x8000) != 0;
g_App.Delete(!shift);
break;
}
case IDM_FILE_CRC:
g_App.CalculateCrc();
break;
case IDM_FILE_SPLIT:
g_App.Split();
break;
case IDM_FILE_COMBINE:
g_App.Combine();
break;
case IDM_FILE_PROPERTIES:
g_App.Properties();
break;
case IDM_FILE_COMMENT:
g_App.Comment();
break;
case IDM_CREATE_FOLDER:
g_App.CreateFolder();
break;
case IDM_CREATE_FILE:
g_App.CreateFile();
break;
default:
return false;
}
return true;
}
bool OnMenuCommand(HWND hWnd, int id)
{
if (ExecuteFileCommand(id))
return true;
switch (id)
{
// File
case IDCLOSE:
SendMessage(hWnd, WM_ACTIVATE, MAKEWPARAM(WA_INACTIVE, 0), (LPARAM)hWnd);
SendMessage (hWnd, WM_CLOSE, 0, 0);
break;
// Edit
case IDM_EDIT_CUT:
g_App.EditCut();
break;
case IDM_EDIT_COPY:
g_App.EditCopy();
break;
case IDM_EDIT_PASTE:
g_App.EditPaste();
break;
case IDM_SELECT_ALL:
g_App.SelectAll(true);
g_App.RefreshStatusBar();
break;
case IDM_DESELECT_ALL:
g_App.SelectAll(false);
g_App.RefreshStatusBar();
break;
case IDM_INVERT_SELECTION:
g_App.InvertSelection();
g_App.RefreshStatusBar();
break;
case IDM_SELECT:
g_App.SelectSpec(true);
g_App.RefreshStatusBar();
break;
case IDM_DESELECT:
g_App.SelectSpec(false);
g_App.RefreshStatusBar();
break;
case IDM_SELECT_BY_TYPE:
g_App.SelectByType(true);
g_App.RefreshStatusBar();
break;
case IDM_DESELECT_BY_TYPE:
g_App.SelectByType(false);
g_App.RefreshStatusBar();
break;
//View
case IDM_VIEW_LARGE_ICONS:
case IDM_VIEW_SMALL_ICONS:
case IDM_VIEW_LIST:
case IDM_VIEW_DETAILS:
{
UINT index = id - IDM_VIEW_LARGE_ICONS;
if (index < 4)
{
g_App.SetListViewMode(index);
/*
CMenu menu;
menu.Attach(::GetSubMenu(::GetMenu(hWnd), kViewMenuIndex));
menu.CheckRadioItem(IDM_VIEW_LARGE_ICONS, IDM_VIEW_DETAILS,
id, MF_BYCOMMAND);
*/
}
break;
}
case IDM_VIEW_ARANGE_BY_NAME:
{
g_App.SortItemsWithPropID(kpidName);
break;
}
case IDM_VIEW_ARANGE_BY_TYPE:
{
g_App.SortItemsWithPropID(kpidExtension);
break;
}
case IDM_VIEW_ARANGE_BY_DATE:
{
g_App.SortItemsWithPropID(kpidMTime);
break;
}
case IDM_VIEW_ARANGE_BY_SIZE:
{
g_App.SortItemsWithPropID(kpidSize);
break;
}
case IDM_VIEW_ARANGE_NO_SORT:
{
g_App.SortItemsWithPropID(kpidNoProperty);
break;
}
case IDM_OPEN_ROOT_FOLDER:
g_App.OpenRootFolder();
break;
case IDM_OPEN_PARENT_FOLDER:
g_App.OpenParentFolder();
break;
case IDM_FOLDERS_HISTORY:
g_App.FoldersHistory();
break;
case IDM_VIEW_REFRESH:
g_App.RefreshView();
break;
case IDM_VIEW_FLAT_VIEW:
g_App.ChangeFlatMode();
break;
case IDM_VIEW_TWO_PANELS:
g_App.SwitchOnOffOnePanel();
break;
case IDM_VIEW_STANDARD_TOOLBAR:
g_App.SwitchStandardToolbar();
break;
case IDM_VIEW_ARCHIVE_TOOLBAR:
g_App.SwitchArchiveToolbar();
break;
case IDM_VIEW_TOOLBARS_SHOW_BUTTONS_TEXT:
g_App.SwitchButtonsLables();
break;
case IDM_VIEW_TOOLBARS_LARGE_BUTTONS:
g_App.SwitchLargeButtons();
break;
// Tools
case IDM_OPTIONS:
OptionsDialog(hWnd, g_hInstance);
break;
case IDM_BENCHMARK:
Benchmark();
break;
// Help
case IDM_HELP_CONTENTS:
ShowHelpWindow(NULL, kFMHelpTopic);
break;
case IDM_ABOUT:
{
CAboutDialog dialog;
dialog.Create(hWnd);
break;
}
default:
{
if (id >= kOpenBookmarkMenuID && id <= kOpenBookmarkMenuID + 9)
{
g_App.OpenBookmark(id - kOpenBookmarkMenuID);
return true;
}
else if (id >= kSetBookmarkMenuID && id <= kSetBookmarkMenuID + 9)
{
g_App.SetBookmark(id - kSetBookmarkMenuID);
return true;
}
return false;
}
}
return true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -