📄 favoritemenu.h
字号:
#include "ExplorerMenu.h"
#pragma once
// Function object
template <class _MainFrame>
struct __Function_OpenAllFiles : public std::unary_function<const CString&, void>
{
_MainFrame* __pMainFrame;
__Function_OpenAllFiles(_MainFrame& _m) : __pMainFrame(&_m) { }
void operator()(const CString& strFileName)
{
DonutOpenFile(__pMainFrame->m_hWnd, strFileName);
}
};
// Helper
template <class _MainFrame>
void _The_OpenAllFiles(const CString& strFilePath, _MainFrame* __pMainFrame)
{
if (MtlIsDirectoryPath(strFilePath)) {
CLockRedrawMDIClient lock(__pMainFrame->m_hWndMDIClient);
CMDITabCtrl::CLockRedraw lock2(__pMainFrame->m_MDITab);
MtlForEachFile(strFilePath, __Function_OpenAllFiles<_MainFrame>(*__pMainFrame));
}
else {
DonutOpenFile(__pMainFrame->m_hWnd, strFilePath, DonutGetStdOpenFlag());
}
}
/*
template <class _MainFrame>
class CFavoriteMenu : public CExplorerMenuImpl<CFavoriteMenu>
{
public:
_MainFrame* __m_pMainFrame;
CFavoriteMenu(_MainFrame* __pMainFrame, int nInsertPointMenuItemID)
: CExplorerMenuImpl<CFavoriteMenu>(nInsertPointMenuItemID, _T("(empty)"),
0x1001, 0x7530, _T("Open All")),
__m_pMainFrame(__pMainFrame)
{
}
// Overrides
void OnExecute(const CString& strFilePath)
{
ATLTRACE2(atlTraceUser, 4, _T("CFavoriteMenu::OnExecute: %s\n"), strFilePath);
_The_OpenAllFiles(strFilePath, __m_pMainFrame);
}
void OnGetMenuItemText(const CString& strPath)
{
CString str = MtlGetDisplayTextFromPath(strPath);
str = MtlCompactString(str, CFavoritesMenuOption::GetMaxMenuItemTextLength());
return str;
}
};
*/
template <class _MainFrame>
class CFavoriteGroupMenu : public CExplorerMenuImpl<CFavoriteGroupMenu>
{
public:
_MainFrame* __m_pMainFrame;
CFavoriteGroupMenu(_MainFrame* __pMainFrame, int nInsertPointMenuItemID)
: CExplorerMenuImpl<CFavoriteGroupMenu>(nInsertPointMenuItemID, _T("(empty)"),
0x7531, 0x7D00),
__m_pMainFrame(__pMainFrame)
{
RefreshMenu();
}
void OnExecute(const CString& strFilePath)
{
ATLTRACE2(atlTraceUser, 4, _T("CFavoriteMenu::OnExecute: %s\n"), strFilePath);
DonutOpenFile(__m_pMainFrame->m_hWnd, strFilePath);
}
void RefreshMenu()
{
// set up option
SetStyle(0);
m_nMaxMenuItemTextLength = CFavoritesMenuOption::GetMaxMenuItemTextLength();
m_nMaxMenuBreakCount = CFavoritesMenuOption::GetMaxMenuBreakCount();
SetRootDirectoryPath(DonutGetFavoriteGroupFolder());
}
};
template <class _ChildFrame>
class CChildFavoriteMenu : public CFavoritesMenu<CChildFavoriteMenu>
{
public:
_ChildFrame* __m_pChildFrame;
CChildFavoriteMenu(_ChildFrame* __pChildFrame, int nInsertPointMenuItemID)
: CFavoritesMenu<CChildFavoriteMenu>(nInsertPointMenuItemID, _T("(empty)"),
0x012C, 0x7530),
__m_pChildFrame(__pChildFrame)
{
RefreshMenu();
}
// Overrides
void OnExecute(const CString& strFilePath)
{
ATLTRACE2(atlTraceUser, 4, _T("CFavoriteMenu::OnExecute: %s\n"), strFilePath);
CString strFile(strFilePath);
if ( !MtlIsProtocol(strFile, _T("http")) &&
!MtlIsProtocol(strFile, _T("https")) )
{
if (MtlPreOpenFile(strFile))
return;// handled
}
MtlParseIntenetShortcutFile(strFile);
if (strFile == _T("javascript:location.reload()"))
return;
__m_pChildFrame->Navigate2(strFile);
}
void RefreshMenu()
{
// set up option
DWORD dwStyle = CFavoritesMenuOption::GetStyle();
dwStyle &= ~EMS_ADDITIONALMENUITEM;
SetStyle(dwStyle);
m_nMaxMenuItemTextLength = CFavoritesMenuOption::GetMaxMenuItemTextLength();
m_nMaxMenuBreakCount = CFavoritesMenuOption::GetMaxMenuBreakCount();
SetRootDirectoryPath(DonutGetFavoritesFolder());
}
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -