📄 greenbrowserview.cpp
字号:
void CGreenBrowserView::ToNavigate(LPCTSTR URL, DWORD dwFlags, LPCTSTR lpszTargetFrameName, LPCTSTR lpszHeaders, LPVOID lpvPostData, DWORD dwPostDataLen, BOOL bOnlyRefresh)
{
try{
CString str = URL;
CString str2 = URL;
m_lpszUrl=URL;
m_bFirst = TRUE;
if(m_bEnWebProxy)
{
if(m_strWebProxy.IsEmpty() && pmf!=NULL)
m_strWebProxy = pmf->m_strDefaultWebProxy;
if((str.Left(4)=="http" || str.Left(4)=="www.") && str.Find(m_strWebProxy)<0)
{
if(str.Left(4)=="www.")
str2 = "http://" + str;
if(m_strWebProxy.Find("%s")>0)
{
str2.Replace(":", "%3A");
str2.Replace("/", "%2F");
str = m_strWebProxy;
str.Replace("%s", str2);
}
else if(m_strWebProxy.Find("%S")>0)
{
str = m_strWebProxy;
str.Replace("%S", str2);
}
else
str = m_strWebProxy+str2;
Navigate2(str, dwFlags, lpszTargetFrameName, lpszHeaders,lpvPostData, dwPostDataLen);
}
else if(!bOnlyRefresh)
Navigate2(str, dwFlags, lpszTargetFrameName, lpszHeaders,lpvPostData, dwPostDataLen);
}
else if(!bOnlyRefresh)
Navigate2(str, dwFlags, lpszTargetFrameName, lpszHeaders,lpvPostData, dwPostDataLen);
}catch(...){}
m_nProgress = -1;
}
void CGreenBrowserView::OnParentNotify(UINT message, LPARAM lParam)
{
CFixedHtmlView::OnParentNotify(message, lParam);
// TODO: Add your message handler code here
try{
CChildFrame* tcf = (CChildFrame*)GetParentFrame();
//
pmf->m_ptMouseDown.x = LOWORD((DWORD)lParam);
pmf->m_ptMouseDown.y = HIWORD((DWORD)lParam);
//
if (message==WM_LBUTTONDOWN && pmf->m_nLButtonDown)
{
if (MouseAction(pmf->m_nLButtonDown))
{
if (pmf->m_nMButtonDown>=ID_OPEN_LINK && pmf->m_nMButtonDown<=ID_OPEN_LINK_DEACTIVE)
{
//for that simu as shift+click
QueryPerformanceCounter(&m_tLastClick);
m_bLClick = TRUE;
}
return;
}
}
else if (message==WM_RBUTTONDOWN && pmf->m_nRButtonDown)
{
if (MouseAction(pmf->m_nRButtonDown))
{
if (pmf->m_nMButtonDown>=ID_OPEN_LINK && pmf->m_nMButtonDown<=ID_OPEN_LINK_DEACTIVE)
{
//for that simu as shift+click
QueryPerformanceCounter(&m_tLastClick);
m_bLClick = TRUE;
}
SetCapture();
m_bIsCapture = TRUE;
pmf->m_bPopRightMenu=FALSE;
return;
}
}
//
if((message == WM_LBUTTONDOWN || message == WM_RBUTTONDOWN) && (g_bLinkInNewWindow || tcf->m_bLock || g_bKillAutoWin) )
{
if(message == WM_LBUTTONDOWN )
{
QueryPerformanceCounter(&m_tLastClick);
m_bRClick = FALSE;
m_bLClick = TRUE;
m_ptLClick.x = LOWORD((DWORD)lParam);
m_ptLClick.y = HIWORD((DWORD)lParam);
}
else if(message == WM_RBUTTONDOWN )
{
QueryPerformanceCounter(&m_tLastRClick);
m_bRClick = TRUE;
m_bLClick = FALSE;
}
else
m_bRClick = FALSE;
}
if ( (message==WM_RBUTTONDOWN) &&
(pmf->m_bRMouseDrag || pmf->m_bRMouseGesture)
)
{
SetCapture();
m_bIsCapture = TRUE;
//m_bRClick = FALSE;
m_ptRClick.x = LOWORD((DWORD)lParam);
m_ptRClick.y = HIWORD((DWORD)lParam);
m_ptPrev = m_ptRClick;
g_nGestureHead = 0;
g_nGestureTail = 0;
pmf->m_bPopRightMenu=TRUE;
}
}catch(...){}
}
void CGreenBrowserView::OnToolsAutoscrollAutoscrollingafterdownloading()
{
// TODO: Add your command handler code here
m_bScrollAfterDL = !m_bScrollAfterDL;
if(pmf!=NULL)
pmf->m_bDefScrollAfterDL = m_bScrollAfterDL;
}
void CGreenBrowserView::OnUpdateToolsAutoscrollAutoscrollingafterdownloading(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetCheck(m_bScrollAfterDL);
}
void CGreenBrowserView::OnUpdateToolsAutoscrollSpeed(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
if(pmf->m_bMouseCtrlScrSpeed)
pCmdUI->Enable(FALSE);
else
pCmdUI->Enable();
if(pCmdUI->m_nID == ID_TOOLS_AUTOSCROLL_FAST)
pCmdUI->SetCheck(m_nSrSpeed==3);
else if(pCmdUI->m_nID == ID_TOOLS_AUTOSCROLL_MEDIUM)
pCmdUI->SetCheck(m_nSrSpeed == 2);
else
pCmdUI->SetCheck(m_nSrSpeed == 1);
}
void CGreenBrowserView::OnToolsAutoscrollUseautoscrolling()
{
// TODO: Add your command handler code here
m_bUseAutoScroll = !m_bUseAutoScroll;
if(pmf!=NULL)
pmf->m_bDefUseAutoScroll = m_bUseAutoScroll;
//start to scroll
if(!m_nScrollTimer && (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_bUseAutoScroll || pmf->m_bAllScroll) && m_nScrollTimer)
{
if(m_nScrollTimer)
KillTimer(m_nScrollTimer);
m_nScrollTimer = 0;
}
}
void CGreenBrowserView::OnUpdateToolsAutoscrollUseautoscrolling(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
try{
pmf->ToolBarSetCheck(pCmdUI, m_bUseAutoScroll);
}catch(...){}
}
void CGreenBrowserView::ChangeSpeed(int nSpeed)
{
if(m_nScrollTimer)
{
KillTimer(m_nScrollTimer);
m_nScrollTimer = 0;
}
//start to scroll
if(!m_nScrollTimer && (m_bUseAutoScroll || pmf->m_bAllScroll) && nSpeed!=0)
{
if(m_nProgress==100 || m_nProgress<0 || (!m_bScrollAfterDL && m_nProgress>=0))
{
if(pmf->m_bMouseCtrlScrSpeed)
m_nLastScrSpd = nSpeed;
else
m_nLastScrSpd = (UINT)((g_fSeed*100)/(m_nSrSpeed*m_nSrSpeed));
m_nScrollTimer = SetTimer(2132, m_nLastScrSpd, NULL);
}
}
}
void CGreenBrowserView::WBScroll()
{
CGreenBrowserView* pvw = this;
if(pvw->m_bToClose)
return;
LPDISPATCH pDisp = NULL;
IHTMLDocument2 *pHTMLDoc = NULL;
IHTMLWindow2 *pHTMLWnd = NULL;
try{
pDisp = pvw->GetHtmlDocument();
if( pDisp )
{
if (SUCCEEDED(pDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pHTMLDoc)))
{
if(SUCCEEDED(pHTMLDoc->get_parentWindow( &pHTMLWnd )))
{
if (pmf->m_nAutoScrollPage)
{
CRect rect;
int blockHeight;
pvw->m_wndBrowser.GetWindowRect(&rect);
blockHeight = (rect.bottom - rect.top) / pmf->m_nAutoScrollPage;
m_nScrollSize++;
if (m_nScrollSize>=blockHeight)
{
while(m_nScrollSize>0)
{
pHTMLWnd->scrollBy(0, 2);
Sleep(2);
m_nScrollSize -= 2;
}
m_nScrollSize=0;
}
}
else
pHTMLWnd->scrollBy(0, 1);
}
}
}
}catch(...){}
try{
if(pHTMLWnd!=NULL) pHTMLWnd->Release();
if(pHTMLDoc!=NULL) pHTMLDoc->Release();
if(pDisp!=NULL) pDisp->Release();
}catch(...){}
}
//scroll horizontal page
void CGreenBrowserView::WBScrollHPage(int bLeft)
{
CGreenBrowserView* pvw = this;
if(pvw->m_bToClose)
return;
LPDISPATCH pDisp = NULL;
IHTMLDocument2 *pHTMLDoc = NULL;
IHTMLWindow2 *pHTMLWnd = NULL;
try{
pDisp = pvw->GetHtmlDocument();
if( pDisp )
{
if (SUCCEEDED(pDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pHTMLDoc)))
{
if(SUCCEEDED(pHTMLDoc->get_parentWindow( &pHTMLWnd )))
{
CRect rect;
pvw->m_wndBrowser.GetWindowRect(&rect);
if (bLeft)
pHTMLWnd->scrollBy(-(long)(rect.Width()*0.87),0);
else
pHTMLWnd->scrollBy((long)(rect.Width()*0.87),0);
}
}
}
}catch(...){}
try{
if(pHTMLWnd!=NULL) pHTMLWnd->Release();
if(pHTMLDoc!=NULL) pHTMLDoc->Release();
if(pDisp!=NULL) pDisp->Release();
}catch(...){}
}
void CGreenBrowserView::WBScrollBy(long xpos,long ypos)
{
CGreenBrowserView* pvw = this;
if(pvw->m_bToClose)
return;
LPDISPATCH pDisp = NULL;
IHTMLDocument2 *pHTMLDoc = NULL;
IHTMLWindow2 *pHTMLWnd = NULL;
try{
pDisp = pvw->GetHtmlDocument();
if( pDisp )
{
if (SUCCEEDED(pDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pHTMLDoc)))
{
if(SUCCEEDED(pHTMLDoc->get_parentWindow( &pHTMLWnd )))
pHTMLWnd->scrollBy(xpos,ypos);
}
}
}catch(...){}
try{
if(pHTMLWnd!=NULL) pHTMLWnd->Release();
if(pHTMLDoc!=NULL) pHTMLDoc->Release();
if(pDisp!=NULL) pDisp->Release();
}catch(...){}
}
void CGreenBrowserView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
try{
if(nIDEvent == m_nScrollTimer && (m_bUseAutoScroll || pmf->m_bAllScroll))
{
if(m_nLastScrSpd<STOP_TIMER)
WBScroll();
//update scroll speed
if(pmf->m_bMouseCtrlScrSpeed)
{
CPoint mousept;
GetCursorPos(&mousept);
ScreenToClient(&mousept);
CRect rect;
GetWindowRect(&rect);
if(mousept.x<=rect.Width() && mousept.x>=rect.Width()-pmf->m_nScrollWidth)
{
if(mousept.y<=rect.Height()-pmf->m_nScrollArrowH && mousept.y>0)
{
int sp = 100 - mousept.y*100/(rect.Height()-pmf->m_nScrollArrowH)+1;
if(abs(sp-m_nLastScrSpd)>5)
ChangeSpeed(sp);
}
else
ChangeSpeed(STOP_TIMER);
}
else
ChangeSpeed(STOP_TIMER);
}
}
else if(nIDEvent == m_nAutoRefreshTimer && m_bUseAutoRef)
{
if (!m_bIsActive || pmf->m_bAutoRefreshActive)
PowerRefresh();
}
CFixedHtmlView::OnTimer(nIDEvent);
}catch(...){}
}
void CGreenBrowserView::OnClose()
{
// TODO: Add your message handler code here and/or call default
try{
CFixedHtmlView::OnClose();
}catch(...){}
}
void CGreenBrowserView::ChangeProperty()
{
try{
m_dwPropertyDefault = m_dwProperty;
IOleControl* poc;
LPDISPATCH pDisp = GetHtmlDocument();
if(pDisp != NULL)
{
if(SUCCEEDED(pDisp->QueryInterface(IID_IOleControl, (void**)&poc)))
{
poc->OnAmbientPropertyChange(DISPID_AMBIENT_DLCONTROL);
poc->Release();
}
pDisp->Release();
}
}catch(...){}
}
void CGreenBrowserView::OnToolsAutoref()
{
// TODO: Add your command handler code here
m_bUseAutoRef = !m_bUseAutoRef;
//start to scroll
if(!m_nAutoRefreshTimer && m_bUseAutoRef && m_nRefreshInterval!=0)
{
m_nAutoRefreshTimer = SetTimer(3132+rand()/500, (UINT)(m_nRefreshInterval*1000), NULL);
}
else if(!m_bUseAutoRef && m_nAutoRefreshTimer)
{
if(m_nAutoRefreshTimer)
KillTimer(m_nAutoRefreshTimer);
m_nAutoRefreshTimer = 0;
}
}
void CGreenBrowserView::OnUpdateToolsAutoref(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetCheck(m_bUseAutoRef);
}
void CGreenBrowserView::OnToolsReffre()
{
// TODO: Add your command handler code here
CSetRefIntervalDlg dlg;
dlg.m_nRefInt = m_nRefreshInterval;
if(dlg.DoModal() == IDOK)
{
m_nRefreshInterval = dlg.m_nRefInt;
pmf->m_nDefRefreshInterval = m_nRefreshInterval;
//change timer
if(m_bUseAutoRef)
ChangeRefresh();
}
}
void CGreenBrowserView::ChangeRefresh()
{
if(m_nAutoRefreshTimer)
{ //stop the timer;
KillTimer(m_nAutoRefreshTimer);
m_nAutoRefreshTimer = 0;
}
//start to scroll
if(!m_nAutoRefreshTimer && m_bUseAutoRef && m_nRefreshInterval!=0)
{
m_nAutoRefreshTimer = SetTimer(3132, (UINT)(m_nRefreshInterval*1000), NULL);
}
}
void CGreenBrowserView::OnNavigateComplete2(LPCTSTR lpszURL)
{
try
{
CString strUrl;
CChildFrame* tcf = ((CChildFrame*)GetParentFrame());
GetLocationURL(strUrl);
if(!m_bToClose && ((m_bIsPopUp && m_bIsNewPopup) || (tcf!=NULL && !tcf->IsWindowVisible())) && !strUrl.IsEmpty())
{
CString url2 = strUrl.Right(m_strPossibleURL.GetLength()+13);
if((pmf->IsWindowVisible() && tcf!=NULL && !tcf->IsWindowVisible()) || url2 == "navcancl.htm#" + m_strPossibleURL /*for IE 5*/|| strUrl == "about:NavigationCanceled" /*for IE4*/ || strUrl==m_strPossibleURL)
{
if(tcf!=NULL)
{
tcf->PostMessage(WM_CLOSE);
m_bToClose = TRUE;
}
m_bIsPopUp = FALSE;
}
}
//
try
{
//security flag
if(!m_bToClose)
{
g_bVerbose = TRUE;
if(strUrl.Left(5)=="https")
{
LPDISPATCH pDisp = NULL;
IHTMLDocument2 *pHTMLDoc = NULL;
BSTR p;
try
{
pDisp = GetHtmlDocument();
if( pDisp )
pDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pHTMLDoc);
else
m_bIsSecure = FALSE;
if(pHTMLDoc)
{
if(SUCCEEDED(pHTMLDoc->get_protocol( &p )))
{
CString s(p);
if(s=="HyperText Transfer Protocol with Privacy" || s.Find("私人验证")>0 || s.Find("玂盞")>0)
m_bIsSecure = TRUE;
else
m_bIsSecure = FALSE;
SysFreeString(p);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -