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

📄 mainfrm.cpp

📁 用VC写的浏览器
💻 CPP
📖 第 1 页 / 共 5 页
字号:
					anFavID.Add(nPos);
					++nEndPos;
					nFavs ++;
				}
			}
			else if((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && (m_bShowHiddenFav==1 || (wfd.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN)==0))
			{
				// ignore the current and parent directory entries
				if(lstrcmp(wfd.cFileName, _T(".")) == 0 || lstrcmp(wfd.cFileName, _T("..")) == 0 )//|| lstrcmp(wfd.cFileName, strcha) == 0 || lstrcmp(wfd.cFileName, strcha2) == 0
					continue;
				astrDirs.Add(wfd.cFileName); 
				nLastDir++;	
			}
		}while(FindNextFile(h, &wfd));
		FindClose(h);
	}

	// Now add these items to the menu
	CMenuOrder mo;
	BOOL found;
	int j;
	WORD type;
	if(GetFavoriteFolder(strPath))
	{
		strPath = strPath2.Mid(strPath.GetLength()+1);
		if(mo.LoadMenuOrder(strPath))
		{
			for(int i = 0; i<mo.len; i++)
			{
				str = mo.mois[mo.index[i]].longname;
				type = mo.mois[mo.index[i]].filetype;
				//find in url first
				found = FALSE;
				for(j = 0; j<astrFavorites.GetSize() && !found && (type==0x20 || type==0); j++)
				{
					if(astrFavorites[j].CompareNoCase(str)==0)
					{
						found = TRUE;
						FavMenuAddURL(astrFavorites[j], strPath2, FirstLevel, isLink, pMenu, anFavID[j]);
						astrFavorites[j].Empty();
					}
				}
				for(j = 0; j<astrDirs.GetSize() && !found && (type==0x10 || type==0x14 || type==0); j++)
				{
					if(astrDirs[j].CompareNoCase(str)==0)
					{
						FavMenuAddFolder(astrDirs[j], strPath2, FirstLevel, isLink, pMenu, nEndPos);
						astrDirs[j].Empty();
					}
				}				
			}
		}
	}
	
	//sort dirs and favs
	CString tmp;
	int n = astrDirs.GetSize();
	int i, ch, m;
	ch = n;
	while(ch>0)
	{
		m = ch-1; ch = 0;
		for(i=1; i<=m; i++)
		{
			if(lstrcmp(astrDirs[i-1], astrDirs[i])>0)
			{
				tmp = astrDirs[i-1];
				astrDirs[i-1] = astrDirs[i];
				astrDirs[i] = tmp;
				ch = i;
			}
		}
	}
	n = astrFavorites.GetSize();
	ch = n;
	int ntmp;
	while(ch>0)
	{
		m = ch-1; ch = 0;
		for(i=1; i<=m; i++)
		{
			if(lstrcmpiA(astrFavorites[i-1], astrFavorites[i])>0)
			{
				tmp = astrFavorites[i-1];
				astrFavorites[i-1] = astrFavorites[i];
				astrFavorites[i] = tmp;
				ntmp = anFavID[i-1];
				anFavID[i-1] = anFavID[i];
				anFavID[i] = ntmp;
				ch = i;
			}
		}
	}	
	for(i = 0; i<astrDirs.GetSize(); i++)
	{
		if(astrDirs[i].IsEmpty())
			continue;
		FavMenuAddFolder(astrDirs[i], strPath2, FirstLevel, isLink, pMenu, nEndPos);
	}		
	for(i = 0 ; i < astrFavorites.GetSize() ; i++)
	{
		if(astrFavorites[i].IsEmpty())
			continue;
		FavMenuAddURL(astrFavorites[i], strPath2, FirstLevel, isLink, pMenu, anFavID[i]);
	}
	//add a break if needed
	if(!g_bSingleMenu)
		AddMenuBreak(pMenu,2);
	if(isLink)
	{
		CRect rectToolBar;
		REBARBANDINFO rbbi;
		m_LinkBar.GetItemRect(0, &rectToolBar);
		
		rbbi.cbSize = sizeof(rbbi);
		rbbi.fMask = RBBIM_CHILDSIZE | RBBIM_IDEALSIZE /*| RBBIM_SIZE*/ |RBBIM_ID;// |RBBIM_STYLE;
		rbbi.wID = ID_VIEW_LINKS;
		rbbi.cxMinChild = 0;
		if(rectToolBar.Height()<22)
			rbbi.cyMinChild = 22;
		else
			rbbi.cyMinChild = rectToolBar.Height();
		int bc=m_LinkBar.GetToolBarCtrl().GetButtonCount();
		if(bc>0)
		{
			m_LinkBar.GetToolBarCtrl().GetItemRect(bc-1,&rectToolBar);
			/*rbbi.cx =*/ rbbi.cxIdeal = rectToolBar.right;
		}
		else
			/*rbbi.cx =*/ rbbi.cxIdeal = 2;
		int bandid = m_wndReBar.GetReBarCtrl().IDToIndex(ID_VIEW_LINKS);
		m_wndReBar.GetReBarCtrl().SetBandInfo(bandid, &rbbi);
	}
	if(FirstLevel)
	{
		CRect rectToolBar;
		REBARBANDINFO rbbi;
		m_FavBar.GetItemRect(0, &rectToolBar);
		rbbi.cbSize = sizeof(rbbi);
		rbbi.fMask = RBBIM_CHILDSIZE | RBBIM_IDEALSIZE /*| RBBIM_SIZE*/ |RBBIM_ID ;
		rbbi.wID = ID_VIEW_FAVS;
		rbbi.cxMinChild = 0;//rectToolBar.Width()+2;
		if(rectToolBar.Height()<22)
			rbbi.cyMinChild = 22;
		else
			rbbi.cyMinChild = rectToolBar.Height();
		
		int bc=m_FavBar.GetToolBarCtrl().GetButtonCount();
		if(bc>0)
		{
			m_FavBar.GetToolBarCtrl().GetItemRect(bc-1,&rectToolBar);
			/*rbbi.cx =*/ rbbi.cxIdeal = rectToolBar.right;
		}
		else
			/*rbbi.cx =*/ rbbi.cxIdeal = 2;
		int bandid = m_wndReBar.GetReBarCtrl().IDToIndex(ID_VIEW_FAVS);
		m_wndReBar.GetReBarCtrl().SetBandInfo(bandid, &rbbi);
	}
	}catch(...){}

	return nEndPos;
}

void CMainFrame::OpenGoUpMenuItem(UINT nID)
{
	GET_ACTIVE
	//do local url is enough
	DO_LOCAL_URL(g_strGoUpUrl[nID-B_GO_UP]);
	tcf->m_pView->ToNavigate(g_strGoUpUrl[nID-B_GO_UP],0, NULL);
}

void CMainFrame::OnGoUpPage()
{
	GET_ACTIVE
	//no g_strGoUpUrl, get up url direct
	CString strURL;
	strURL = _StringGetUpUrl(tcf->m_pView->m_lpszUrl);
	if (strURL != tcf->m_pView->m_lpszUrl)
	{
		DO_LOCAL_URL(strURL);
		if (g_bLinkInNewWindow)
			NewChildWindow(1,2,strURL);
		else
			tcf->m_pView->ToNavigate(strURL, 0, NULL);
	}
}

void CMainFrame::OpenMenuItem(UINT nID)
{
	try{
	TCHAR buf[INTERNET_MAX_PATH_LENGTH];

	CString strUrl;
	MENUITEMINFO mii;
	mii.fMask = MIIM_DATA|MIIM_TYPE;    // get the state of the menu item
	mii.dwTypeData = NULL;
	mii.cch = 0;
	mii.dwItemData = NULL;
	mii.cbSize = sizeof(mii);
	::GetMenuItemInfo(GetMenu()->m_hMenu, nID, FALSE, &mii); 
	CMenuData* pmd = (CMenuData*)(mii.dwItemData);
	if (!pmd || !pmd->m_szURL || strlen(pmd->m_szURL)<1)
		strUrl = g_strMenuUrl;
	else
		strUrl = pmd->m_szURL;
	if (strUrl.GetLength()<1)
		return;
	int nAutoRunCmd = 0;
	if(IS_FAVURL(strUrl))
	{
		pmd->m_dwProperty = ::GetPrivateProfileInt(_T("InternetShortcut"), _T("Property"), DEFAULT_PROPERTY, strUrl);
		nAutoRunCmd = ::GetPrivateProfileInt(_T("InternetShortcut"), _T("AutoRunCmd"), 0, strUrl);
		::GetPrivateProfileString(_T("InternetShortcut"), _T("URL"), _T(""), buf, INTERNET_MAX_PATH_LENGTH, strUrl);
		strUrl = buf;
	}
	OpenMenuUrl(nID, strUrl, pmd ? pmd->m_dwProperty : DEFAULT_PROPERTY, nAutoRunCmd);
	
	}catch(...){}
}

void CMainFrame::OpenMenuUrl(UINT nID, CString strUrl, DWORD dwProperty, int nAutoRunCmd)
{
	try{
	if(strUrl.Right(4) == _T(".lnk"))
	{
		TCHAR buf[INTERNET_MAX_PATH_LENGTH];
		if(ResolveLink(strUrl, buf))
		{
			if (strlen(buf) == 0)//if length=0, maybe means net pc
				strUrl = "\\\\" + GET_TITLE(strUrl);
			else
				strUrl = buf;
		}
		else
			strUrl = "about:blank";
	}
	//
	if (DoSpecialUrl(strUrl))
		return;
	CChildFrame* tcf = (CChildFrame*)MDIGetActive();
	if (VALID_TCF(tcf) && !g_bFavInNewWindow && !PRESS_CTRL)
	{
		tcf->m_pView->ToNavigate(strUrl, 0, NULL);
		//not do this
		//m_wndAddress->GetEditCtrl()->SetWindowText(strUrl);
	}
	else
	{
		tcf = NewChildWindow(0);
		if(VALID_TCF(tcf))
		{
			if (dwProperty!=DEFAULT_PROPERTY )//&& nID>=B_GROUP && nID<=E_GROUP)
				tcf->m_pView->SetSpecialProperty(dwProperty);
			tcf->m_pView->m_nAutoRunCmd = nAutoRunCmd;
			tcf->m_pView->ToNavigate(strUrl, 0, NULL);
			if (m_bActiveNewWindow || m_nWin==1)
				m_wndAddress->GetEditCtrl()->SetWindowText(strUrl);
		}
	}
	}catch(...){}
}

void CMainFrame::OnFileNewBlank() 
{
	NewChildWindow(2,0, NULL, NULL, TRUE);
}

void CMainFrame::OnFileNewCurrentpage() 
{
	// TODO: Add your command handler code here
	try{
	CString strURL;
	CChildFrame* tcf = (CChildFrame*)MDIGetActive();
	if (VALID_TCF(tcf))
		strURL = tcf->m_pView->m_lpszUrl;
	else
		strURL = "about:blank";
	if (m_bActiveFileNew)
		NewChildWindow(1,2,strURL, NULL, TRUE);
	else
		NewChildWindow(1,2,strURL);
	}catch(...){}
}

void CMainFrame::OnUpdateProgress(CCmdUI* pCmdUI) 
{
	try{
	if(g_nPercent<0)
	{
		if(m_wndStatusBar.IsProgressBarVisible())
		{
			m_wndStatusBar.ShowProgressBar(false);
			//
			SetWindowText("GreenBrowser");
		}
		if (m_pMonitor)
		{
			if (m_pMonitor->m_percent.IsWindowVisible())
				m_pMonitor->m_percent.ShowWindow(SW_HIDE);
		}
	}
	else
	{
		if(!m_wndStatusBar.IsProgressBarVisible())
			m_wndStatusBar.ShowProgressBar(true);
		m_wndStatusBar.SetPos(g_nPercent);
		static TCHAR str[20];
        sprintf(str, "%d%%", g_nPercent);
		m_wndStatusBar.SetWindowText(str);
		//
		if (m_pMonitor)
		{
			if (!m_pMonitor->m_percent.IsWindowVisible())
				m_pMonitor->m_percent.ShowWindow(SW_SHOW);
			m_pMonitor->m_percent.SetWindowText(str);
		}
		//
		sprintf(str, "%d%%-GreenBrowser", g_nPercent);
		SetWindowText(str);
	}
	}catch(...){}
}

int CMainFrame::AddNewTab(CChildFrame* tcf, int CurID, LPTSTR label, BOOL bAddLast)
{
	if(tcf==NULL)
		return 0;
	try{
	int presel = m_wndTab.GetCurSel();
	if(m_nNewSequence==0)
	{
		if (tcf->m_nActive & INW_OTHER_SIDE)
			CurID = presel;
		else
			CurID = m_nWin;
	}
	else if(m_nNewSequence==1)
	{
		if (tcf->m_nActive & INW_OTHER_SIDE)
			CurID = presel;
		else
			CurID = presel+1;
	}
	else if(m_nNewSequence==2)
	{
		if (tcf->m_nActive & INW_OTHER_SIDE)
			CurID = presel+1;
		else
			CurID = presel;
	}
	if (CurID<0)
		CurID = 0;	
	TCITEM TabCtrlItem;
	TabCtrlItem.mask = TCIF_TEXT|TCIF_PARAM;
	if(label==NULL)
		TabCtrlItem.pszText = "about:blank";
	else
		TabCtrlItem.pszText = label;
	TabCtrlItem.lParam = (LPARAM)tcf;
	m_wndTab.InsertItem( CurID, &TabCtrlItem );
	//select this tab
	if(tcf->m_pView!=NULL)
	{
		if(tcf->m_pView->m_bIsActive)//m_bActiveNewWindow
			m_wndTab.SetCurSel(CurID);
		else if(m_nNewSequence==2)
		{
			if (tcf->m_nActive & INW_OTHER_SIDE)
				m_wndTab.SetCurSel(presel);
			else
				m_wndTab.SetCurSel(CurID+1);
		}
		else
		{
			if (tcf->m_nActive & INW_OTHER_SIDE)
				m_wndTab.SetCurSel(CurID+1);
			else
				m_wndTab.SetCurSel(presel);
		}
	}

	PostMessage(WM_UPDATE_TAB, TRUE);
	m_nWin = m_wndTab.GetItemCount();
	if(m_nWin<=2)
		m_SysMenuBar.PostMessage(WM_IDLEUPDATECMDUI, TRUE, 0);
	//??
	if(m_nTabStyle==1 && m_nWin==1)
		m_wndTab.Invalidate();
	//??
	static BOOL	g_bAdjustTabWidth = 0;
	if (!g_bAdjustTabWidth)
	{
		CRect rect;
		m_wndTab.GetWindowRect(&rect);
		m_wndTab.SetWindowPos(&wndTop, 0,0, rect.Width()+4, rect.Height(), SWP_NOMOVE|SWP_NOOWNERZORDER|SWP_NOZORDER|SWP_NOREDRAW|SWP_NOSENDCHANGING|SWP_NOACTIVATE);
		g_bAdjustTabWidth = 1;
	}
	g_bVerbose = TRUE;
	if(m_nNewSequence)
		UpdateTabTitleIndex(CurID);

	}catch(...){}

	return CurID;
}

void CMainFrame::OnSelChange(NMHDR* pNotifyStruct, LRESULT* pResult)
{
	OnSelT

⌨️ 快捷键说明

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