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

📄 mainfrm.cpp

📁 用VC写的浏览器
💻 CPP
📖 第 1 页 / 共 5 页
字号:
{
	TBSTYLE_BUTTON | TBSTYLE_DROPDOWN,
	TBBS_SEPARATOR,
	TBSTYLE_BUTTON | TBSTYLE_DROPDOWN,
	TBSTYLE_BUTTON | TBSTYLE_DROPDOWN,
	TBSTYLE_BUTTON,
	TBSTYLE_BUTTON,
	TBSTYLE_BUTTON,
	TBBS_SEPARATOR,
	TBSTYLE_BUTTON,
	TBSTYLE_BUTTON,
	TBSTYLE_BUTTON,
	TBSTYLE_BUTTON,
	TBSTYLE_BUTTON,
	TBBS_SEPARATOR,
	TBSTYLE_BUTTON | TBSTYLE_DROPDOWN,
	TBSTYLE_BUTTON,
	TBSTYLE_BUTTON | TBSTYLE_DROPDOWN,
	TBSTYLE_BUTTON | TBSTYLE_DROPDOWN,
	TBSTYLE_BUTTON | TBSTYLE_DROPDOWN,
	TBSTYLE_BUTTON | TBSTYLE_DROPDOWN,
	TBSTYLE_BUTTON,
	TBSTYLE_BUTTON | TBSTYLE_DROPDOWN,
	TBSTYLE_BUTTON,
	TBSTYLE_BUTTON | TBSTYLE_DROPDOWN,
	TBSTYLE_BUTTON | TBSTYLE_DROPDOWN,
	TBSTYLE_BUTTON,
	TBBS_SEPARATOR,
	TBSTYLE_BUTTON,
	TBSTYLE_BUTTON | TBSTYLE_DROPDOWN,
	TBSTYLE_BUTTON,
	TBSTYLE_BUTTON | TBSTYLE_DROPDOWN,
	TBSTYLE_BUTTON | TBSTYLE_DROPDOWN,
	TBSTYLE_BUTTON | TBSTYLE_DROPDOWN,
	TBSTYLE_BUTTON,
	TBSTYLE_BUTTON,
	TBSTYLE_BUTTON,
	TBSTYLE_BUTTON,
	TBSTYLE_BUTTON | TBSTYLE_DROPDOWN,
	TBSTYLE_BUTTON | TBSTYLE_DROPDOWN,
	TBSTYLE_BUTTON,
	TBSTYLE_BUTTON,
	TBSTYLE_BUTTON | TBSTYLE_DROPDOWN,
	TBSTYLE_BUTTON | TBSTYLE_DROPDOWN,
	TBSTYLE_BUTTON,
};

UINT g_nToolBarImg[] = 
{
	9,0,0,1,2,3,4,0,5,6,12,23,24,0,25,7,13,8,14,10,11,15,16,17,18,19,0,21,20,22,26,28,27,29,30,31,32,33,34,35,36,37,38,39,
};

UINT g_ToolBarLabel[]=
{
	0,0,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
};

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

CMainFrame::CMainFrame()
{
	// TODO: add member initialization code here
	m_pwndExpObj = NULL;
	m_bFullScreenMode = FALSE;//full screen mode on
	m_bFullScreened = FALSE;//when mouse move, some bars need auto show
	m_bAutoHideMode = FALSE;
	m_bAutoHided = FALSE;
	m_bFavDirty=FALSE;
	m_bMultiLineTab = FALSE;
	m_bmBGPic = NULL;
	m_bNoModemSpeed = TRUE;
	m_bRemPsw = TRUE;
	m_nProtectNum = 0;
	m_nTimerID = 0;
	m_nUpdateTimer = 0;
	m_bRemPsw = TRUE;
	m_nUndoStart = 0;
	m_nUndoEnd = 0;
	m_hResInst = NULL;
	m_nNeedIB = 0;
	m_bIsSecure = m_bLastIsSecure = FALSE;
	m_bAllScroll = FALSE;

	m_bSaveConfig = FALSE;
	m_nWin=0;
	m_nSwitch = 0;
	CString str="yes";
	g_bstrYes = str.AllocSysString();
	m_nScrollWidth = GetSystemMetrics(SM_CXVSCROLL);
	m_nScrollArrowH = GetSystemMetrics(SM_CYVSCROLL);

	m_pCollectDlg = NULL;
	m_pLinkListDlg = NULL;
	m_pMonitor = NULL;
	
	m_bIsOffline = FALSE;//get from register
	m_nPopFiltered = 0;
	m_bAutoPopWin = FALSE;
	LOADSTR(g_strIeProxy ,IDS_IE_PROXY);
	m_nPreLines = 0;//must do this, or tab will OnUpdateTab when start
	m_bNotShowRightMenu = 0;
	//
	m_cTrafficClass[0].SetTrafficType(MFNetTraffic::IncomingTraffic);
	m_cTrafficClass[1].SetTrafficType(MFNetTraffic::OutGoingTraffic);
	m_cTrafficClass[2].SetTrafficType(MFNetTraffic::AllTraffic);
	//
	m_nSearchBarAction = 0;
	m_bShowScriptResult = true;

	//for ndebug add
	m_bAutoRunExternal = 0;
	m_bActiveNewWindow = 0;
	m_bRMouseDrag = 0;
	m_bRMouseGesture = 0;

	//must init to 0, or it will be random 
	m_bIsAutoSave = 0;
	m_pCurView = NULL;
	m_strLastNavUrl.Empty();
	m_nDialogFilterCount = 0;
}

CMainFrame::~CMainFrame()
{
	try{
	m_astrFavoriteFolders.RemoveAll();
	m_ExternalUtilList.RemoveAll();
	m_astrSkins.RemoveAll();
	m_aProxyCategories.RemoveAll();

	if(m_pwndExpObj)
		delete m_pwndExpObj;
	if(m_bmBGPic)
		DeleteObject(m_bmBGPic);
	if(m_nTimerID)
		KillTimer(m_nTimerID);
	if(m_nAnimateIconTimer)
		KillTimer(m_nAnimateIconTimer);
	SysFreeString(g_bstrYes);
	pmf = NULL;
	DestroyMenuData(m_TabMenu.m_hMenu,0);
	DestroyMenuData(m_TrayMenu.m_hMenu,0);
	FREENULL(g_strLngBuf);

	}catch(...){}
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	pmf = this;
    AfxOleInit();
	//
	CImageList img;
	CString str;
	CGreenBrowserApp* app = (CGreenBrowserApp*)AfxGetApp();
	::SetProp(m_hWnd, app->m_pszAppName, (HANDLE)1);
	if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	//create rebar
	if (!m_wndReBar.Create(this,
		RBS_BANDBORDERS | RBS_DBLCLKTOGGLE | RBS_REGISTERDROP | RBS_VARHEIGHT,
		CCS_NODIVIDER | CCS_NOPARENTALIGN |
		WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | WS_VISIBLE | CBRS_TOP)
		)
	{
		return -1;      // fail to create
	}

	m_bLockToolbar = app->GetProfileInt("Settings", "LockToolbar", FALSE);
	m_strSkinName = app->GetProfileString("Settings", "SkinName", "default");
	m_dwFsShow = app->GetProfileInt("Settings", "FullScreenShow", 588);
	m_dwAhShow = app->GetProfileInt("Settings", "AutoHideShow", 588);
	CString filename = app->m_strSkinPath + m_strSkinName + "\\";
	if ( !_FileIsExist(filename) )
		m_strSkinName = "default";

	//create main menu
	CMenuBar& mb = m_wndMenuBar;
	VERIFY(mb.CreateEx(this));
	mb.ModifyStyle(0, TBSTYLE_TRANSPARENT|TBSTYLE_FLAT| TBSTYLE_LIST);
	mb.LoadMenu(IDR_MAINFRAME);
	InitMenuBarImage();
	//menu
	CMenu* pMenu = mb.GetMenu();
	_LoadMenuStringOwnerDraw(pMenu, "MenuMain",&(mb.m_ImgMenu));
	pMenu->Detach();
	//tab menu
	m_bTopTab = app->GetProfileInt("TabStyle", "TabPos", 0);
	ReloadTabMenu();
	//
	m_TrayMenu.LoadMenu(IDR_TRAYMENU);
	_LoadMenuStringOwnerDraw(m_TrayMenu.GetSubMenu(0),"MenuTray", &(mb.m_ImgMenu));

	//sysmenu
	if (!m_SysMenuBar.CreateEx(this))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}
	//load win buttons
	char key[5]="W";
	for(int i=0; i<6; i++)
	{
		itoa(i, key+1, 10);
		m_abWinButtons[i] = app->GetProfileInt("WinButtons", key, 1);
	}
	InitSystemBarImage();
	BuildWinButtons();

	// link and fav menu
	g_bCompactFavBar = app->GetProfileInt("Settings", "CompactFavBar", FALSE);
	m_nMenuWidth = app->GetProfileInt("Settings", "MenuSize", 50);
	m_bDisplayOpenAll = app->GetProfileInt("Settings", "DisplayOpenAll", TRUE);
	m_bDisplayAddFav = app->GetProfileInt("Settings", "DisplayAddFav", TRUE);
	m_bShowHiddenFav = app->GetProfileInt("Settings", "ShowHiddenFav", FALSE);
	g_bSingleMenu = app->GetProfileInt("Settings", "SingleMenu", FALSE);
	m_bUseDefaultFavPath = app->GetProfileInt("Settings", "UseDefaultFavPath", TRUE);
	m_strFavPath = app->GetProfileString("Settings", "FavPath", "");
	m_bUseDefaultLinkPath = app->GetProfileInt("Settings", "UseDefaultLinkPath", TRUE);
	m_strLinkPath = app->GetProfileString("Settings", "LinkPath", "");
	m_bFavShowUrl = app->GetProfileInt("Settings", "FavShowUrl", TRUE);
	//link bar
	if (!m_LinkBar.CreateEx(this))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}
	InitLinkBarImage();	
	m_LinkBar.ModifyStyle(0, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT | TBSTYLE_LIST|TBSTYLE_TOOLTIPS );
	m_LinkBar.SetBarStyle(m_LinkBar.GetBarStyle() |
		CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
	//Favorite bar
	if (!m_FavBar.CreateEx(this))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}
	InitFavBarImage();
	m_FavBar.ModifyStyle(0, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT | TBSTYLE_LIST|TBSTYLE_TOOLTIPS );
	m_FavBar.SetBarStyle(m_FavBar.GetBarStyle() |
		CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
	//
	InitFavorites();
	
	//Tool Bar
	if (!m_wndToolBar.CreateEx(this))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}
	m_wndToolBar.ModifyStyle(0, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT |TBSTYLE_TOOLTIPS );
	//m_wndToolBar.ModifyStyleEx(0, WS_EX_TOOLWINDOW);
	m_wndToolBar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
	// Create and set the hot toolbar image list.
	m_bSmallToolBar = app->GetProfileInt("Settings", "SmallToolbar",0);
	m_nTextLabel = app->GetProfileInt("Settings", "TextLabel", 0);
	m_bColorIcon = app->GetProfileInt("Settings", "ColorIcon", TRUE);
	InitToolBar();

	//AddressBar
	m_bShowToolbarLabel = app->GetProfileInt("Settings", "ShowToolbarLabel", TRUE);
	m_bShowAddressBarButton = app->GetProfileInt("Settings", "ShowAddressBarButton", TRUE);
	m_bShowSearchBarButton = app->GetProfileInt("Settings", "ShowSearchBarButton", TRUE);
	m_bComboShowIcon = app->GetProfileInt("Settings", "ComboShowIcon", TRUE);
	if (!m_AddressBar.CreateEx(this))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}
	InitGoImage();
	m_AddressBar.ModifyStyle(0, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT |TBSTYLE_TOOLTIPS );
	m_AddressBar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
	m_AddressBar.SetButtons(NULL, 2);
	m_AddressBar.SetButtonInfo(0, 0, TBBS_SEPARATOR, 0);
	m_AddressBar.SetButtonInfo(1, IDOK, TBSTYLE_BUTTON| TBSTYLE_DROPDOWN,0 );//| TBSTYLE_DROPDOWN, 0);
	CString strTip;
	LOADSTR(strTip ,IDS_GO);
	m_AddressBar.GetToolBarCtrl().GetToolTips()->UpdateTipText(strTip, &m_AddressBar, IDOK);
	m_AddressBar.Init();
	//get the reference to the comboboxex.
	m_wndAddress = m_AddressBar.GetAddressBox();

	//external tool bar
	if (!m_ExternalTool.CreateEx(this))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}
	m_ExternalTool.ModifyStyle(0, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT |TBSTYLE_TOOLTIPS );
	m_ExternalTool.SetBarStyle(m_ExternalTool.GetBarStyle() |
		CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
	//
	SHFILEINFO shFinfo;
	HIMAGELIST hImgList = NULL;
	hImgList = (HIMAGELIST)SHGetFileInfo( "C:\\",
							  0,
							  &shFinfo,
							  sizeof( shFinfo ),
							  SHGFI_SYSICONINDEX | 
							  SHGFI_SMALLICON );
	if ( !hImgList )
		return FALSE;
	m_ExternalTool.SendMessage(TB_SETIMAGELIST, 0, (LPARAM)hImgList);
	//better place here, not flash when delay load config
	CString wp;
	CExternalUtilItem* eui;
	wp = app->GetProfileString("ExUtils", "name1", NULL);
	if(wp == "" || wp.IsEmpty())
	{
	}
	else
	{
		//new format
		char Keyname1[10] = "name", Keyname2[10] = "cmds", Keyname3[10] = "sta", Keyname4[10] = "cls", Keyname5[10] = "run";
		char Keyname11[10] = "para", Keyname12[10] = "path";
		CString cmd,para,path;
		BOOL bstart, bClose,bRun;
		int i=1;
		cmd = app->GetProfileString("ExUtils", "cmds1", NULL);
		para = app->GetProfileString("ExUtils", "para1", NULL);
		path = app->GetProfileString("ExUtils", "path1", NULL);
		bstart = app->GetProfileInt("ExUtils", "sta1", FALSE);
		bClose = app->GetProfileInt("ExUtils", "cls1", bstart);
		bRun = app->GetProfileInt("ExUtils", "run1", FALSE);
		while(wp != "" && !wp.IsEmpty())
		{
			eui = new CExternalUtilItem;
			eui->m_strUtilName = wp;
			eui->m_strUtilCmd = "\""+cmd+"\"";
			eui->m_strUtilPara = para;
			eui->m_strUtilPath = path;
			eui->m_bUtilStart = bstart;
			eui->m_bUtilClose = bClose;
			eui->m_bUtilRun = bRun;
			m_ExternalUtilList.m_UtilList.Add(eui);
			i++;
			itoa(i, Keyname1+4, 10);
			itoa(i, Keyname2+4, 10);
			itoa(i, Keyname11+4, 10);
			itoa(i, Keyname12+4, 10);
			//
			itoa(i, Keyname3+3, 10);
			itoa(i, Keyname4+3, 10);
			itoa(i, Keyname5+3, 10);
			wp = app->GetProfileString("ExUtils", Keyname1, NULL);
			cmd = app->GetProfileString("ExUtils", Keyname2, NULL);
			para = app->GetProfileString("ExUtils", Keyname11, NULL);
			path = app->GetProfileString("ExUtils", Keyname12, NULL);
			bstart = app->GetProfileInt("ExUtils", Keyname3, FALSE);
			bClose = app->GetProfileInt("ExUtils", Keyname4, bstart);
			bRun = app->GetProfileInt("ExUtils", Keyname5, FALSE);
		}
	}
	BuildUtilMenu();
	
	//search bar
	if (!m_SearchBar.CreateEx(this))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}
	m_SearchList.LoadSearchList();//must before init
	m_SearchBar.Init();
	m_wndSearch = &m_SearchBar.m_wndComboBox;
	LoadTypedSearch();
	m_SearchBar.ModifyStyle(0, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT |TBSTYLE_TOOLTIPS );
	m_SearchBar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
	m_SearchBar.InitButton();
	//
	//status bar
	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(g_nIndicators,
		  sizeof(g_nIndicators)/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.SetPaneStyle(0, SBPS_STRETCH|SBPS_NOBORDERS);
	for (i=1 ; i<=3; i++)
		m_wndStatusBar.SetPaneStyle(i, SBPS_NORMAL|SBPS_NOBORDERS);
		
	UINT sbstyle, sbID;
	m_wndStatusBar.GetPaneInfo(3, sbID, sbstyle, m_nBaseWidth);
	m_wndStatusBar.SetPaneText(3, "");
	m_wndStatusBar.SetPaneInfo(2, ID_INDICATOR_TOOLS , SBPS_NORMAL|SBPS_NOBORDERS, m_wndStatusBar.m_nToolbarWidth-4);

	m_hNormalIcon = (HICON)LoadImage(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_NORMAL),IMAGE_ICON,16,16,LR_DEFAULTCOLOR);
	m_hSecuIcon   = (HICON)LoadImage(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_SECU),IMAGE_ICON,16,16,LR_DEFAULTCOLOR);
	m_wndStatusBar.GetStatusBarCtrl().SetIcon(0, m_hNormalIcon);

	if(app->GetProfileInt("Bands", "Status", 1)==0)
		m_wndStatusBar.ShowWindow(SW_HIDE);

	//create bottom bar
	if (!m_wndReBar2.Create(this,RBS_BANDBORDERS,WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS| WS_CLIPCHILDREN | CBRS_BOTTOM))
	{
		TRACE0("Failed to create rebar\n");
		return -1;      // fail to create
	}

	m_bMultiLineTab = app->GetProfileInt("Settings", "MultiLineTab", 1);
	m_bAutoTab = app->GetProfileInt("Settings", "AutoTab", 1);
	m_nTabStyle = app->GetProfileInt("TabStyle", "TabStyle", 1);

	CRect rect(0,0,300, TAB_HEIGHT);
	if (m_nTabStyle == 0)

⌨️ 快捷键说明

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