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

📄 fixedhtmlview.cpp

📁 myie2.4版本的源代码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// FixedHtmlView.cpp : implementation file
//

#include "stdafx.h"
#include "MyIE.h"
#include "FixedHtmlView.h"
#include "MainFrm.h"
#include <Mshtmhst.h>


#ifdef AFX_HTML_SEG
#pragma code_seg(AFX_HTML_SEG)
#endif

#pragma optimize( "t", on )


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

#define IDC_BROWSER_CONTROL 100


/////////////////////////////////////////////////////////////////////////////
// CFixedHtmlView

IMPLEMENT_DYNCREATE(CFixedHtmlView, CView)

CFixedHtmlView::CFixedHtmlView()
{//12/27
//	m_pBrowserApp = NULL;
	
	glpDisp = NULL;

	m_bForceResize = FALSE;

	m_tLastClick.LowPart = 0;
	m_tLastRClick.LowPart = 0;
	m_bRClick = FALSE;
}

CFixedHtmlView::~CFixedHtmlView()
{//11/7
/*	try{
	if (m_pBrowserApp != NULL)
		m_pBrowserApp->Release();
	}catch(...)
	{
	}*/
//	if(m_wndBrowser.m_hWnd!=NULL)
//		m_wndBrowser.DestroyWindow();
}


BEGIN_MESSAGE_MAP(CFixedHtmlView, CView)
	//{{AFX_MSG_MAP(CFixedHtmlView)
	ON_WM_PARENTNOTIFY()
	ON_WM_CREATE()
	ON_WM_SIZE()
	ON_WM_DESTROY()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

BEGIN_EVENTSINK_MAP(CFixedHtmlView, CView)
	ON_EVENT(CFixedHtmlView, IDC_BROWSER_CONTROL, 102 /* StatusTextChange */, OnStatusTextChange, VTS_BSTR)
	ON_EVENT(CFixedHtmlView, IDC_BROWSER_CONTROL, 108 /* ProgressChange */, OnProgressChange, VTS_I4 VTS_I4)
	ON_EVENT(CFixedHtmlView, IDC_BROWSER_CONTROL, 105 /* CommandStateChange */, OnCommandStateChange, VTS_I4 VTS_BOOL)
//	ON_EVENT(CFixedHtmlView, IDC_BROWSER_CONTROL, 106 /* DownloadBegin */, OnDownloadBegin, VTS_NONE)
//	ON_EVENT(CFixedHtmlView, IDC_BROWSER_CONTROL, 104 /* DownloadComplete */, OnDownloadComplete, VTS_NONE)
	ON_EVENT(CFixedHtmlView, IDC_BROWSER_CONTROL, 113 /* TitleChange */, OnTitleChange, VTS_BSTR)
	ON_EVENT(CFixedHtmlView, IDC_BROWSER_CONTROL, 252 /* NavigateComplete2 */, NavigateComplete2, VTS_DISPATCH VTS_PVARIANT)
	ON_EVENT(CFixedHtmlView, IDC_BROWSER_CONTROL, 250 /* BeforeNavigate2 */, BeforeNavigate2, VTS_DISPATCH VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PBOOL)
//	ON_EVENT(CFixedHtmlView, IDC_BROWSER_CONTROL, 112 /* PropertyChange */, OnPropertyChange, VTS_BSTR)
	ON_EVENT(CFixedHtmlView, IDC_BROWSER_CONTROL, 251 /* NewWindow2 */, OnNewWindow2, VTS_PDISPATCH VTS_PBOOL)
	ON_EVENT(CFixedHtmlView, IDC_BROWSER_CONTROL, 259 /* DocumentComplete */, DocumentComplete, VTS_DISPATCH VTS_PVARIANT)
//	ON_EVENT(CFixedHtmlView, IDC_BROWSER_CONTROL, 253 /* OnQuit */, OnQuit, VTS_NONE)
//	ON_EVENT(CFixedHtmlView, IDC_BROWSER_CONTROL, 254 /* OnVisible */, OnVisible, VTS_BOOL)
//	ON_EVENT(CFixedHtmlView, IDC_BROWSER_CONTROL, 255 /* OnToolBar */, OnToolBar, VTS_BOOL)
//	ON_EVENT(CFixedHtmlView, IDC_BROWSER_CONTROL, 256 /* OnMenuBar */, OnMenuBar, VTS_BOOL)
//	ON_EVENT(CFixedHtmlView, IDC_BROWSER_CONTROL, 257 /* OnStatusBar */, OnStatusBar, VTS_BOOL)
//	ON_EVENT(CFixedHtmlView, IDC_BROWSER_CONTROL, 258 /* OnFullScreen */, OnFullScreen, VTS_BOOL)
//	ON_EVENT(CFixedHtmlView, IDC_BROWSER_CONTROL, 260 /* OnTheaterMode */, OnTheaterMode, VTS_BOOL)
//328
//	ON_EVENT(CFixedHtmlView, IDC_BROWSER_CONTROL, EVENT_STOCK_ERROREVENT, OnError, VTS_I2 VTS_PBSTR VTS_SCODE VTS_BSTR VTS_BSTR VTS_I4 VTS_PBOOL)
END_EVENTSINK_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFixedHtmlView drawing

void CFixedHtmlView::OnDraw(CDC* pDC)
{
//	CDocument* pDoc = GetDocument();
	// TODO: add draw code here
}

//12/27
void CFixedHtmlView::OnDestroy()
{
/*	try{
	if (m_pBrowserApp != NULL)
		m_pBrowserApp->Release();
	}catch(...)
	{
	}
	m_pBrowserApp = NULL;*/
}

/////////////////////////////////////////////////////////////////////////////
// CFixedHtmlView diagnostics

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

void CFixedHtmlView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CFixedHtmlView message handlers


/*int CFixedHtmlView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
	// Create the embedded browser control:
	// No TRY block needed.
	return 0;
}*/

/*
CString CFixedHtmlView::GetType() 
{
	CString str = m_wndBrowser.GetType();
	return str;
}*/

long CFixedHtmlView::GetLeft() 
{
	long result;
	try{
	result = m_wndBrowser.GetLeft();
	}catch(...)
	{
	}
	return result;
}


long CFixedHtmlView::GetTop() 
{
	long result;
	try{
	result = m_wndBrowser.GetTop();
	}catch(...)
	{
	}
	return result;
}

long CFixedHtmlView::GetHeight() 
{
	long result;
	try{
	result = m_wndBrowser.GetHeight();
	}catch(...)
	{
	}
	return result;
}


long CFixedHtmlView::GetWidth() 
{
	long result;
	try{
	result = m_wndBrowser.GetWidth();
	}catch(...)
	{
	}
	return result;
}

void CFixedHtmlView::SetTop(long nNewValue)
{ 
	try{
	m_wndBrowser.SetTop(nNewValue);
	}catch(...)
	{
	}
}

void CFixedHtmlView::SetLeft(long nNewValue)
{ 
	try{
	m_wndBrowser.SetLeft(nNewValue); 
	}catch(...)
	{
	}
}

void CFixedHtmlView::SetHeight(long nNewValue)
{ 
	try{
	m_wndBrowser.SetHeight(nNewValue);
	}catch(...)
	{
	}
}

void CFixedHtmlView::SetWidth(long nNewValue)
{ 
	try{
	m_wndBrowser.SetWidth(nNewValue); 
	}catch(...)
	{
	}
}

/*
int CFixedHtmlView::GetToolBar() 
{
	return m_wndBrowser.GetToolBar();
}


BOOL CFixedHtmlView::GetVisible() 
{
	return m_wndBrowser.GetVisible();
}
*/
void CFixedHtmlView::GetLocationName(CString& strLocName) 
{
	try
	{
//2.2 315		strLocName = "";
		strLocName= m_wndBrowser.GetLocationName();
	}
/*	catch(CMemoryException* e)
	{
		if(e!=NULL)e->Delete();
	}*/
	catch(...)
	{
	}
}

void CFixedHtmlView::GetLocationURL(CString& strLocURL) 
{
	try
	{
	strLocURL = "";
	strLocURL= m_wndBrowser.GetLocationURL();
	}
/*	catch(CMemoryException* e)
	{
		if(e!=NULL)e->Delete();
	}*/
	catch(...)
	{
	}

}
/*
BOOL CFixedHtmlView::GetBusy() 
{
	return m_wndBrowser.GetBusy();
}*/

READYSTATE CFixedHtmlView::GetReadyState() 
{
	return (READYSTATE)m_wndBrowser.GetReadyState();
}
/*
BOOL CFixedHtmlView::GetOffline() 
{
	return m_wndBrowser.GetOffline();
}

BOOL CFixedHtmlView::GetSilent() 
{
	return m_wndBrowser.GetSilent();
}
*/
LPDISPATCH CFixedHtmlView::GetApplication() 
{
	try
	{
		return m_wndBrowser.GetApplication();
	}
/*	catch(CMemoryException* e)
	{
		if(e!=NULL)e->Delete();
		return NULL;
	}*/
	catch(...)
	{
		return NULL;
	}
}


/*LPDISPATCH CFixedHtmlView::GetParentBrowser() 
{
	return m_wndBrowser.GetParent();
}

LPDISPATCH CFixedHtmlView::GetContainer() 
{
	return m_wndBrowser.GetContainer();
}*/

LPDISPATCH CFixedHtmlView::GetHtmlDocument() 
{
	try
	{//b5
		return m_wndBrowser.GetDocument();
	}
	catch(...)
	{
		return NULL;
	}
}
/*
BOOL CFixedHtmlView::GetTopLevelContainer() 
{
	return m_wndBrowser.GetTopLevelContainer();
}

BOOL CFixedHtmlView::GetMenuBar() 
{
	return m_wndBrowser.GetMenuBar();
}

BOOL CFixedHtmlView::GetFullScreen() 
{
	return m_wndBrowser.GetFullScreen();
}

BOOL CFixedHtmlView::GetStatusBar() 
{
	return m_wndBrowser.GetStatusBar();
}
*/
OLECMDF CFixedHtmlView::QueryStatusWB(OLECMDID cmdID) 
{
	return (OLECMDF)m_wndBrowser.QueryStatusWB(cmdID);

}

void CFixedHtmlView::ExecWB(OLECMDID cmdID, OLECMDEXECOPT cmdexecopt,
	VARIANT* pvaIn, VARIANT* pvaOut)
{
	LPDISPATCH lpDisp = NULL;
	IWebBrowser2* lpWB = NULL;

	try{
	lpDisp = m_wndBrowser.GetApplication();
	if(lpDisp != NULL)
	{
		//2.2
		if(SUCCEEDED(lpDisp->QueryInterface(IID_IWebBrowser2, (void**)&lpWB)))
		{
			lpWB->ExecWB(cmdID, cmdexecopt, pvaIn, pvaOut);
		}
	}

	}
	catch(...)
	{
	}

//2.2
	try{
		if(lpWB!=NULL)
			lpWB->Release();
		if(lpDisp!=NULL)
			lpDisp->Release();
	}
	catch(...)
	{
	}
}

/*
BOOL CFixedHtmlView::GetRegisterAsBrowser() 
{
	return m_wndBrowser.GetRegisterAsBrowser();
}

BOOL CFixedHtmlView::GetRegisterAsDropTarget() 
{
	return m_wndBrowser.GetRegisterAsDropTarget();
}

BOOL CFixedHtmlView::GetTheaterMode() 
{
	return m_wndBrowser.GetTheaterMode();
}

BOOL CFixedHtmlView::GetAddressBar() 
{
	return m_wndBrowser.GetAddressBar();
}*/

/////////////////////////////////////////////////////////////////////////////
// CFixedHtmlView operations

BOOL CFixedHtmlView::LoadFromResource(LPCTSTR lpszResource)
{
	HINSTANCE hInstance = AfxGetResourceHandle();
	ASSERT(hInstance != NULL);

	CString strResourceURL;
	BOOL bRetVal = TRUE;
//	LPTSTR lpszModule = new TCHAR[_MAX_PATH];
	TCHAR lpszModule[_MAX_PATH];

	if (GetModuleFileName(hInstance, lpszModule, _MAX_PATH))
	{
		strResourceURL.Format(_T("res://%s/%s"), lpszModule, lpszResource);
		Navigate(strResourceURL, 0, 0, 0);
	}
	else
		bRetVal = FALSE;

//	delete [] lpszModule;
	return bRetVal;
}

BOOL CFixedHtmlView::LoadFromResource(UINT nRes)
{
	HINSTANCE hInstance = AfxGetResourceHandle();
	ASSERT(hInstance != NULL);

	CString strResourceURL;
	BOOL bRetVal = TRUE;
//	LPTSTR lpszModule = new TCHAR[_MAX_PATH];
	TCHAR lpszModule[_MAX_PATH];

	if (GetModuleFileName(hInstance, lpszModule, _MAX_PATH))
	{
		strResourceURL.Format(_T("res://%s/%d"), lpszModule, nRes);
		Navigate(strResourceURL, 0, 0, 0);
	}
	else
		bRetVal = FALSE;

//	delete [] lpszModule;
	return bRetVal;
}

void CFixedHtmlView::Navigate(LPCTSTR lpszURL, DWORD dwFlags /* = 0 */,
	LPCTSTR lpszTargetFrameName /* = NULL */ ,
	LPCTSTR lpszHeaders /* = NULL */, LPVOID lpvPostData /* = NULL */,
	DWORD dwPostDataLen /* = 0 */)
{
//	if(m_pBrowserApp == NULL)
//		return;

	LPDISPATCH lpDisp = NULL;
	IWebBrowser2* lpWB = NULL;
	BSTR bstrURL = NULL;
	try
	{
	COleSafeArray vPostData;
	if (lpvPostData != NULL)
	{
		if (dwPostDataLen == 0)
			dwPostDataLen = lstrlen((LPCTSTR) lpvPostData);

		vPostData.CreateOneDim(VT_UI1, dwPostDataLen, lpvPostData);
	}

	CString strURL(lpszURL);
	bstrURL = strURL.AllocSysString();
//	m_pBrowserApp->Navigate(bstrURL,
	lpDisp = m_wndBrowser.GetApplication();
	if(lpDisp != NULL)
	{
		//2.2
		if(SUCCEEDED(lpDisp->QueryInterface(IID_IWebBrowser2, (void**)&lpWB)))
		{
			lpWB->Navigate(bstrURL,

⌨️ 快捷键说明

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