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

📄 mainfrm.cpp

📁 一个多窗口的浏览器的程序benbrowse
💻 CPP
📖 第 1 页 / 共 5 页
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "benbenBrowser.h"

#include "benbenBrowserDoc.h"
#include "MainFrm.h"
#include "benbenBrowserView.h"
#include "ChildFrm.h"


#include <initguid.h>

#include "ExDisp.h"
#include "URLLockDlg.h"
#include <afxpriv.h>
#include <wininet.h>
#include "generaldata.h"
#include "OrganizeURLDlg.h"
#include "SetProxyDlg.h"
#include "OpenUrlDlg.h"
#include  "tlogstg.h"
#include <Mshtmdid.h>


#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////

#ifndef CGID_IWebBrowser
// CGID_WebBrowser: {ED016940-BD5B-11cf-BA4E-00C04FD70816}
DEFINE_GUID(CGID_IWebBrowser,0xED016940L,0xBD5B,0x11cf,0xBA,0x4E,0x00,0xC0,0x4F,0xD7,0x08,0x16);
static const IID IID_ITravelLogStg	= { 0x7EBFDD80, 0xAD18, 0x11d3, {0xA4,0xC5,0x00,0xC0,0x4F,0x72,0xD6,0xB8}};
#endif


/////////////////////Auto-complete edit and combo, without Platform SDK



////////////////////////////////////

IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWndEx)

BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWndEx)
//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()
	ON_COMMAND(ID_OFFLINE_FILE, OnOfflineFile)
	ON_UPDATE_COMMAND_UI(ID_OFFLINE_FILE, OnUpdateOfflineFile)
	ON_WM_INITMENUPOPUP()
	ON_COMMAND(ID_OPTION_TOOL, OnOptionTool)
	ON_COMMAND(ID_SOURCECODE_VIEW, OnSourcecodeView)
	ON_COMMAND(ID_FIND_EDIT, OnFindEdit)
	ON_COMMAND(ID_ADDTOLOCKLIST_TOOL, OnAddtolocklistTool)
	ON_COMMAND(ID_ORGANIZE_FAVORITES, OnOrganizeFavorites)
	ON_WM_TIMER()
	ON_COMMAND(ID_VIEW_LINKBAR, OnViewLinkbar)
	ON_UPDATE_COMMAND_UI(ID_VIEW_LINKBAR, OnUpdateViewLinkbar)
	ON_COMMAND(ID_NOREFRESH_VIEW, OnNorefreshView)
	ON_UPDATE_COMMAND_UI(ID_NOREFRESH_VIEW, OnUpdateNorefreshView)
	ON_COMMAND(ID_AUTOREFRESH5_VIEW, OnAutorefresh5View)
	ON_UPDATE_COMMAND_UI(ID_AUTOREFRESH5_VIEW, OnUpdateAutorefresh5View)
	ON_COMMAND(ID_AUTOREFRESH15_VIEW, OnAutorefresh15View)
	ON_UPDATE_COMMAND_UI(ID_AUTOREFRESH15_VIEW, OnUpdateAutorefresh15View)
	ON_COMMAND(ID_AUTOREFRESH30_VIEW, OnAutorefresh30View)
	ON_UPDATE_COMMAND_UI(ID_AUTOREFRESH30_VIEW, OnUpdateAutorefresh30View)
	ON_COMMAND(ID_AUTOREFRESH1M_VIEW, OnAutorefresh1mView)
	ON_UPDATE_COMMAND_UI(ID_AUTOREFRESH1M_VIEW, OnUpdateAutorefresh1mView)
	ON_COMMAND(ID_AUTOREFRESH5M_VIEW, OnAutorefresh5mView)
	ON_UPDATE_COMMAND_UI(ID_AUTOREFRESH5M_VIEW, OnUpdateAutorefresh5mView)
	ON_COMMAND(ID_AUTOREFRESH10M_VIEW, OnAutorefresh10mView)
	ON_UPDATE_COMMAND_UI(ID_AUTOREFRESH10M_VIEW, OnUpdateAutorefresh10mView)
	ON_COMMAND(ID_AUTOREFRESHONLY_VIEW, OnAutorefreshonlyView)
	ON_UPDATE_COMMAND_UI(ID_AUTOREFRESHONLY_VIEW, OnUpdateAutorefreshonlyView)
	ON_COMMAND(ID_DOWNLOADIMAGE_TOOL, OnDownloadimageTool)
	ON_UPDATE_COMMAND_UI(ID_DOWNLOADIMAGE_TOOL, OnUpdateDownloadimageTool)
	ON_COMMAND(ID_DOWNLOADANIMATION_TOOL, OnDownloadanimationTool)
	ON_UPDATE_COMMAND_UI(ID_DOWNLOADANIMATION_TOOL, OnUpdateDownloadanimationTool)
	ON_COMMAND(ID_DOWNLOADSOUND_TOOL, OnDownloadsoundTool)
	ON_UPDATE_COMMAND_UI(ID_DOWNLOADSOUND_TOOL, OnUpdateDownloadsoundTool)
	ON_COMMAND(ID_DOWNLOADVIDEO_TOOL, OnDownloadvideoTool)
	ON_UPDATE_COMMAND_UI(ID_DOWNLOADVIDEO_TOOL, OnUpdateDownloadvideoTool)
	ON_COMMAND(ID_MODIFY_URLLOCK, OnModifyUrllock)
	ON_COMMAND(ID_MAILLINK_FILE, OnMaillinkFile)
	ON_WM_CLOSE()
	ON_COMMAND(ID_SYNCHRONIZE_TOOL, OnSynchronizeTool)
	ON_COMMAND(ID_VIEW_COOLBAR, OnViewCoolbar)
	ON_UPDATE_COMMAND_UI(ID_VIEW_COOLBAR, OnUpdateViewCoolbar)
	ON_COMMAND(ID_ORGANIZESEARCH_TOOL, OnOrganizesearchTool)
	ON_COMMAND(ID_SETPROXY_TOOL, OnSetproxyTool)
	ON_COMMAND(ID_ORGANIZETRANSLATION_TOOL, OnOrganizetranslationTool)
	ON_COMMAND(ID_FILE_NEW_BLANK, OnFileNewBlank)
	ON_COMMAND(ID_FILE_NEW_HOME, OnFileNewHome)
	ON_COMMAND(ID_FILE_NEW_CURRENT, OnFileNewCurrent)
	ON_COMMAND(ID_FILE_NEW_CLIPBOARD, OnFileNewClipboard)
	ON_COMMAND(ID_ADDTOFAVORITES_FAVORITE, OnAddtofavoritesFavorite)
	ON_COMMAND(ID_FILE_OPENRECENT, OnFileOpenrecent)
	ON_COMMAND(ID_WINDOW_CLOSE_ALLNOCUR, OnWindowCloseAllnocur)
	ON_COMMAND(ID_VIEW_ADDRESSBAR, OnViewAddressbar)
	ON_UPDATE_COMMAND_UI(ID_VIEW_ADDRESSBAR, OnUpdateViewAddressbar)
	ON_COMMAND(ID_VIEW_REFRESH_ALL, OnViewRefreshAll)
	ON_COMMAND(ID_VIEW_STOP_ALL, OnViewStopAll)
	ON_COMMAND(ID_WINDOW_CLOSE_ALL_BEN, OnWindowCloseAll)
	ON_COMMAND(ID_FILE_OPENURL, OnFileOpenurl)
	ON_COMMAND(ID_IMPROTFAVORITE_TOOL, OnImprotfavoriteTool)
	ON_COMMAND(ID_EXPORTFAVORITE_TOOL, OnExportfavoriteTool)
	ON_COMMAND(ID_READMAIL_TOOL, OnReadmailTool)
	ON_COMMAND(ID_WRITEMAIL_TOOL, OnWritemailTool)
	ON_COMMAND(ID_READNEWS_TOOL, OnReadnewsTool)
	ON_COMMAND(ID_ADDRESSBAR_FOCUS, OnAddressbarFocus)
	ON_COMMAND(ID_ADDRESSBAR_DROPDOWN, OnAddressbarDropdown)
	ON_COMMAND(ID_QUICKSEARCH_TOOL, OnQuicksearchTool)
	ON_COMMAND(ID_ALIASES_TOOL, OnAliasesTool)
	ON_COMMAND(ID_ADDRESSTOOL_TOOL, OnAddresstoolTool)
	ON_COMMAND(ID_VIEW_FAVORITE_BAR, OnViewFavoriteBar)
	ON_UPDATE_COMMAND_UI(ID_VIEW_FAVORITE_BAR, OnUpdateViewFavoriteBar)
	ON_COMMAND(ID_SELECTBMP_TOOL, OnSelectbmpTool)
	ON_COMMAND(ID_SHOWBK_TOOL, OnShowbkTool)
	ON_UPDATE_COMMAND_UI(ID_SHOWBK_TOOL, OnUpdateShowbkTool)
	ON_WM_DROPFILES()
	ON_WM_CTLCOLOR()
	ON_COMMAND(ID_VIEW_ACTIVATENEW, OnViewActivatenew)
	ON_UPDATE_COMMAND_UI(ID_VIEW_ACTIVATENEW, OnUpdateViewActivatenew)
	ON_COMMAND(ID_JAVA_SECURITY, OnJavaSecurity)
	ON_UPDATE_COMMAND_UI(ID_JAVA_SECURITY, OnUpdateJavaSecurity)
	ON_COMMAND(ID_ACTIVEX_SECURITY, OnActivexSecurity)
	ON_UPDATE_COMMAND_UI(ID_ACTIVEX_SECURITY, OnUpdateActivexSecurity)
	ON_COMMAND(ID_SCRIPT_SECURITY, OnScriptSecurity)
	ON_UPDATE_COMMAND_UI(ID_SCRIPT_SECURITY, OnUpdateScriptSecurity)
	ON_COMMAND(ID_HELP_MAIL_AUTHOR, OnHelpMailAuthor)
	ON_COMMAND(ID_VIEW_NEWLAST, OnViewNewlast)
	ON_UPDATE_COMMAND_UI(ID_VIEW_NEWLAST, OnUpdateViewNewlast)
	//}}AFX_MSG_MAP
	ON_CBN_SELENDOK(AFX_IDW_TOOLBAR + 1,OnNewAddress)
	ON_COMMAND(IDOK, OnNewAddressEnter)
	ON_NOTIFY(TBN_DROPDOWN, AFX_IDW_TOOLBAR, OnDropDown)
	ON_NOTIFY(TBN_DROPDOWN, ID_VIEW_ADDRESSBAR, OnDropDown)
	ON_COMMAND(ID_FAVORITES_DROPDOWN, OnViewFavoriteBar)
	ON_COMMAND(ID_FONT_DROPDOWN, DoNothing)
	ON_COMMAND_RANGE(0xe00, 0xfff, OnFavorite)
	ON_WM_MEASUREITEM()
	ON_WM_MENUCHAR()
	ON_MESSAGE(WM_SETMESSAGESTRING, OnSetMessageString)	
	ON_COMMAND_RANGE(FIRST_HISTORY_COMMAND, FIRST_HISTORY_COMMAND + HISTORY_LEN - 1, OnHistory)
	ON_COMMAND_RANGE(0x1020, 0x10ff, OnSetNewLanguage)
	ON_COMMAND(ID_PROXY_DROPDOWN, DoNothing)
	ON_COMMAND_RANGE(0x1100, 0x11FF, OnTranslation)
	ON_COMMAND_RANGE(0x100B, 0x101F, OnMail)
	ON_MESSAGE(WM_HOTKEY, OnHotKey) 
	ON_COMMAND(ID_DOWNLOAD_CONTROL, DoNothing)
END_MESSAGE_MAP()
/*
0xE00   0xFFF     favorite
0x1000  0x100A    history (back foward)   	
0x100B  0x101F	  mail
0x1020  0x10ff    language
0x1100  0x11FF	  translation
*/
static UINT indicators[] =
{
	ID_SEPARATOR,           // status line indicator
		//	ID_INDICATOR_PROGRESS,  // show downloaded progress 
		ID_INDICATOR_CAPS,
		ID_INDICATOR_NUM,
		ID_INDICATOR_SCRL,
};

/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction

CMainFrame::CMainFrame()
{
	// TODO: add member initialization code here
	/*	NONCLIENTMETRICS ncm;
	memset(&ncm, 0, sizeof(NONCLIENTMETRICS));
	ncm.cbSize = sizeof(NONCLIENTMETRICS);
	VERIFY(::SystemParametersInfo(SPI_GETNONCLIENTMETRICS,
	sizeof(NONCLIENTMETRICS), &ncm, 0));
	m_Font.CreateFontIndirect(&ncm.lfMessageFont);
	*/
	m_autorefreshtype=0;
	m_activeonly=FALSE;
	m_showimage=FALSE;
	m_showvideo=FALSE;
	m_showanimation=FALSE;
	m_showsound=FALSE;
	m_languageName="";//AfxGetApp()->GetProfileString("Settings","Language","English");
	m_local_pass=0;//AfxGetApp()->GetProfileInt("Settings","Proxy",0);
	m_hbmBack=NULL;
	m_beshowBK=FALSE;
	m_CurrentProxy="";
	m_beVisibleNewWin=FALSE;
	m_dwdownloadProperty=0;
	m_beAddLast=TRUE;
	m_coolbarStyle=TCS_DOWNBEN;
	GetMultimediaSettings();
	LoadBenbroState();
	GetLangulagesExist();
	BuildMenuTranslation(m_language_file_name);
	m_astrFavoriteURLs.RemoveAll();
	//m_strFavDirOpen="GlobalOpenAllFavSubItem";
	GetText("MenuFavoriteOpenAllFavSubItem",m_strFavDirOpen,menu_item_text);
	m_behidden=FALSE;
}

CMainFrame::~CMainFrame()
{
	try
	{
		for(int i=0;i<m_menuitem.GetSize();i++)
		{
			delete m_menuitem [i];
		}
		m_menuitem.RemoveAll();
		
		for(i=0;i<m_menuitemhint.GetSize();i++)
		{
			delete m_menuitemhint [i];
		}
		m_menuitemhint.RemoveAll();
		for(i=0;i<m_globalitem.GetSize();i++)
		{
			delete m_globalitem [i];
		}
		m_globalitem.RemoveAll();
		
		for(i=0;i<m_contextmenuitem.GetSize();i++)
		{
			delete m_contextmenuitem [i];
		}
		m_contextmenuitem.RemoveAll();
		
		for(i=0;i<m_FavDirItem.GetSize();i++)
		{
			delete m_FavDirItem [i];
		}
		m_FavDirItem.RemoveAll();
		
		for(i=0;i<m_linkbarItem.GetSize();i++)
		{
			delete m_linkbarItem [i];
		}
		m_linkbarItem.RemoveAll();
		
		m_searchpages.RemoveAll();
		m_astrFavoriteURLs.RemoveAll();
		m_quicksearchpages.RemoveAll();
		m_aliasespages.RemoveAll();
		m_proxylist.RemoveAll();
		m_lockURLlist.RemoveAll();
		if(m_autorefreshtype>0)
			KillTimer(1);
	    if ( m_hbmBack != 0 )
		{
			VERIFY( ::DeleteObject( m_hbmBack));
		}
	}
	catch(...)
	{
	}
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CMDIFrameWndEx::OnCreate(lpCreateStruct) == -1)
		return -1;
	
    if ( !m_wndToolBar.Create( this,
		WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP | CBRS_FLYBY|CBRS_TOOLTIPS ) )
    {
        TRACE0("Failed to create toolbar(s)\n");
        return -1;      // fail to create
    }
    m_wndToolBar.ModifyStyle( 0, CCS_ADJUSTABLE );
	////////
    if ( !m_linkbar.Create( this,
		WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP | CBRS_FLYBY,ID_VIEW_LINKBAR) )
    {
        TRACE0("Failed to create toolbar(s)\n");
        return -1;      // fail to create
    }
    m_linkbar.ModifyStyle( 0, CCS_ADJUSTABLE );
	//////////
	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		sizeof(indicators)/sizeof(UINT)))
	{
		TRACE0("Failed to create status bar\n");
		return -1;      // fail to create
	}
	m_wndStatusBar.SetProgressBarWidth(80);
	m_wndStatusBar.SetRange(0,100);
	m_wndStatusBar.SetStep(1);
	m_wndStatusBar.SetPaneStyle(ID_SEPARATOR, SBPS_STRETCH);
	
	if (!m_AddressBar.CreateEx(this,TBSTYLE_FLAT | TBSTYLE_TRANSPARENT | TBSTYLE_TOOLTIPS,
		WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP | CBRS_FLYBY, CRect( 0, 0, 0, 0 ),ID_VIEW_ADDRESSBAR))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}
	
	m_AddressBar.ModifyStyle(0, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT |TBSTYLE_TOOLTIPS );
	m_AddressBar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
	m_AddressBar.SetButtons(NULL,4);
	m_AddressBar.SetButtonInfo(0, 0, TBBS_SEPARATOR, 0);
	
	if(!m_wndAnimate.Create(WS_CHILD | WS_VISIBLE, CRect(0, 0, 0,0), this, ID_VIEW_ADDRESSBAR+1)||
		!m_wndAnimate.Open(IDR_TITLE_AVI))
	{
		TRACE0("Failed to create CAnimateCtrl\n");
		return -1;      // fail to create;
	}
	
	CString straddressbar="ConMeuAddressbar",strnewaddressbar;
	CString strlinkbar="ConMeuLinkbar",strnewlinkbar;
	GetText(straddressbar,strnewaddressbar,conmeu_item_text);
	strnewaddressbar.Remove('&');
	GetText(strlinkbar,strnewlinkbar,conmeu_item_text);
	strnewlinkbar.Remove('&');
	
	if (!m_wndReBar.AddBar(&m_wndAnimate,NULL, NULL,RBBS_FIXEDSIZE | RBBS_FIXEDBMP)||
		!m_wndReBar.AddBar(&m_wndToolBar, NULL,NULL, RBBS_GRIPPERALWAYS|RBBS_FIXEDBMP|RBBS_BREAK,_T("ConMeuToolbar"),false)||
		!m_wndReBar.AddBar(&m_AddressBar,strnewaddressbar, NULL, RBBS_GRIPPERALWAYS|RBBS_FIXEDBMP | RBBS_BREAK,_T("ConMeuAddressbar"),false)||
		!m_wndReBar.AddBar(&m_linkbar,strnewlinkbar, NULL, RBBS_GRIPPERALWAYS|RBBS_FIXEDBMP|RBBS_BREAK,_T("ConMeuLinkbar"),false)
		)
    {
        TRACE0("Failed to create rebar\n");
        return -1;      // fail to create
    }
	
	m_AddressBar.Init();
	CImageList img;
	img.Create(16, 16, ILC_COLOR8|ILC_MASK, 1, 1);
	HBITMAP hbmp = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP5));
	ImageList_AddMasked(img.GetSafeHandle(), hbmp, RGB(255,0,255));
	m_AddressBar.GetToolBarCtrl().SetImageList(&img);
	img.Detach();
	CString strgo="GlobalGo";
	GetText("GlobalGo",strgo,global_item_text);
	m_AddressBar.SetButtonInfo(1, IDOK, TBSTYLE_BUTTON|TBSTYLE_DROPDOWN , 6);
	m_AddressBar.GetToolBarCtrl().GetToolTips()->UpdateTipText(strgo, &m_AddressBar, IDOK);
	m_AddressBar.SetButtonInfo(2, ID_FILE_CLOSE, TBSTYLE_BUTTON , 2);
	m_AddressBar.SetButtonInfo(3, ID_WINDOW_CLOSE_ALL_BEN, TBSTYLE_BUTTON|TBSTYLE_DROPDOWN, 3);
	
	m_wndToolBar.Init();
	m_AddressCom=m_AddressBar.GetAddressBox();
	LoadHistoryUrls();
	CEdit * pMyEdit = m_AddressCom->GetEditCtrl();
	if (pMyEdit)
	{
		// enable auto complete for m_myCombo
		SetupForAutoComplete(pMyEdit->m_hWnd, SHACF_URLHISTORY);
	}
    m_wndToolBar.LoadState( _T("Settings") );
    m_wndReBar.LoadState( _T("Settings") );
	
	////////////////////////////////////////////////////////
	// Install the tab view here
	EnableDocking(CBRS_ALIGN_ANY);
	VERIFY(m_MDIClient.SubclassMDIClient(this, &m_wndViewManager));
	m_wndViewManager.SetWin2000(FALSE);
	m_wndViewManager.SetAddLast(m_beAddLast);
//	GetMultimediaSettings();
	InstallCollBar();
	
	LoadSearchPages("");
	
	if(m_strBmpFilename.GetLength()>0)
	{
		//LoadBKbmp();
		SetBkGroundBmp(m_beshowBK);
	}
	SetInternetProxyben();

	RegisterHotKey (m_hWnd, 0, MOD_ALT|MOD_SHIFT , 192);
	return 0;
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CMDIFrameWndEx::PreCreateWindow(cs) )
		return FALSE;
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs
	
	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
	CMDIFrameWndEx::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const
{
	CMDIFrameWndEx::Dump(dc);
}

#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers

void CMainFrame::OnNewAddress()
{
	CString str;
	try
	{
		int index=m_AddressBar.GetAddressBox()->GetCurSel();
		if(index>=0)
			m_AddressBar.GetSelText(index, str);
		else
			return;
		NavigateToUrl(str,0,TRUE);
	}
	catch(...)
	{
	}
}
void CMainFrame::OnNewAddressEnter()
{
	CString str;
	int type=0;
	CString URL;
	try
	{
		m_AddressCom->GetEditCtrl()->GetWindowText(str);
		{
			if(GetQuickSearchURL(str,URL))
			{
				str=URL;
			}
			else if(GetAliasesURL(str, URL))
			{
				str=URL;
			}
			else
			{
				unsigned char kbuf[256];
				::GetKeyboardState(kbuf);
				if(kbuf[VK_SHIFT]&128&&kbuf[VK_CONTROL]&128)
					str="www."+str+".net";
				else if(kbuf[VK_MENU]&128||kbuf[VK_CONTROL]&128)//open in the current window
					type=1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -