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

📄 mainfrm.h

📁 一个管理ie的软件
💻 H
📖 第 1 页 / 共 2 页
字号:
// 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 + -