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

📄 mainfrm.cpp

📁 1.MyIE开源工程协议 MyIE开源工程遵循GNU通用公共许可证GPL(GNU General Public License)开发,任何人都可以永久免费安装使用,在你下载和使用MyIE源代码前,请
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			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;
	DWORD dwProperty = DEFAULT_PROPERTY;
	int nAutoRunCmd = 0;
	if(IS_FAVURL(strUrl))
	{
		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(strUrl, dwProperty, nAutoRunCmd);
	
	}catch(...){}
}

void CMainFrame::OpenMenuUrl(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 )
				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("MyIE");
		}
	}
	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);
		//
		sprintf(str, "%d%%-MyIE", 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)
{
	OnSelTab(0,0);
	*pResult = 0;
}

void CMainFrame::OnSelTab(WPARAM wParam, LPARAM lParam)
{
	try{
	m_wndTab.m_bDragging = FALSE;
	TCITEM TabCtrlItem;
	int n = m_wndTab.GetCurSel();
	if(n>=0)
	{
		TabCtrlItem.mask = TCIF_PARAM;
		m_wndTab.GetItem(n, &TabCtrlItem);
		if(TabCtrlItem.lParam != NULL)
		{
			((CChildFrame*)TabCtrlItem.lParam)->m_bSkipSel = TRUE;
			((CChildFrame*)TabCtrlItem.lParam)->m_nCurTabID = n;
			if(((CChildFrame*)TabCtrlItem.lParam)->m_bProtect)
				PostMessage(WM_ACTIVATE_WINDOW, 0, TabCtrlItem.lParam);
			else
				MDIActivate((CChildFrame*)TabCtrlItem.lParam);
		}		
	}
	}catch(...){}
}

void CMainFrame::OnRClickElse(NMHDR* pNotifyStruct, LRESULT* pResult)
{
	CPoint point;
	GetCursorPos(&point);
	CWnd * pw = WindowFromPoint(point);
	if(pw!=NULL && (pw->m_hWnd ==  m_wndTab.GetSafeHwnd() 
		|| ::IsChild(m_wndAddress->GetSafeHwnd(), pw->m_hWnd)))
		return;
	if (pw->GetSafeHwnd()==m_LinkBar.GetSafeHwnd() || pw->GetSafeHwnd()==m_FavBar.GetSafeHwnd())
	{
		CToolBar	*pBar;
		CPoint		pt = point;
		pBar = (pw->GetSafeHwnd()==m_LinkBar.GetSafeHwnd() ? &m_LinkBar : &m_FavBar);
		pBar->ScreenToClient(&pt);
		int iButton = pBar->GetToolBarCtrl().HitTest(&pt);
		if (iButton >= 0 && iButton<pBar->GetToolBarCtrl().GetButtonCount())
		{
			TBBUTTON tbb;
			if( pBar->GetToolBarCtrl().GetButton( iButton,  &tbb ))
			{
				CString strUrl;
				if (tbb.idCommand == ID_LINK_POPUP || tbb.idCommand == ID_FAV_POPUP)
				{
					CString strDir ;
					if (tbb.idCommand == ID_FAV_POPUP)
					{
						GetFavoriteFolder(strUrl);
						CHECK_TAIL(strUrl);
						strDir = g_astrFavs[iButton];
					}
					else
					{
						strUrl = m_strLinkPath;
						DO_RELATIVE_URL(strUrl);
						strDir = g_astrLinks[iButton];
					}
					strUrl += strDir;
				}
				else
				{
					strUrl = GetMenuItemUrl(tbb.idCommand,GetMenu()->m_hMenu, FALSE);
				}
			}
		}
	}
	//else pop menu
	CMenu *pmenu;
	pmenu = GetMenu()->GetSubMenu(2)->GetSubMenu(0);
	if(pmenu!=NULL)
	{
		pmenu->TrackPopupMenu(
			TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON, 
			point.x, point.y, AfxGetMainWnd()
			);
	}
}

void CMainFrame::OnRClickStatusToolbar(NMHDR* pNotifyStruct, LRESULT* pResult)
{
	CPoint point;
	GetCursorPos(&point);
	CWnd * pw = WindowFromPoint(point);
	if(pw!=NULL && (pw->m_hWnd ==  m_wndTab.GetSafeHwnd() 
		|| ::IsChild(m_wndAddress->GetSafeHwnd(), pw->m_hWnd)))
		return;
	CMenu* pPopup = m_TrayMenu.GetSubMenu(0);
	pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,AfxGetMainWnd());
}

void CMainFrame::OnRClick(NMHDR* pNotifyStruct, LRESULT* pResult)
{
	CPoint point;

	// translate the current toolbar item rectangle into screen coordinates
	// so that we'll know where to pop up the menu
	if(PRESS_CTRL)
		return;
	GetCursorPos(&point);
	BOOL found = false;
	int i=0;
	CRect rect;

	try{
	m_wndTab.ScreenToClient(&point);
	TCHITTESTINFO hti;
	hti.pt = point;
	hti.flags = TCHT_ONITEM | TCHT_ONITEMICON | TCHT_ONITEMLABEL ;
	m_nRTabID = m_wndTab.HitTest(&hti);
	m_wndTab.ClientToScreen(&point);
	CMenu menu;
	CMenu* pPopup;
	if(m_nRTabID>=0)
	{
		//menu.LoadMenu(IDR_RTAB);
		pPopup = m_TabMenu.GetSubMenu(0);
		//if is locked
		TCITEM TabCtrlItem;
		TabCtrlItem.mask = TCIF_PARAM;
		m_wndTab.GetItem(m_nRTabID, &TabCtrlItem);
		CChildFrame *tcf = (CChildFrame*)TabCtrlItem.lParam;
		if(tcf && pPopup!=NULL)
		{
			if (tcf && tcf->m_bProtect && tcf != (CChildFrame*)MDIGetActive())
			{
				MSGBOX(IDS_TIP_PROTECT);
				return ;
			}
			pPopup->CheckMenuItem(ID_RTAB_LOCK, tcf->m_bLock ? MF_CHECKED : MF_UNCHECKED);
			pPopup->CheckMenuItem(ID_RTAB_PROTECT, tcf->m_bProtect ? MF_CHECKED : MF_UNCHECKED);
			pPopup->CheckMenuItem(ID_RTAB_MARK, MARKED(tcf->m_pView) ? MF_CHECKED : MF_UNCHECKED);
		}
		g_bRTab = TRUE;
		pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUT

⌨️ 快捷键说明

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