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

📄 greenbrowserview.cpp

📁 用VC写的浏览器
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		tcf->m_nActive = m_nInNewWindow;
		tcf->m_bForceActive = m_nInNewWindow & INW_ACTIVE;
		tcf->m_pView->m_bIsActive = (CAN_ACTIVE(tcf) ? TRUE : FALSE);
		m_nInNewWindow = 0;
	}
	//this maybe a blank window.
	if(((CChildFrame*)GetParentFrame())->m_pBlankChild != tcf)
	{
		((CChildFrame*)GetParentFrame())->m_pBlankChild = tcf;
		QueryPerformanceCounter(&((CChildFrame*)GetParentFrame())->m_tBlankChild);
	}
	else
		((CChildFrame*)GetParentFrame())->m_pBlankChild = NULL;
	tcf->m_pView->m_dwProperty = m_dwProperty;
	tcf->m_pView->m_bIsNewPopup = TRUE;
	tcf->m_pView->m_bIsPopUp = FALSE;
	tcf->m_pView->m_bToClose = FALSE;
	tcf->m_pView->m_nFilterDup = 1;
	//tcf->m_pView->m_bForceResize = TRUE;
	tcf->m_pView->m_nProgress = 0;
	//tcf->m_pView->g_bKillAutoWin = g_bKillAutoWin;
	*ppDisp = tcf->m_pView->GetApplication();
	if(*ppDisp != NULL)
		*Cancel = FALSE;

	}catch(...){}

 	//CFixedHtmlView::OnNewWindow2(ppDisp, Cancel);
}

void CGreenBrowserView::OnProgressChange(long nProgress, long nProgressMax) 
{
	// TODO: Add your specialized code here and/or call the base class
	try{
	int oldp = m_nProgress;
	if(nProgressMax>0 && nProgress>=0 && nProgressMax/100>0)
	{
		m_nProgress  = nProgress/(nProgressMax/100);
		if(m_nProgress>100)
			m_nProgress=100;
	}
	else
	{
		m_nProgress = -10;
	}
	if(m_bIsActive)
		g_nPercent = m_nProgress;

	if(m_bIsActive && (m_bUseAutoScroll || pmf->m_bAllScroll) )
	{
		//start to scroll
		if(m_nScrollTimer==0 && (m_bUseAutoScroll || pmf->m_bAllScroll) && m_nSrSpeed!=0)
		{
			if(m_nProgress==100 || m_nProgress<0 || (!m_bScrollAfterDL && m_nProgress>=0))
			{
				if(pmf->m_bMouseCtrlScrSpeed)
					m_nLastScrSpd = STOP_TIMER;
				else
					m_nLastScrSpd = (UINT)((g_fSeed*100)/(m_nSrSpeed*m_nSrSpeed));
				m_nScrollTimer = SetTimer(2132, m_nLastScrSpd, NULL);
			}
		}
		else if(m_nScrollTimer && m_nProgress<20 && m_nProgress>0)
		{
			//stop the timer;
			if(m_nScrollTimer)
				KillTimer(m_nScrollTimer);
			m_nScrollTimer = 0;
		}
	}
	//set icon
	if(pmf!=NULL)
	{
		int nIcon = m_nProgress/34+1;
		int oi = m_nOldIcon;
		if(m_nProgress<0)
			nIcon=-1;
		if((m_nProgress>=0 && nIcon != oi) || m_nProgress<0)
		{
			int nTabID;
			nTabID = pmf->FindTab((CChildFrame*)GetParentFrame());
			if(m_nProgress>=0 && nIcon != oi)
				pmf->SetTabIcon( nIcon, nTabID, this );
			else if(m_nProgress<0)
			{
				if(((CChildFrame*)GetParentFrame())->m_bLock)
					pmf->SetTabIcon( TI_LOCK, nTabID, this );
				else if(((CChildFrame*)GetParentFrame())->m_bProtect)
					pmf->SetTabIcon( TI_PROTECT, nTabID, this );
				else
				{
					if(!m_bIsActive)
					{
						if (m_nOldIcon!=TI_0 && nProgress==0 && nProgressMax==0 && m_lpszUrl != "about:blank")//3.3.6
							pmf->SetTabIcon( TI_100, nTabID, this );
					}
					else
					{
						if (m_nOldIcon!=TI_0)
							pmf->SetTabIcon( TI_NO, nTabID, this );
					}
				}
			}
			//update tab bar
			if(m_nProgress*oldp<=0 && oi*m_nOldIcon<=0 && m_nOldIcon != oi && pmf->m_nTabStyle==2)
				pmf->PostMessage(WM_UPDATE_TAB);
			//complete
			if (nProgress==0 && nProgressMax==0)
			{
				CChildFrame* tcf = (CChildFrame*)pmf->MDIGetActive();
				if (tcf && pmf->m_nState)
				{
					if (tcf->m_pView->m_lpszUrl == "about:blank" &&
						tcf == (CChildFrame*)GetParentFrame() )
					{
						pmf->m_wndAddress->SetFocus();
					}
					else
					{
						CWnd* pWnd = GetFocus();
						if ( pWnd == (CWnd*)(pmf->m_wndAddress->GetEditCtrl()) || pWnd == (CWnd*)(pmf->m_wndSearch->GetEditCtrl())	)
							;//do nothing
						else if (IsTopParentActive())
							tcf->ViewSetFocus();
					}
				}
				//run internal plugin,must place here, for that refresh not get ondocumentcomplete
				if (m_nOldIcon!=TI_0)// && m_lpszUrl!="about:blank")
				{
					if (pmf->m_bUseFlyingFilter)
						pmf->RunKillFlying((CChildFrame*)GetParentFrame());
					if (pmf->m_bKillBlank && pmf->m_bUseUrlFilter)
						pmf->RunKillBlank((CChildFrame*)GetParentFrame());
				}
			}
		}
	}
	}catch(...){}

	//CFixedHtmlView::OnProgressChange(nProgress, nProgressMax);
}

void CGreenBrowserView::OnEditCopy() 
{
	// TODO: Add your command handler code here
	ExecWB(OLECMDID_COPY, OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL);
}

void CGreenBrowserView::OnEditCut() 
{
	// TODO: Add your command handler code here
	ExecWB(OLECMDID_CUT, OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL);
}

void CGreenBrowserView::OnEditFind() 
{
	// TODO: Add your command handler code here
	pmf->ExecCmdTarget(HTMLID_FIND, this);
}

void CGreenBrowserView::OnEditPaste() 
{
	// TODO: Add your command handler code here
	ExecWB(OLECMDID_PASTE, OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL);
}

void CGreenBrowserView::OnEditSelectAll() 
{
	// TODO: Add your command handler code here
	ExecWB(OLECMDID_SELECTALL, OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL);
}

void CGreenBrowserView::OnStatusTextChange(LPCTSTR lpszText) 
{
	// TODO: Add your specialized code here and/or call the base class
	try{
	if(m_bIsActive && pmf!=NULL)
	{
		if(g_bDisScrollText && lpszText!=NULL && strlen(lpszText)!=0)
		{
			char* pdes = strstr(lpszText, "about:");
			if(pdes!=lpszText)
			{
				pdes = strstr(lpszText, "://");
				if(pdes == NULL)
				{
					pdes = strstr(lpszText, "mailto:");
					if(pdes == NULL)
					{
						pdes = strstr(lpszText, "javascript:");
					}
				}
			}
			int pos =0;
			if(pdes != NULL)
			{
				pos = pdes - lpszText;
			}
			if(strncmp(lpszText,"Shortcut", 8)!=0 && strstr(lpszText, "的快捷方式")==NULL && strstr(lpszText, "地址已")==NULL && strcmp(lpszText, "Done")!=0&& (pdes==NULL || pos>10 )
				&& strncmp(lpszText, "正在", 4)!=0 && strncmp(lpszText, "完成", 4)!=0 && strncmp(lpszText, "完毕", 4)!=0 && strstr(lpszText, "项剩余")==NULL 
				&& strncmp(lpszText, "Wait", 4)!=0 && strncmp(lpszText, "Start", 5)!=0 && strncmp(lpszText, "Open", 4)!=0 && strncmp(lpszText, "Connect", 7)!=0 && strncmp(lpszText,"Find",4)!=0 && strncmp(lpszText, "download", 8)!=0 && strncmp(lpszText, "Web", 3)!=0 && strstr(lpszText, "remain")==NULL)
				return;
		}
		if( !( pmf->m_bStatusBlank && lpszText!=NULL && strlen(lpszText)==0))
			pmf->SetMessageText(lpszText);
		if(strlen(lpszText)==0)
			pmf->m_bStatusBlank = TRUE;
		else
			pmf->m_bStatusBlank = FALSE;

	}
	}catch(...){}
}

BOOL CGreenBrowserView::OnAmbientProperty(COleControlSite* pSite, DISPID dispid, VARIANT* pvar) 
{
	// TODO: Add your specialized code here and/or call the base class
	if (dispid == DISPID_AMBIENT_DLCONTROL)
	{
		pvar->vt = VT_I4;
		pvar->lVal = m_dwProperty; 
		if (pmf->m_bDisDownActivex)
			pvar->lVal |= DLCTL_NO_DLACTIVEXCTLS;
		return TRUE;
	}
	return CFixedHtmlView::OnAmbientProperty(pSite, dispid, pvar);
}

void CGreenBrowserView::OnOptionsLoadimage() 
{
	// TODO: Add your command handler code here
	m_dwProperty ^= DLCTL_DLIMAGES;
	ChangeProperty();
	if (!PRESS_CTRL)
		PowerRefresh();
}

void CGreenBrowserView::OnUpdateOptions(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	try{
	switch (pCmdUI->m_nID)
	{
	case ID_OPTIONS_LOADIMAGE:
		pmf->ToolBarSetCheck(pCmdUI, (m_dwProperty&DLCTL_DLIMAGES)!=0);
		break;
	case ID_OPTIONS_LOADVIDEOS:
		if(m_dwProperty&DLCTL_VIDEOS)
			pCmdUI->SetCheck(1);
		else
			pCmdUI->SetCheck(0);
		break;
	case ID_OPTIONS_LOADSOUNDS:
		if(m_dwProperty&DLCTL_BGSOUNDS)
			pCmdUI->SetCheck(1);
		else
			pCmdUI->SetCheck(0);
		break;
	case ID_OPTIONS_ALLOWSCRIPTS:
		if(m_dwProperty&DLCTL_NO_SCRIPTS)
			pCmdUI->SetCheck(0);
		else
			pCmdUI->SetCheck(1);
		break;
	case ID_OPTIONS_ALLOWJAVAAPPLET:
		if(m_dwProperty&DLCTL_NO_JAVA)
			pCmdUI->SetCheck(0);
		else
			pCmdUI->SetCheck(1);
		break;
	case ID_OPTIONS_ALLOWACTIVEX:
		if(m_dwProperty&DLCTL_NO_RUNACTIVEXCTLS)
			pCmdUI->SetCheck(0);
		else
			pCmdUI->SetCheck(1);
		break;
	}
	}catch(...){}
}

void CGreenBrowserView::OnOptionsAllowscripts() 
{
	// TODO: Add your command handler code here
	m_dwProperty ^= DLCTL_NO_SCRIPTS;
	ChangeProperty();
	if (!PRESS_CTRL)
		PowerRefresh();
}

void CGreenBrowserView::OnOptionsLoadsounds() 
{
	// TODO: Add your command handler code here
	m_dwProperty ^= DLCTL_BGSOUNDS;
	ChangeProperty();
	if (!PRESS_CTRL)
		PowerRefresh();
}

void CGreenBrowserView::OnOptionsLoadvideos() 
{
	// TODO: Add your command handler code here
	m_dwProperty ^= DLCTL_VIDEOS;
	ChangeProperty();
	if (!PRESS_CTRL)
		PowerRefresh();
}

void CGreenBrowserView::OnOptionsUseWebp() 
{
	// TODO: Add your command handler code here
	if(m_bEnWebProxy)
		m_bEnWebProxy = FALSE;
	else
	{
		m_bEnWebProxy = TRUE;
		//auto refresh
		if (m_strWebProxy.IsEmpty())
		{
			if (!pmf->m_strDefaultWebProxy.IsEmpty())
				m_strWebProxy = pmf->m_strDefaultWebProxy;
			else
			{
				m_bEnWebProxy = FALSE;
				MSGBOX(IDS_NO_WEB_PROXY);
				return;
			}
		}
		if(!m_lpszUrl.IsEmpty() && m_lpszUrl!="about:blank")
		{
			ToNavigate(m_lpszUrl, 0, NULL, NULL, NULL, 0, TRUE);
		}
	}
}

void CGreenBrowserView::OnUpdateOptionsUseWebp(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	try
	{
		pmf->ToolBarSetCheck(pCmdUI, m_bEnWebProxy);
	}catch(...){}
}

void CGreenBrowserView::OnOptionsAllowactivex() 
{
	// TODO: Add your command handler code here
	m_dwProperty ^= DLCTL_NO_RUNACTIVEXCTLS;
	ChangeProperty();
	if (!PRESS_CTRL)
		PowerRefresh();
}

void CGreenBrowserView::OnOptionsAllowjavaapplet() 
{
	// TODO: Add your command handler code here
	m_dwProperty ^= DLCTL_NO_JAVA;
	ChangeProperty();
	if (!PRESS_CTRL)
		PowerRefresh();
}

void CGreenBrowserView::OnCommandStateChange(long nCommand, BOOL bEnable) 
{
	// TODO: Add your specialized code here and/or call the base class
	if(nCommand == 2)
		m_bBack = bEnable;
	else if(nCommand == 1)
		m_bForward = bEnable;

	//	CFixedHtmlView::OnCommandStateChange(nCommand, bEnable);
}

void CGreenBrowserView::OnUpdateGoBack(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	try{
	pCmdUI->Enable(m_bBack);
	}catch(...){}
}

void CGreenBrowserView::OnUpdateGoForward(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	try{
	pCmdUI->Enable(m_bForward);
	}catch(...){}
}

void ResizeSibling(CGreenBrowserView* pvw)
{
	try{
	g_bMax = 0;
	CChildFrame* tcf;
	CRect oldrect,rect;
	if(pmf!=NULL)
	{
		int n = pmf->m_wndTab.GetItemCount();
		TCITEM TabCtrlItem;
		TabCtrlItem.mask = TCIF_PARAM;
		for(int i=n-1;i>=0;i--)
		{
			pmf->m_wndTab.GetItem(i, &TabCtrlItem);
			tcf = ((CChildFrame*)TabCtrlItem.lParam);
			if(tcf != NULL && tcf->m_pView!=NULL)
			{
				if(tcf->m_pView != pvw)
				{
					tcf->GetClientRect(&rect);
					tcf->m_pView->m_wndBrowser.GetWindowRect(&oldrect);
					tcf->m_pView->ScreenToClient(&oldrect);
					if(oldrect.left != -BORDER && oldrect.top != -BORDER)
					{
						try{
						tcf->m_pView->m_wndBrowser.MoveWindow(-2,-2, rect.Width()+BORDER+BORDER, rect.Height()+BORDER+BORDER);
						}catch(...){}
					}
					else
					{
						try{
						if(oldrect.Width()!=rect.Width()+BORDER+BORDER && rect.Width()!=0)
							tcf->m_pView->SetWidth (rect.Width()+BORDER+BORDER);
						if(oldrect.Height()!=rect.Height()+BORDER+BORDER && rect.Height()!=0)
							tcf->m_pView->SetHeight (rect.Height()+BORDER+BORDER);
						}catch(...){}
					}
				}
			}
		}
	}
	}catch(...){}
}

void CGreenBrowserView::OnSize(UINT nType, int cx, int cy) 
{
	try
	{
		if(g_bMax==1)
		{
			if(GetParentFrame()->IsZoomed())
			{
				CRect oldrect;
				m_wndBrowser.GetWindowRect(&oldrect);
				ScreenToClient(&oldrect);
				if(oldrect.left != -BORDER && oldrect.top != -BORDER)
				{
					try{
					m_wndBrowser.MoveWindow(-2,-2, cx+BORDER+BORDER, cy+BORDER+BORDER);
					}catch(...){}
				}
				else
				{
					try{
					if(oldrect.Width()!=cx+BORDER+BORDER )
						SetWidth (cx+BORDER+BORDER);
					if(oldrect.Height()!=cy+BORDER+BORDER)
						SetHeight (cy+BORDER+BORDER);
					}catch(...){}
				}
			}
		}
		else
		{
			CRect oldrect;
			m_wndBrowser.GetWindowRect(&oldrect);
			ScreenToClient(&oldrect);
			if(oldrect.left != -BORDER && oldrect.top != -BORDER)
			{
				try{
				m_wndBrowser.MoveWindow(-2,-2, cx+BORDER+BORDER, cy+BORDER+BORDER);
				}catch(...){}
			}
			else
			{
				try{
				if(oldrect.Width()!=cx+BORDER+BORDER && cx!=0)
					SetWidth (cx+BORDER+BORDER);
				if(oldrect.Height()!=cy+BORDER+BORDER && cy!=0)
					SetHeight (cy+BORDER+BORDER);
				}catch(...){}
			}
			if(GetParentFrame()->GetStyle() & WS_MAXIMIZE)
				g_bMax = 1;
		}
		//size other views
		if(g_bMax == 3)
			ResizeSibling(this);
	}catch(...){}
}

void CGreenBrowserView::OnUpdateViewFonts(CCmdUI* pCmdUI) 
{ 
	// TODO: Add your command update UI handler code here
	if(pCmdUI->m_nID==ID_VIEW_FONTS_LARGEST+m_nFontSize)
		pCmdUI->SetCheck(1);
	else
		pCmdUI->SetCheck(0);
}

⌨️ 快捷键说明

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