⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 favoritemenu.h

📁 一个使用wtl写的完整的多窗口浏览器
💻 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 + -