📄 fixedhtmlview.cpp
字号:
// 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 + -