📄 myieview.cpp
字号:
if (str.Find('*')>=0 && str!="*")
{
//star filter
i = 0; i2 = 0; start = 0; start2 = 0;
isame = TRUE;cmode = TRUE;
while(start<str.GetLength() && isame)
{
//get the string before *
i=str.Find('*', start);
if(i<0)
{
tmp2 = str.Mid(start);
i=str.GetLength();
}
else
tmp2 = str.Mid(start,i-start);
if(tmp2!="")
{
if(cmode)
{
tmp = url.Mid(start2, i-start);
if(tmp != tmp2)
isame = FALSE;
}
else
{
i2=url.Find(tmp2, start2);
if( i2<0)
isame = FALSE;
}
}
cmode = FALSE;
start = i+1;
start2 = i2 + tmp2.GetLength();
}
}
((CMainFrame*)pMainFrame)->m_astrPopup.GetNext(pos);
}
return isame;
}
/* catch(CMemoryException * e)
{
if(e!=NULL)e->Delete();
// AfxMessageBox("statfilter error");
return FALSE;
}*/
catch(...)
{
return FALSE;
}
}
void CMyIEView::ToNavigate(LPCTSTR URL, DWORD dwFlags, LPCTSTR lpszTargetFrameName, LPCTSTR lpszHeaders, LPVOID lpvPostData, DWORD dwPostDataLen, BOOL bOnlyRefresh)
{
try{
// CString str;
str = URL;
str2 = URL;
m_lpszUrl=URL;
m_bFirst = TRUE;
//2.2 if(dwFlags==0)
// dwFlags = 4;
if(m_bEnWebProxy)
{
if(m_strWebProxy.IsEmpty() && pMainFrame!=NULL)
m_strWebProxy = ((CMainFrame*)pMainFrame)->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(CMemoryException * e)
{
// AfxMessageBox("to nav error");
if(e!=NULL)e->Delete();
}*/
catch(...)
{
}
m_nProgress = -1;
}
void CMyIEView::OnParentNotify(UINT message, LPARAM lParam)
{
CFixedHtmlView::OnParentNotify(message, lParam);
// TODO: Add your message handler code here
try{
//336
CChildFrame* tcf = (CChildFrame*)GetParentFrame();
if((message == WM_LBUTTONDOWN || message == WM_RBUTTONDOWN) && (bLinkInNewWindow || tcf->bLock || m_bAutoFilter) )
{
/* BSTR bstr=NULL;
IHTMLElement* pElem = NULL;
IHTMLDocument2* pHTMLDoc=NULL;
try{
LPDISPATCH pDisp = GetHtmlDocument();
if(pDisp!=NULL)
{
if(SUCCEEDED(pDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pHTMLDoc)))
{
if(SUCCEEDED(pHTMLDoc->elementFromPoint(LOWORD((DWORD)lParam), HIWORD((DWORD)lParam), &pElem)))
{
pElem->get_tagName(&bstr);
pElem->Release();
}
pHTMLDoc->Release();
}
pDisp->Release();
}
}catch(...)
{
}
CString tag("");
try{
if(bstr!=NULL)
{
CString t(bstr);
tag = t;
SysFreeString(bstr);
}
}catch(...)
{}
*/
if(message == WM_LBUTTONDOWN )
{ //get time
QueryPerformanceCounter(&m_tLastClick);
m_bRClick = FALSE;
m_bLClick = TRUE;
m_LClickPT.x = LOWORD((DWORD)lParam);
m_LClickPT.y = HIWORD((DWORD)lParam);
}
else if(message == WM_RBUTTONDOWN ) //&& tag!="BODY" && tag!="TD"
{
QueryPerformanceCounter(&m_tLastRClick);
m_bRClick = TRUE;
m_bLClick = FALSE;
}
else
m_bRClick = FALSE;
}
}catch(...)
{
}
}
void CMyIEView::OnToolsAutoscrollAutoscrollingafterdownloading()
{
// TODO: Add your command handler code here
m_bScrollAfterDL = !m_bScrollAfterDL;
if(pMainFrame!=NULL)
((CMainFrame*)pMainFrame)->m_bDefScrollAfterDL = m_bScrollAfterDL;
}
void CMyIEView::OnUpdateToolsAutoscrollAutoscrollingafterdownloading(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetCheck(m_bScrollAfterDL);
}
void CMyIEView::OnUpdateToolsAutoscrollSpeed(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
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 CMyIEView::OnToolsAutoscrollMedium()
{
// TODO: Add your command handler code here
m_nSrSpeed = 2;
if(pMainFrame!=NULL)
((CMainFrame*)pMainFrame)->m_nDefSrSpeed = m_nSrSpeed;
ChangeSpeed(2);
}
void CMyIEView::OnToolsAutoscrollSlow()
{
// TODO: Add your command handler code here
m_nSrSpeed = 1;
if(pMainFrame!=NULL)
((CMainFrame*)pMainFrame)->m_nDefSrSpeed = m_nSrSpeed;
ChangeSpeed(1);
}
*/
void CMyIEView::OnToolsAutoscrollUseautoscrolling()
{
// TODO: Add your command handler code here
m_bUseAutoScroll = !m_bUseAutoScroll;
if(pMainFrame!=NULL)
((CMainFrame*)pMainFrame)->m_bDefUseAutoScroll = m_bUseAutoScroll;
//start to scroll
if(!m_nScrollTimer && m_bUseAutoScroll && m_nSrSpeed!=0)
{
if(m_nProgress==100 || m_nProgress<0 || (!m_bScrollAfterDL && m_nProgress>=20))
{
//m_nScrollTimer = SetTimer(2132, (UINT)(1000*gSeed/m_nSrSpeed), NULL);
m_nScrollTimer = SetTimer(2132, (UINT)((26 + gSeed * 100)/m_nSrSpeed), NULL);
}
}
else if(!m_bUseAutoScroll && m_nScrollTimer)
{ //stop the timer;
if(m_nScrollTimer)
KillTimer(m_nScrollTimer);
m_nScrollTimer = 0;
}
}
void CMyIEView::OnUpdateToolsAutoscrollUseautoscrolling(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
try
{
((CMainFrame*)pMainFrame)->ToolBarSetCheck(pCmdUI, m_bUseAutoScroll);
}
catch(...)
{
}
/*
if(m_bUseAutoScroll)
{
if(((CMainFrame*)pMainFrame)->m_strBGPic == "" || pCmdUI->m_pMenu !=NULL)
pCmdUI->SetCheck();
else
{
pCmdUI->SetCheck(0);
((CMainFrame*)pMainFrame)->m_wndToolBar.GetToolBarCtrl().PressButton(pCmdUI->m_nID, TRUE);
}
}
else
{
((CMainFrame*)pMainFrame)->m_wndToolBar.GetToolBarCtrl().PressButton(pCmdUI->m_nID, FALSE);
pCmdUI->SetCheck(0);
}*/
}
void CMyIEView::ChangeSpeed(int nSpeed)
{
if(m_nScrollTimer)
{ //stop the timer;
KillTimer(m_nScrollTimer);
m_nScrollTimer = 0;
}
//start to scroll
if(!m_nScrollTimer && m_bUseAutoScroll && nSpeed!=0)
{
if(m_nProgress==100 || m_nProgress<0 || (!m_bScrollAfterDL && m_nProgress>=20))
{
// m_nScrollTimer = SetTimer(2132, (UINT)(1000*gSeed/nSpeed), NULL);
m_nScrollTimer = SetTimer(2132, (UINT)((26 + gSeed * 100)/m_nSrSpeed), NULL);
}
}
}
void WBScroll(CMyIEView* pvw)
{
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(0, 1);
//2.1
//pHTMLWnd->Release();
//pHTMLWnd = NULL;
}
//pHTMLDoc->Release();
//pHTMLDoc = NULL;
}
//pDisp->Release();
//pDisp = NULL;
}
}
/* catch(CException * e)
{//?
// AfxMessageBox("wbs error");
if(e!=NULL)e->Delete();
}*/
catch(...)
{
// AfxMessageBox("wbs error");
}
try{
if(pHTMLWnd!=NULL)
pHTMLWnd->Release();
if(pHTMLDoc!=NULL)
pHTMLDoc->Release();
if(pDisp!=NULL)
pDisp->Release();
}
catch(...)
{
}
}
void CMyIEView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
try{
if(nIDEvent == m_nScrollTimer && m_bUseAutoScroll)
{
WBScroll(this);
}
else if(nIDEvent == m_nAutoRefreshTimer && m_bUseAutoRef && !IsActive)
{
Refresh();
}
CFixedHtmlView::OnTimer(nIDEvent);
}catch(...)
{
}
}
void CMyIEView::OnClose()
{
// TODO: Add your message handler code here and/or call default
try{
CFixedHtmlView::OnClose();
}
catch(...)
{
//SendMessage(WM_CLOSE);
//return;
}
}
void CMyIEView::ChangeProperty()
{
try{
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 CMyIEView::OnToolsAutoref()
{
// TODO: Add your command handler code here
m_bUseAutoRef = !m_bUseAutoRef;
//start to scroll
if(!m_nAutoRefreshTimer && m_bUseAutoRef && m_nRefreshInterval!=0)
{
//m_nScrollTimer = SetTimer(2132, (UINT)(1000*gSeed/m_nSrSpeed), NULL);
m_nAutoRefreshTimer = SetTimer(3132+rand()/500, (UINT)(m_nRefreshInterval*1000), NULL);
}
else if(!m_bUseAutoRef && m_nAutoRefreshTimer)
{ //stop the timer;
if(m_nAutoRefreshTimer)
KillTimer(m_nAutoRefreshTimer);
m_nAutoRefreshTimer = 0;
}
}
void CMyIEView::OnUpdateToolsAutoref(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetCheck(m_bUseAutoRef);
static char sec[10];
if(pCmdUI->m_pMenu!=NULL)
{
itoa(m_nRefreshInterval, sec, 10);
CString menu;
pCmdUI->m_pMenu->GetMenuString(pCmdUI->m_nID, menu, MF_BYCOMMAND);
int i = menu.Find('(');
if(i>0)
menu = menu.Left(i);
menu += "(";
menu += sec;
menu += ")";
pCmdUI->SetText(menu);
}
}
void CMyIEView::OnToolsReffre()
{
// TODO: Add your command handler code here
CSetRefIntervalDlg dlg;
dlg.m_nRefInt = m_nRefreshInterval;
if(dlg.DoModal() == IDOK)
{
m_nRefreshInterval = dlg.m_nRefInt;
((CMainFrame*)pMainFrame)->m_nDefRefreshInterval = m_nRefreshInterval;
//change timer
if(m_bUseAutoRef)
ChangeRefresh();
}
}
void CMyIEView::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_nScrollTimer = SetTimer(2132, (UINT)(1000*gSeed/nSpeed), NULL);
m_nAutoRefreshTimer = SetTimer(3132, (UINT)(m_nRefreshInterval*1000), NULL);
}
}
void CMyIEView::OnNavigateComplete2(LPCTSTR lpszURL)
{
//2.3
try{
CString strUrl;
CChildFrame* tcf = ((CChildFrame*)GetParentFrame());
GetLocationURL(strUrl);
if(!m_bToClose && ((IsPopUp && m_IsNewPopup) || (tcf!=NULL && !tcf->IsWindowVisible())) && !strUrl.IsEmpty())
{
CString url2 = strUrl.Right(m_strPossibleURL.GetLength()+13);
if((pMainFrame->IsWindowVisible() && tcf!=NULL && !tcf->IsWindowVisible()) || url2 == "navcancl.htm#" + m_strPossibleURL /*for IE 5*/|| strUrl == "about:NavigationCanceled" /*for IE4*/ || strUrl==m_strPossibleURL)
{
// CChildFrame* tcf = (CChildFrame*)GetParentFrame();
//IsActive = FALSE;
if(tcf!=NULL)
{
tcf->PostMessage(WM_CLOSE);
m_bToClose = TRUE;
}
IsPopUp = FALSE;
}
}
try{
//2.4 security flag
if(!m_bToClose)
{
if(strUrl.Left(5)=="https")
{
LPDISPATCH pDisp = NULL;
IHTMLDocument2 *pHTMLDoc = NULL;
BSTR p;
try{
pDisp = GetHtmlDocument();
if( pDisp )
{
if (SUCCEEDED(pDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pHTMLDoc)))
{
if(SUCCEEDED(pHTMLDoc->get_protocol( &p )))
{
CString s(p);
if(s=="HyperText Transfer Protocol with Privacy" || s.Find("私人验证")>0 || s.Find("╬
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -