📄 donuttoolbar.h
字号:
#pragma once
#include "StdToolBarCtrl.h"
class CDonutToolBar :
public CStdToolBarCtrlImpl<CDonutToolBar>,
public CChevronHandler<CDonutToolBar>
{
public:
DECLARE_WND_SUPERCLASS(_T("Donut_ToolBar"), GetWndClassName())
// Data members;
CMenuHandle m_menuFavorites;
// Ctor
void DonutToolBar_SetFavoritesMenu(HMENU hMenu)
{
m_menuFavorites = hMenu;
}
// Message map and handelrs
BEGIN_MSG_MAP(CDonutToolBar)
REFLECTED_NOTIFY_CODE_HANDLER(RBN_CHEVRONPUSHED, OnChevronPushed)
CHAIN_MSG_MAP(CStdToolBarCtrlImpl<CDonutToolBar>)
END_MSG_MAP()
LRESULT OnChevronPushed(int /*idCtrl*/, LPNMHDR pnmh, BOOL& bHandled)
{
ATLASSERT( ((LPNMREBARCHEVRON)pnmh)->wID == GetDlgCtrlID() );
if (!PushChevron(pnmh, GetTopLevelParent())) {
bHandled = FALSE;
return 1;
}
return 0;
}
// Implemantation
HMENU _GetDropDownMenu(int nCmdID, bool& bDestroy, bool& bSubMenu)
{
CMenuHandle menu;// handle
bDestroy = bSubMenu = true;
switch (nCmdID) {
case ID_FILE_NEW:
menu.LoadMenu(IDR_FILE_NEW);
break;
case ID_VIEW_FONT_SIZE:
menu.LoadMenu(IDR_VIEW_FONT_SIZE);
break;
case ID_FILE_NEW_CLIPBOARD2:
menu.LoadMenu(IDR_FILE_NEW_CLIPBOARD);
break;
case ID_VIEW_BACK:
menu.LoadMenu(IDR_VIEW_BACK);
break;
case ID_VIEW_FORWARD:
menu.LoadMenu(IDR_VIEW_FORWARD);
break;
case ID_FAVORITES_DROPDOWN:
menu = m_menuFavorites;
bDestroy = bSubMenu = false;// it's not mine.
break;
default:
ATLASSERT(FALSE);
}
return menu.m_hMenu;
}
// Overrides
HMENU ChevronHandler_OnGetChevronMenu(int nCmdID, HMENU& hMenuDestroy)
{
// if (nCmdID == ID_VIEW_FAVEXPBAR)
// return NULL;// give up.
bool bDestroy, bSubMenu;
CMenuHandle menu = _GetDropDownMenu(nCmdID, bDestroy, bSubMenu);
if (bDestroy)
hMenuDestroy = menu.m_hMenu;
if (bSubMenu)
return menu.GetSubMenu(0);
else
return menu;
}
void Chevronhandler_OnCleanupChevronMenu()
{
// m_menuFavorites.RemoveMenu(ID_FAVORITES_DROPDOWN, MF_BYCOMMAND);
}
LRESULT StdToolBar_OnDropDown(int nCmdID)
{
bool bDestroy, bSubMenu;
CMenuHandle menu = _GetDropDownMenu(nCmdID, bDestroy, bSubMenu);
if (menu.m_hMenu) {
if (bSubMenu)
StdToolBar_TrackDropDownMenu(nCmdID, menu.GetSubMenu(0), GetTopLevelParent());
else
StdToolBar_TrackDropDownMenu(nCmdID, menu, GetTopLevelParent());
}
if (bDestroy)
menu.DestroyMenu();
return TBDDRET_DEFAULT;
}
void StdToolBar_WriteProfile()
{
CIniSection pr;
pr.Open(_szIniFileName, _T("ToolBar"));
MtlWriteProfileTBBtns(pr, m_hWnd);
pr.SetValue(m_dwStdToolBarStyle, _T("Std_ToolBar_Style"));
}
void StdToolBar_GetProfile()
{
CIniSection pr;
pr.Open(_szIniFileName, _T("ToolBar"));
CSimpleArray<int> arrBmpIndex;
if (MtlGetProfileTBBtns(pr, arrBmpIndex))
StdToolBar_InitButtons(_begin(arrBmpIndex), _end(arrBmpIndex));
else
StdToolBar_InitButtons(_begin(m_arrBmpDefaultIndex), _end(m_arrBmpDefaultIndex));
DWORD dwStyle = STD_TBSTYLE_DEFAULT;
pr.QueryValue(dwStyle, _T("Std_ToolBar_Style"));
StdToolBar_SetStyle(dwStyle);
}
// Methods
HWND DonutToolBar_Create(HWND hWndParent)
{
STD_TBBUTTON btns[] = {
{ID_FILE_NEW, BTNS_BUTTON|BTNS_DROPDOWN},
{ID_VIEW_BACK, BTNS_BUTTON|BTNS_STD_LIST|BTNS_DROPDOWN},
{ID_VIEW_FORWARD, BTNS_BUTTON|BTNS_STD_LIST|BTNS_DROPDOWN},
{ID_VIEW_STOP, BTNS_BUTTON},
{ID_VIEW_REFRESH, BTNS_BUTTON},
{ID_VIEW_HOME, BTNS_BUTTON},
{ID_FILE_NEW_CLIPBOARD2, BTNS_BUTTON|BTNS_DROPDOWN},
{ID_VIEW_STOP_ALL, BTNS_BUTTON},
{ID_VIEW_REFRESH_ALL, BTNS_BUTTON},
{ID_VIEW_FAVEXPBAR, BTNS_BUTTON|BTNS_STD_LIST/*|BTNS_DROPDOWN*/},
{ID_VIEW_CLIPBOARDBAR, BTNS_BUTTON|BTNS_STD_LIST},
{ID_FILE_PRINT, BTNS_BUTTON},
{ID_VIEW_FULLSCREEN, BTNS_BUTTON},
{ID_WINDOW_CASCADE, BTNS_BUTTON},
{ID_WINDOW_TILE_HORZ, BTNS_BUTTON},
{ID_WINDOW_TILE_VERT, BTNS_BUTTON},
{ID_VIEW_TABBAR_MULTI, BTNS_BUTTON},
{ID_TAB_LEFT, BTNS_BUTTON},
{ID_TAB_RIGHT, BTNS_BUTTON},
{ID_EDIT_CUT, BTNS_BUTTON},
{ID_EDIT_COPY, BTNS_BUTTON},
{ID_EDIT_PASTE, BTNS_BUTTON},
{ID_VIEW_FONT_SIZE, BTNS_BUTTON|BTNS_DROPDOWN|BTNS_WHOLEDROPDOWN},
{ID_DOCHOSTUI_OPENNEWWIN, BTNS_BUTTON},
{ID_DLCTL_DLIMAGES, BTNS_BUTTON},
{ID_DLCTL_SCRIPTS, BTNS_BUTTON},
{ID_DLCTL_JAVA, BTNS_BUTTON},
{ID_DLCTL_RUNACTIVEXCTLS, BTNS_BUTTON},
{ID_DLCTL_DLACTIVEXCTLS, BTNS_BUTTON},
{ID_DLCTL_BGSOUNDS, BTNS_BUTTON},
{ID_DLCTL_VIDEOS, BTNS_BUTTON},
{ID_FILE_CLOSE, BTNS_BUTTON},
{ID_WINDOW_CLOSE_ALL, BTNS_BUTTON},
{ID_WINDOW_CLOSE_EXCEPT,BTNS_BUTTON},
{ID_MAIN_EX_NEWWINDOW, BTNS_BUTTON},
{ID_MAIN_EX_NOACTIVATE, BTNS_BUTTON},
{ID_MAIN_EX_NOACTIVATE_NEWWIN, BTNS_BUTTON},
{ID_REGISTER_AS_BROWSER, BTNS_BUTTON},
{ID_FAVORITES_DROPDOWN, BTNS_BUTTON|BTNS_STD_LIST|BTNS_DROPDOWN|BTNS_WHOLEDROPDOWN},
{ID_EDIT_OPEN_SELECTED_REF, BTNS_BUTTON},
{ID_EDIT_OPEN_SELECTED_TEXT, BTNS_BUTTON},
};
int defaultBtns[] = { 0, 1, 2, 3, 4, 5, -1, 9, 10, -1, 11 };
StdToolBar_Init(btns, btns + _countof(btns),
defaultBtns, defaultBtns + _countof(defaultBtns),
std::make_pair(IDB_MAINFRAME_TOOLBAR, IDB_MAINFRAME_TOOLBAR_HOT),
std::make_pair(IDB_MAINFRAME_LARGE_TOOLBAR, IDB_MAINFRAME_LARGE_TOOLBAR_HOT));
return StdToolBar_Create(hWndParent,
ATL_SIMPLE_TOOLBAR_PANE_STYLE| CCS_ADJUSTABLE | TBSTYLE_ALTDRAG,
TBSTYLE_EX_MIXEDBUTTONS | TBSTYLE_EX_DRAWDDARROWS | TBSTYLE_EX_HIDECLIPPEDBUTTONS);
}
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -