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

📄 myieview.cpp

📁 myie2.4版本的源代码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
// MyIEView.cpp : implementation of the CMyIEView class
//

#include "stdafx.h"
#include "MyIE.h"
#include "MainFrm.h"
#include "ChildFrm.h"
#include <wininet.h>

#include <Mshtmdid.h>
//#include "MyIEDoc.h"
#include "MyIEView.h"
#include "mshtml.h"
#include "SetRefIntervaldlg.h"

#pragma optimize( "t", on )

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMyIEView

IMPLEMENT_DYNCREATE(CMyIEView, CFixedHtmlView)

BEGIN_MESSAGE_MAP(CMyIEView, CFixedHtmlView)
	ON_COMMAND(ID_EDIT_COPY, OnEditCopy)
	ON_COMMAND(ID_EDIT_CUT, OnEditCut)
	ON_COMMAND(ID_EDIT_FIND, OnEditFind)
	ON_COMMAND(ID_EDIT_PASTE, OnEditPaste)
	ON_COMMAND(ID_EDIT_SELECT_ALL, OnEditSelectAll)
	ON_COMMAND(ID_OPTIONS_LOADIMAGE, OnOptionsLoadimage)
	ON_UPDATE_COMMAND_UI(ID_OPTIONS_LOADIMAGE, OnUpdateOptions)
	ON_COMMAND(ID_OPTIONS_ALLOWSCRIPTS, OnOptionsAllowscripts)
	ON_COMMAND(ID_OPTIONS_LOADSOUNDS, OnOptionsLoadsounds)
	ON_COMMAND(ID_OPTIONS_LOADVIDEOS, OnOptionsLoadvideos)
	ON_COMMAND(ID_OPTIONS_USE_WEBP, OnOptionsUseWebp)
	ON_UPDATE_COMMAND_UI(ID_OPTIONS_USE_WEBP, OnUpdateOptionsUseWebp)
	ON_COMMAND(ID_OPTIONS_ALLOWACTIVEX, OnOptionsAllowactivex)
	ON_COMMAND(ID_OPTIONS_ALLOWJAVAAPPLET, OnOptionsAllowjavaapplet)
	ON_UPDATE_COMMAND_UI(ID_GO_BACK, OnUpdateGoBack)
	ON_UPDATE_COMMAND_UI(ID_GO_FORWARD, OnUpdateGoForward)
//	ON_WM_ERASEBKGND()
	ON_UPDATE_COMMAND_UI(ID_OPTIONS_ALLOWSCRIPTS, OnUpdateOptions)
	ON_UPDATE_COMMAND_UI(ID_OPTIONS_LOADSOUNDS, OnUpdateOptions)
	ON_UPDATE_COMMAND_UI(ID_OPTIONS_LOADVIDEOS, OnUpdateOptions)
	ON_UPDATE_COMMAND_UI(ID_OPTIONS_ALLOWACTIVEX, OnUpdateOptions)
	ON_UPDATE_COMMAND_UI(ID_OPTIONS_ALLOWJAVAAPPLET, OnUpdateOptions)
	ON_WM_SIZE()
	ON_UPDATE_COMMAND_UI(ID_VIEW_FONTS_LARGEST, OnUpdateViewFonts)
	ON_UPDATE_COMMAND_UI(ID_VIEW_FONTS_LARGE, OnUpdateViewFonts)
	ON_UPDATE_COMMAND_UI(ID_VIEW_FONTS_MEDIUM, OnUpdateViewFonts)
	ON_UPDATE_COMMAND_UI(ID_VIEW_FONTS_SMALL, OnUpdateViewFonts)
	ON_UPDATE_COMMAND_UI(ID_VIEW_FONTS_SMALLEST, OnUpdateViewFonts)
	//{{AFX_MSG_MAP(CMyIEView)
	ON_WM_PARENTNOTIFY()
	ON_WM_TIMER()
	ON_WM_CLOSE()
	ON_COMMAND(ID_TOOLS_AUTOREF, OnToolsAutoref)
	ON_UPDATE_COMMAND_UI(ID_TOOLS_AUTOREF, OnUpdateToolsAutoref)
	ON_COMMAND(ID_TOOLS_REFFRE, OnToolsReffre)
	ON_COMMAND(ID_TOOLS_AUTOFILTER_CUR, OnToolsAutofilterCur)
	ON_UPDATE_COMMAND_UI(ID_TOOLS_AUTOFILTER_CUR, OnUpdateToolsAutofilterCur)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_GO_BACK, OnGoBack)
	ON_COMMAND(ID_GO_FORWARD, OnGoForward)
//	ON_COMMAND(ID_GO_SEARCH_THE_WEB, OnGoSearchTheWeb)
	ON_COMMAND(ID_GO_START_PAGE, OnGoStartPage)
	/*ON_COMMAND(ID_HELP_WEB_TUTORIAL, OnHelpWebTutorial)
	ON_COMMAND(ID_HELP_ONLINE_SUPPORT, OnHelpOnlineSupport)
	ON_COMMAND(ID_HELP_MICROSOFT_ON_THE_WEB_FREE_STUFF, OnHelpMicrosoftOnTheWebFreeStuff)
	ON_COMMAND(ID_HELP_MICROSOFT_ON_THE_WEB_FREQUENTLY_ASKED_QUESTIONS, OnHelpMicrosoftOnTheWebFrequentlyAskedQuestions)
	ON_COMMAND(ID_HELP_MICROSOFT_ON_THE_WEB_GET_FASTER_INTERNET_ACCESS, OnHelpMicrosoftOnTheWebGetFasterInternetAccess)
	ON_COMMAND(ID_HELP_MICROSOFT_ON_THE_WEB_MICROSOFT_HOME_PAGE, OnHelpMicrosoftOnTheWebMicrosoftHomePage)
	ON_COMMAND(ID_HELP_MICROSOFT_ON_THE_WEB_SEARCH_THE_WEB, OnHelpMicrosoftOnTheWebSearchTheWeb)
	ON_COMMAND(ID_HELP_MICROSOFT_ON_THE_WEB_SEND_FEEDBACK, OnHelpMicrosoftOnTheWebSendFeedback)
	ON_COMMAND(ID_HELP_MICROSOFT_ON_THE_WEB_INTERNET_START_PAGE, OnHelpMicrosoftOnTheWebInternetStartPage)
	ON_COMMAND(ID_HELP_MICROSOFT_ON_THE_WEB_BEST_OF_THE_WEB, OnHelpMicrosoftOnTheWebBestOfTheWeb) */
//	ON_COMMAND(ID_VIEW_FONTS_LARGEST, OnViewFontsLargest)
//	ON_COMMAND(ID_VIEW_FONTS_LARGE, OnViewFontsLarge)
//	ON_COMMAND(ID_VIEW_FONTS_MEDIUM, OnViewFontsMedium)
//	ON_COMMAND(ID_VIEW_FONTS_SMALL, OnViewFontsSmall)
//	ON_COMMAND(ID_VIEW_FONTS_SMALLEST, OnViewFontsSmallest)
//	ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
	ON_COMMAND(ID_TOOLS_AUTOSCROLL_AUTOSCROLLINGAFTERDOWNLOADING, OnToolsAutoscrollAutoscrollingafterdownloading)
	ON_UPDATE_COMMAND_UI(ID_TOOLS_AUTOSCROLL_AUTOSCROLLINGAFTERDOWNLOADING, OnUpdateToolsAutoscrollAutoscrollingafterdownloading)
//	ON_COMMAND(ID_TOOLS_AUTOSCROLL_FAST, OnToolsAutoscrollFast)
	ON_UPDATE_COMMAND_UI(ID_TOOLS_AUTOSCROLL_FAST, OnUpdateToolsAutoscrollSpeed)
//	ON_COMMAND(ID_TOOLS_AUTOSCROLL_MEDIUM, OnToolsAutoscrollMedium)
	ON_UPDATE_COMMAND_UI(ID_TOOLS_AUTOSCROLL_MEDIUM, OnUpdateToolsAutoscrollSpeed)
	ON_UPDATE_COMMAND_UI(ID_TOOLS_AUTOSCROLL_SLOW, OnUpdateToolsAutoscrollSpeed)
	ON_COMMAND(ID_TOOLS_AUTOSCROLL_USEAUTOSCROLLING, OnToolsAutoscrollUseautoscrolling)
	ON_UPDATE_COMMAND_UI(ID_TOOLS_AUTOSCROLL_USEAUTOSCROLLING, OnUpdateToolsAutoscrollUseautoscrolling)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyIEView construction/destruction

CMyIEView::CMyIEView()
{
	// TODO: add construction code here
	IsPopUp = FALSE;
	dwProperty = 0;
	m_nFilterDup = 0;
	m_bEnWebProxy = FALSE;

	IsActive = FALSE;
	m_bReUsed = FALSE;

	m_back= FALSE;
	m_forward = FALSE;

	m_nProgress = -1;

	m_IsNewPopup = FALSE;

	bDelayAdd = TRUE;

	m_nDupID = -1;

	m_bToClose = FALSE;

	m_bIsSecure = FALSE;

	m_nFontSize = nDefFontSize; //4, smallest, 3, small, 2, medium, 1, large, 0, largest

	//load internet setting
	HKEY            hKey;
	TCHAR           sz[MAX_PATH];
	DWORD           dwSize = MAX_PATH;

	if(RegOpenKey(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Internet Explorer\\Main"), &hKey) != ERROR_SUCCESS)
	{
		TRACE0("Main setting not found\n");
		return ;
	}
	dwSize = sizeof(sz);
	RegQueryValueEx(hKey, _T("Display Inline Images"), NULL, NULL, (LPBYTE)sz, &dwSize);
	if(strcmp(sz, "yes")==0)
		dwProperty |=DLCTL_DLIMAGES;
	
	dwSize = MAX_PATH;
	RegQueryValueEx(hKey, _T("Display Inline Videos"), NULL, NULL, (LPBYTE)sz, &dwSize);
	if(strcmp(sz, "yes")==0)
		dwProperty |=DLCTL_VIDEOS;

	dwSize = MAX_PATH;
	RegQueryValueEx(hKey, _T("Play_Background_Sounds"), NULL, NULL, (LPBYTE)sz, &dwSize);
	if(strcmp(sz, "yes")==0)
		dwProperty |=DLCTL_BGSOUNDS;

	RegCloseKey(hKey);

	if(AfxGetApp()->GetProfileInt("Settings", "NoJava", 0))
		dwProperty |= DLCTL_NO_JAVA;

	if(AfxGetApp()->GetProfileInt("Settings", "NoActivex", 0))
		dwProperty |= DLCTL_NO_RUNACTIVEXCTLS;

	if(AfxGetApp()->GetProfileInt("Settings", "NoScript", 0))
		dwProperty |= DLCTL_NO_SCRIPTS;

	//keep silent???
//	if(bSilent)
//		dwProperty |= DLCTL_SILENT;

	m_bForceRefresh = FALSE;

	m_bFirst = TRUE;

	m_nSrSpeed = 1; //1-slow, 2-medium, 3-fast
	m_bScrollAfterDL = TRUE;
	m_bUseAutoScroll = FALSE;

	m_nScrollTimer = 0;

	oldIcon = -1;

	m_nCurHistory = -1;
	m_nHistoryLength = 0;

	m_bAutoFilter = EnableAutoFilter;

	m_LClickPT.x=0;
	m_LClickPT.y = 0;

	m_nAutoRefreshTimer = 0;
	m_bUseAutoRef = FALSE;
	if(pMainFrame!=NULL)
		m_nRefreshInterval = ((CMainFrame*)pMainFrame)->m_nDefRefreshInterval;
}

CMyIEView::~CMyIEView()
{
	try{
	if(m_nScrollTimer)
		KillTimer(m_nScrollTimer);

	if(m_nAutoRefreshTimer)
		KillTimer(m_nAutoRefreshTimer);
	}catch(...)
	{
	}
}

BOOL CMyIEView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs
	//cs.style |= WS_CLIPCHILDREN;
	try{
    cs.lpszClass = AfxRegisterWndClass(
       CS_DBLCLKS,                       // if you need double-clicks
       NULL,                             // no cursor (use default)
       NULL,                             // no background brush
       NULL); // app icon
    ASSERT(cs.lpszClass);
	}
	catch(...)
	{
	}
	return CFixedHtmlView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CMyIEView drawing


void CMyIEView::OnInitialUpdate(int nOpenType, LPCSTR strUrl)
{
	try{
	m_bFirst = TRUE;
	CFixedHtmlView::OnInitialUpdate();
	if (nOpenType == 0)
	{
		m_lpszUrl = "about:blank";
		Navigate2(m_lpszUrl, 0, NULL);
	}
	else if (nOpenType == 2)
		if(strUrl!=NULL && strUrl!="")
		{
			Navigate2(strUrl, 0, NULL);
			m_lpszUrl = strUrl;
		}
		else
		{
			m_lpszUrl = "about:blank";
			Navigate2(m_lpszUrl, 0, NULL);
		}
	else
		GoHome();

	//nOpenType = 1;

	m_strWebProxy = ((CMainFrame*)(AfxGetApp()->m_pMainWnd))->m_strDefaultWebProxy;

	}/*catch(CMemoryException * e)
	{
//		AfxMessageBox("initial error");
		if(e!=NULL)e->Delete();
	}*/
	catch(...)
	{
	}
	// TODO: This code navigates to a popular spot on the web.
	//  change the code to go where you'd like.
	//Navigate2(_T("http://www.microsoft.com/visualc/"),NULL,NULL);
}

/////////////////////////////////////////////////////////////////////////////
// CMyIEView printing


/////////////////////////////////////////////////////////////////////////////
// CMyIEView diagnostics

#ifdef _DEBUG
void CMyIEView::AssertValid() const
{
	CFixedHtmlView::AssertValid();
}

void CMyIEView::Dump(CDumpContext& dc) const
{
	CFixedHtmlView::Dump(dc);
}

/*CMyIEDoc* CMyIEView::GetDocument() // non-debug version is inline
{
//	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyIEDoc)));
//	return (CMyIEDoc*)m_pDocument;
	return NULL;
}*/
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMyIEView message handlers
void CMyIEView::OnTitleChange(LPCTSTR lpszText)
{
	// this will change the main frame's title bar
//	if (m_pDocument != NULL )
//		m_pDocument->SetTitle(lpszText);

	try{

	CChildFrame* tcf = ((CChildFrame*)GetParentFrame());
	if(tcf!=NULL)
	{
		if(tcf->m_strStickName != "")
		{
			tcf->SetWindowText(tcf->m_strStickName);
		}
		else
		{
			tcf->SetWindowText(lpszText);
		}
		tcf->m_Title = lpszText;
	}

	CString url("");


	//need pay attention!
	try{
	GetLocationURL(url);
	}catch(...)
	{
	}

/*2.3
	if(!IsPopUp && m_IsNewPopup && EnablePopupFilter && m_IsNewPopup && !url.IsEmpty())
	{
		if(((CMainFrame*)pMainFrame)->m_astrPopup.Find(url)!=NULL || PopFilterStar(url))
		{
			IsPopUp = TRUE;
			m_strPossibleURL = url;
		}
	}
	if(IsPopUp && m_IsNewPopup)
	{
		//is the popup is in a frame or top window
		url2 = url.Right(m_strPossibleURL.GetLength()+13);
		if(url2 == "navcancl.htm#" + m_strPossibleURL /*for IE 5* /|| url == "about:NavigationCanceled" /*for IE4* / || url==m_strPossibleURL)
		{
		//	CChildFrame* tcf = (CChildFrame*)GetParentFrame();
		//	tcf->m_pView->IsActive = FALSE;
			if(tcf!=NULL) 
				tcf->PostMessage(WM_CLOSE);

			return;
		}
		else
			tcf->ShowWindow(SW_SHOW);
	//	IsPopUp = FALSE;
	}
	else if(!tcf->IsWindowVisible())
		tcf->ShowWindow(SW_SHOW);
*/


	BOOL bSetAddress = TRUE;
	if(!url.IsEmpty())
	{
		if(m_lpszUrl == url)
			bSetAddress = FALSE;
		else
			m_lpszUrl = url;
//2.3		IsPopUp=FALSE;
	}

	if(pMainFrame!=NULL)
	{
		//set the new title of tab
		if(tcf->m_strStickName=="")
		{
			int nTabID = ((CMainFrame*)pMainFrame)->FindTab((CChildFrame*)GetParentFrame());
			((CMainFrame*)pMainFrame)->SetTabTitle( (char*)lpszText, nTabID );
		}
		if(bSetAddress && IsActive && !url.IsEmpty() && url!="")
		{
			((CMainFrame*)pMainFrame)->SetAddress(url);
		
		}

		//update tab bar
		if(!((CMainFrame*)pMainFrame)->m_bAutoTab)
			pMainFrame->PostMessage(WM_UPDATE_TAB);
	}

	//for history
	if(!url.IsEmpty())
		SetHistory(url);
	m_strLastTitle = lpszText;
//	m_strLastURL = url;

	}/*catch(CMemoryException * e)
	{
//		AfxMessageBox("title change error");
		if(e!=NULL)e->Delete();
	}
	catch(CException * e)
	{
		if(e!=NULL)e->Delete();
	}*/
	catch(...)
	{
	}
}

void WBShowScrollBar(CMyIEView* pvw)
{
	try{
		LPDISPATCH pDisp = NULL;

		IHTMLDocument2 *pHTMLDoc = NULL;
		IHTMLElement * pHTMLElem = NULL;
		IHTMLBodyElement *pHTMLBody = NULL;

		try{
		pDisp = pvw->GetHtmlDocument();
		if( pDisp )
		{
			if (SUCCEEDED(pDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pHTMLDoc)))
			{
				if(SUCCEEDED(pHTMLDoc->get_body( &pHTMLElem )))
				{
					if (SUCCEEDED(pHTMLElem->QueryInterface(IID_IHTMLBodyElement, (void**)&pHTMLBody)))
					{
						pHTMLBody->put_scroll(bstryes);

						//pHTMLBody->Release();
						//pHTMLBody = NULL;
					}
					//pHTMLElem->Release();
					//pHTMLElem = NULL;
				}
				//pHTMLDoc->Release();
				//pHTMLDoc = NULL;
			}
			//pDisp->Release();
			//pDisp = NULL;
		}
		}
		catch(...)
		{//?
 		//	AfxMessageBox("Show scrollbar error");
		}
		try{
			if(pHTMLBody!=NULL)
				pHTMLBody->Release();
			if(pHTMLElem!=NULL)
				pHTMLElem->Release();
			if(pHTMLDoc!=NULL)
				pHTMLDoc->Release();
			if(pDisp!=NULL)
				pDisp->Release();
		}catch(...)
		{
		}
	}catch(...)
	{
	}
}

void CMyIEView::OnDocumentComplete(LPCTSTR lpszUrl)
{
	// make sure the main frame has the new URL.  This call also stops the animation

	try{
		CString strUrl;
		GetLocationURL(strUrl);
		if((strUrl == "" || strUrl.IsEmpty()) && lpszUrl!=NULL)
			strUrl = lpszUrl;
		m_lpszUrl = strUrl;

		//filter popup
		if(!m_bToClose && !IsPopUp && pMainFrame!=NULL && EnablePopupFilter && !strUrl.IsEmpty())
		{
	//2.2 m_IsNewPopup && 
			if((((CMainFrame*)pMainFrame)->m_astrPopup.Find(strUrl)!=NULL || PopFilterStar(strUrl)))
			{
				IsPopUp = TRUE;
				m_strPossibleURL = strUrl;
				m_nProgress = -1;
				CChildFrame* tcf = ((CChildFrame*)GetParentFrame());
				if(tcf!=NULL)
				{
					tcf->PostMessage(WM_CLOSE);
					m_bToClose = TRUE;
					return;
				}
			}
		}

	if(glpDisp == NULL) //complete
	{
		m_nProgress = -1;
		
		if(IsActive && pMainFrame!=NULL && !strUrl.IsEmpty())
		{
			//((CMainFrame*)((CChildFrame*)GetParentFrame()->GetParentFrame()))->SetAddress(strUrl);
			((CMainFrame*)pMainFrame)->SetAddress(strUrl);
			percent= -1;	
		}

		//set icon
		if(pMainFrame!=NULL)
		{
			
			if((m_nProgress>95 || m_nProgress<0) && !strUrl.IsEmpty())
			{
				int nTabID = ((CMainFrame*)pMainFrame)->FindTab((CChildFrame*)GetParentFrame());
				int oi = oldIcon;
				if(IsActive)
				{
					if(((CChildFrame*)GetParentFrame())->bLock)
						oldIcon = ((CMainFrame*)pMainFrame)->SetTabIcon( 4, nTabID );
					else if(((CChildFrame*)GetParentFrame())->bProtect)
						oldIcon = ((CMainFrame*)pMainFrame)->SetTabIcon( 6, nTabID );
					else
						oldIcon = ((CMainFrame*)pMainFrame)->SetTabIcon( -1, nTabID );

					//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);
						}
					}

				}

⌨️ 快捷键说明

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