📄 mainfrm.h
字号:
// MainFrm.h : interface of the CMainFrame class
//
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_MAINFRM_H__941B89B2_0DF4_412B_9374_346CE0B2F788__INCLUDED_)
#define AFX_MAINFRM_H__941B89B2_0DF4_412B_9374_346CE0B2F788__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
BOOL CALLBACK HideIeWindowsProc(HWND hwnd, LPARAM lParam)
{
TCHAR szClassName[MAX_PATH];
GetClassName(hwnd, szClassName, MAX_PATH);
if (_tcscmp(szClassName, _T("IEFrame")) == 0)
{
::ShowWindow(hwnd, (BOOL)lParam ? SW_HIDE : SW_SHOW);
}
return TRUE;
}
class CMainFrame : public CFrameWindowImpl<CMainFrame>, public CUpdateUI<CMainFrame>,
public CMessageFilter, public CIdleHandler
{
public:
DECLARE_FRAME_WND_CLASS(NULL, IDR_MAINFRAME)
CSurfHelpView m_view;
CCommandBarCtrl m_CmdBar;
NOTIFYICONDATA m_nid;
BOOL m_bTrayMenuDisplayed;
virtual BOOL PreTranslateMessage(MSG* pMsg)
{
if(CFrameWindowImpl<CMainFrame>::PreTranslateMessage(pMsg))
return TRUE;
return m_view.PreTranslateMessage(pMsg);
}
virtual BOOL OnIdle()
{
UIUpdateToolBar();
return FALSE;
}
BEGIN_MSG_MAP(CMainFrame)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
MESSAGE_HANDLER(WM_QUERYENDSESSION, OnQueryEndSession)
MESSAGE_HANDLER(WM_SIZE, OnSize)
MESSAGE_HANDLER(WM_SYSCOMMAND, OnSysCommand)
MESSAGE_HANDLER(WM_GETMINMAXINFO, OnGetMinMaxInfo)
MESSAGE_HANDLER(WM_HOTKEY, OnHotKey)
MESSAGE_HANDLER(WM_TRAY_NOTIFY, OnTrayNotify)
MESSAGE_HANDLER(WM_ADD_LOG_NOTIFY, OnAddLogNotify)
COMMAND_ID_HANDLER(ID_APP_EXIT, OnFileExit)
COMMAND_ID_HANDLER(ID_HELP, OnHelp)
COMMAND_ID_HANDLER(ID_HIDE_IE, OnHideIE)
COMMAND_ID_HANDLER(ID_SHOW_IE, OnShowIE)
COMMAND_ID_HANDLER(ID_VIEW_TOOLBAR, OnViewToolBar)
COMMAND_ID_HANDLER(ID_VIEW_STATUS_BAR, OnViewStatusBar)
COMMAND_ID_HANDLER(ID_APP_ABOUT, OnAppAbout)
COMMAND_ID_HANDLER(ID_POPUP_MANAGER, OnPopupManager)
COMMAND_ID_HANDLER(ID_DISABLE, OnDisable)
COMMAND_ID_HANDLER(ID_CONFIGURE, OnConfigure)
COMMAND_ID_HANDLER(ID_CLEAR_HISTORY, OnClearHistory)
COMMAND_ID_HANDLER(ID_POPUP_ADD, OnPopupAdd)
COMMAND_ID_HANDLER(ID_POPUP_IMPORT, OnPopupImport)
COMMAND_ID_HANDLER(ID_POPUP_EXPORT, OnPopupExport)
COMMAND_ID_HANDLER(ID_POPUP_SAVE_LOG, OnPopupSaveLog)
CHAIN_MSG_MAP(CUpdateUI<CMainFrame>)
CHAIN_MSG_MAP(CFrameWindowImpl<CMainFrame>)
END_MSG_MAP()
BEGIN_UPDATE_UI_MAP(CMainFrame)
UPDATE_ELEMENT(ID_VIEW_TOOLBAR, UPDUI_MENUPOPUP)
UPDATE_ELEMENT(ID_VIEW_STATUS_BAR, UPDUI_MENUPOPUP)
END_UPDATE_UI_MAP()
LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
LoadWindowPos(g_Global.m_sIniFilePath);
// create command bar window
HWND hWndCmdBar = m_CmdBar.Create(m_hWnd, rcDefault, NULL, ATL_SIMPLE_CMDBAR_PANE_STYLE);
// attach menu
m_CmdBar.AttachMenu(GetMenu());
// load command bar images
m_CmdBar.LoadImages(IDR_TRAY);
// remove old menu
SetMenu(NULL);
// HWND hWndToolBar = CreateSimpleToolBarCtrl(m_hWnd, IDR_MAINFRAME, FALSE, ATL_SIMPLE_TOOLBAR_PANE_STYLE);
CreateSimpleReBar(ATL_SIMPLE_REBAR_NOBORDER_STYLE);
AddSimpleReBarBand(hWndCmdBar);
// AddSimpleReBarBand(hWndToolBar, NULL, TRUE);
CreateSimpleStatusBar();
m_hWndClient = m_view.Create(m_hWnd);
// UIAddToolBar(hWndToolBar);
// UISetCheck(ID_VIEW_TOOLBAR, 1);
UISetCheck(ID_VIEW_STATUS_BAR, 1);
// register object for message filtering and idle updates
CMessageLoop* pLoop = _Module.GetMessageLoop();
ATLASSERT(pLoop != NULL);
pLoop->AddMessageFilter(this);
pLoop->AddIdleHandler(this);
UpdateLayout();//add by ZXL
//set title
CString sTitle;
sTitle.LoadString(IDS_POPUP_MANAGER);
SetWindowText(sTitle);
//read configuration
g_Global.ReadConfig(g_Global.m_sIniFilePath);
g_Global.ReadFilter(g_Global.m_sFilterFilePath);
m_view.m_PopupManagerTab.m_TitleDlg.FillFilterList();
m_view.m_PopupManagerTab.m_UrlDlg.FillFilterList();
//install tray icon
InstallTrayIcon(FALSE, !g_Global.m_bDisable);
m_bTrayMenuDisplayed = FALSE;
//register hot key
CString sMsg;
if (! RegisterHotKey(m_hWnd, HOTKEY_DISABLE, MOD_WIN, g_Global.m_nKeyDisable))
{
sMsg.LoadString(IDS_REG_DISABLE_KEY_FAILED);
::MessageBox(NULL, sMsg, APP_NAME, MB_OK | MB_ICONERROR);
}
if (! RegisterHotKey(m_hWnd, HOTKEY_HIDE_IE, MOD_WIN, g_Global.m_nKeyHideIE))
{
sMsg.LoadString(IDS_REG_HIDE_IE_KEY_FAILED);
::MessageBox(NULL, sMsg, APP_NAME, MB_OK | MB_ICONERROR);
}
if (! RegisterHotKey(m_hWnd, HOTKEY_SHOW_IE, MOD_WIN | MOD_SHIFT, g_Global.m_nKeyShowIE))
{
sMsg.LoadString(IDS_REG_SHOW_IE_KEY_FAILED);
::MessageBox(NULL, sMsg, APP_NAME, MB_OK | MB_ICONERROR);
}
return 0;
}
LRESULT OnDestroy(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
m_nid.uFlags = 0;
Shell_NotifyIcon(NIM_DELETE, &m_nid);
SaveWindowPos(g_Global.m_sIniFilePath);
g_Global.WriteConfig(g_Global.m_sIniFilePath);
g_Global.WriteFilter(g_Global.m_sFilterFilePath);
if (g_Global.m_bClearAtExit == TRUE && g_Global.m_bDisable == FALSE)
{
g_Global.ClearHistory();
}
// unregister message filtering and idle updates
CMessageLoop* pLoop = _Module.GetMessageLoop();
ATLASSERT(pLoop != NULL);
pLoop->RemoveMessageFilter(this);
pLoop->RemoveIdleHandler(this);
// if UI is the last thread, no need to wait
if(_Module.GetLockCount() == 1)
{
_Module.m_dwTimeOut = 0L;
_Module.m_dwPause = 0L;
}
_Module.Unlock();
return 0;
}
LRESULT OnQueryEndSession(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
SaveWindowPos(g_Global.m_sIniFilePath);
g_Global.WriteConfig(g_Global.m_sIniFilePath);
g_Global.WriteFilter(g_Global.m_sFilterFilePath);
if (g_Global.m_bClearAtExit == TRUE && g_Global.m_bDisable == FALSE)
{
g_Global.ClearHistory();
}
return TRUE;
}
LRESULT OnFileExit(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
PostMessage(WM_CLOSE);
return 0;
}
LRESULT OnViewToolBar(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
static BOOL bVisible = TRUE; // initially visible
bVisible = !bVisible;
CReBarCtrl rebar = m_hWndToolBar;
int nBandIndex = rebar.IdToIndex(ATL_IDW_BAND_FIRST + 1); // toolbar is 2nd added band
rebar.ShowBand(nBandIndex, bVisible);
UISetCheck(ID_VIEW_TOOLBAR, bVisible);
UpdateLayout();
return 0;
}
LRESULT OnViewStatusBar(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
BOOL bVisible = !::IsWindowVisible(m_hWndStatusBar);
::ShowWindow(m_hWndStatusBar, bVisible ? SW_SHOWNOACTIVATE : SW_HIDE);
UISetCheck(ID_VIEW_STATUS_BAR, bVisible);
UpdateLayout();
return 0;
}
LRESULT OnAppAbout(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
CAboutDlg dlg;
dlg.DoModal();
return 0;
}
LRESULT OnTrayNotify(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/)
{
CMenu menu;
CMenuHandle menuPopup;
switch(lParam)
{
case WM_RBUTTONUP:
if (!m_bTrayMenuDisplayed)
{
m_bTrayMenuDisplayed = TRUE;
menu.LoadMenu(IDR_TRAY);
menuPopup = menu.GetSubMenu(0);
SetMenuDefaultItem(menuPopup, ID_POPUP_MANAGER, FALSE);
if (!g_Global.m_bDisable)
{
CheckMenuItem(menuPopup, ID_DISABLE, MF_BYCOMMAND);
}
POINT point;
GetCursorPos(&point);
m_CmdBar.TrackPopupMenu(menuPopup, 0, point.x, point.y);
m_bTrayMenuDisplayed = FALSE;
}
break;
case WM_LBUTTONDBLCLK:
SetForegroundWindow(m_hWnd);
ShowWindow(SW_SHOWNORMAL);
break;
default:
break;
}
return 0;
}
LRESULT OnAddLogNotify(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/)
{
m_view.m_PopupManagerTab.AddLog(lParam);
return 0;
}
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
if(wParam == SIZE_MINIMIZED)
{
ShowWindow(SW_HIDE);
}
else
{
bHandled = FALSE;
}
return 0;
}
LRESULT OnSysCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
if (wParam == SC_CLOSE)
{
ShowWindow(SW_HIDE);
return 0;
}
return DefWindowProc(uMsg, wParam, lParam);
}
LRESULT OnGetMinMaxInfo(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
MINMAXINFO* pMMI = (MINMAXINFO*)lParam;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -