733 lines
24 KiB
C++
733 lines
24 KiB
C++
// =============================================================================
|
|
// Class Implementation : COXWebView
|
|
// =============================================================================
|
|
//
|
|
// This software along with its related components, documentation and files ("The Libraries")
|
|
// is © 1994-2007 The Code Project (1612916 Ontario Limited) and use of The Libraries is
|
|
// governed by a software license agreement ("Agreement"). Copies of the Agreement are
|
|
// available at The Code Project (www.codeproject.com), as part of the package you downloaded
|
|
// to obtain this file, or directly from our office. For a copy of the license governing
|
|
// this software, you may contact us at legalaffairs@codeproject.com, or by calling 416-849-8900.
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "StdAfx.h"
|
|
#include "OXWebView.h"
|
|
#include "OXMainRes.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
|
|
#ifndef CSC_NAVIGATEBACK
|
|
#define CSC_NAVIGATEBACK 2
|
|
#endif
|
|
|
|
#ifndef CSC_NAVIGATEFORWARD
|
|
#define CSC_NAVIGATEFORWARD 1
|
|
#endif
|
|
|
|
// Edit control that adds item to combobox upon pressing enter.
|
|
|
|
const int ECA_NO_DUPLICATES = 0x1;
|
|
const int ECA_DEFAULT = ECA_NO_DUPLICATES;
|
|
|
|
class OX_CLASS_DECL CEditComboboxAdder : public CEdit
|
|
{
|
|
public:
|
|
CEditComboboxAdder(CWnd* pCB, int nFlags = ECA_DEFAULT, int nMaxEntries = 20);
|
|
virtual BOOL PreTranslateMessage(MSG* pMsg);
|
|
protected:
|
|
virtual void PostNcDestroy()
|
|
{
|
|
delete this;
|
|
}
|
|
private:
|
|
// Note: The control ID for the edit control of a combobox
|
|
// is 1001. It seems quite unlikely that Microsoft
|
|
// would ever change this, but if it happens, the
|
|
// following anonymous enumeration will need updating.
|
|
|
|
enum { IDC_COMBOBOX_EDIT = 1001 };
|
|
|
|
CComboBox* m_pCB;
|
|
int m_nMaxEntries;
|
|
int m_nFlags;
|
|
};
|
|
|
|
CEditComboboxAdder::CEditComboboxAdder(CWnd* pCB, int nFlags, int nMaxEntries)
|
|
:
|
|
m_nFlags(nFlags),
|
|
m_nMaxEntries(nMaxEntries)
|
|
{
|
|
UINT uiEdit = IDC_COMBOBOX_EDIT;
|
|
m_pCB = (CComboBox*)pCB;
|
|
ASSERT_VALID(pCB);
|
|
VERIFY(SubclassDlgItem(uiEdit, pCB));
|
|
}
|
|
|
|
BOOL CEditComboboxAdder::PreTranslateMessage(MSG* pMsg)
|
|
{
|
|
if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN)
|
|
{
|
|
CString s;
|
|
GetWindowText(s);
|
|
|
|
// If we are supposed to prevent duplicates, and the
|
|
// given item exists, delete it.
|
|
|
|
int nDupe;
|
|
if ((m_nFlags & ECA_NO_DUPLICATES) &&
|
|
((nDupe = m_pCB->FindStringExact(-1, s)) != CB_ERR))
|
|
{
|
|
m_pCB->DeleteString(nDupe);
|
|
}
|
|
|
|
// Add the item to the top and select it.
|
|
|
|
m_pCB->InsertString(0, s);
|
|
m_pCB->SetCurSel(0);
|
|
|
|
// If we have more than the maximum, trim the list.
|
|
|
|
for (int n = m_pCB->GetCount(); n > m_nMaxEntries; n--)
|
|
m_pCB->DeleteString(n - 1);
|
|
|
|
// Fake the selection change notifcation.
|
|
|
|
CWnd* pwndParent = m_pCB->GetParent();
|
|
if (pwndParent != NULL)
|
|
{
|
|
WPARAM w = MAKEWPARAM(m_pCB->GetDlgCtrlID(), CBN_SELCHANGE);
|
|
LPARAM l = (LPARAM)m_pCB->GetSafeHwnd();
|
|
pwndParent->PostMessage(WM_COMMAND, w, l);
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// COXWebView
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Definition of static members
|
|
|
|
// Data members -------------------------------------------------------------
|
|
// private:
|
|
|
|
CFont* COXWebView::m_pfontToolbarURL;
|
|
int COXWebView::m_nNumInstantiated;
|
|
|
|
IMPLEMENT_DYNCREATE(COXWebView, CView)
|
|
|
|
BEGIN_MESSAGE_MAP(COXWebView, CView)
|
|
//{{AFX_MSG_MAP(COXWebView)
|
|
ON_WM_CREATE()
|
|
ON_WM_SIZE()
|
|
ON_COMMAND(ID_OX_WEBVIEW_BACK, OnWebviewBack)
|
|
ON_COMMAND(ID_OX_WEBVIEW_FORWARD, OnWebviewForward)
|
|
ON_UPDATE_COMMAND_UI(ID_OX_WEBVIEW_BACK, OnUpdateWebviewBack)
|
|
ON_UPDATE_COMMAND_UI(ID_OX_WEBVIEW_FORWARD, OnUpdateWebviewForward)
|
|
ON_COMMAND(ID_OX_WEBVIEW_HOME, OnWebviewHome)
|
|
ON_COMMAND(ID_OX_WEBVIEW_SEARCH, OnWebviewSearch)
|
|
ON_UPDATE_COMMAND_UI(ID_OX_WEBVIEW_STOP, OnUpdateWebviewStop)
|
|
ON_COMMAND(ID_OX_WEBVIEW_STOP, OnWebviewStop)
|
|
ON_UPDATE_COMMAND_UI(ID_FILE_PRINT_PREVIEW, OnUpdateFilePrintPreview)
|
|
ON_COMMAND(ID_FILE_PRINT, OnFilePrint)
|
|
ON_UPDATE_COMMAND_UI(ID_OX_WEBVIEW_REFRESH, OnUpdateWebviewRefresh)
|
|
ON_COMMAND(ID_OX_WEBVIEW_REFRESH, OnWebviewRefresh)
|
|
//}}AFX_MSG_MAP
|
|
// Standard printing commands
|
|
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
|
|
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
|
|
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
|
|
|
|
ON_CBN_SELCHANGE(IDC_TOOLBAR_URL, OnToolbarURLChange)
|
|
ON_NOTIFY_EX(TTN_NEEDTEXTA, 0, OnTooltipNeedText)
|
|
ON_NOTIFY_EX(TTN_NEEDTEXTW, 0, OnTooltipNeedText)
|
|
//ON_NOTIFY_EX_RANGE(TTN_NEEDTEXT, 0, 0xFFFFFFFF, OnTooltipNeedText)
|
|
|
|
END_MESSAGE_MAP()
|
|
|
|
BEGIN_EVENTSINK_MAP(COXWebView, CView)
|
|
ON_EVENT(COXWebView, IDC_WEB_CTRL, 0x64, BeforeNavigate, VTS_BSTR VTS_I4 VTS_BSTR VTS_PVARIANT VTS_BSTR VTS_PVARIANT)
|
|
ON_EVENT(COXWebView, IDC_WEB_CTRL, 0x65, NavigateComplete, VTS_BSTR)
|
|
ON_EVENT(COXWebView, IDC_WEB_CTRL, 0x66, StatusTextChange, VTS_BSTR)
|
|
ON_EVENT(COXWebView, IDC_WEB_CTRL, 0x67, Quit, VTS_PVARIANT)
|
|
ON_EVENT(COXWebView, IDC_WEB_CTRL, 0x6a, DownloadBegin, VTS_NONE)
|
|
ON_EVENT(COXWebView, IDC_WEB_CTRL, 0x6b, NewWindow, VTS_BSTR VTS_I4 VTS_BSTR VTS_PVARIANT VTS_BSTR VTS_PVARIANT)
|
|
ON_EVENT(COXWebView, IDC_WEB_CTRL, 0x6c, ProgressChange, VTS_I4 VTS_I4)
|
|
ON_EVENT(COXWebView, IDC_WEB_CTRL, 0x68, DownloadComplete, VTS_NONE)
|
|
ON_EVENT(COXWebView, IDC_WEB_CTRL, 0x69, CommandStateChange, VTS_I4 VTS_BOOL)
|
|
ON_EVENT(COXWebView, IDC_WEB_CTRL, 0x70, PropertyChange, VTS_BSTR)
|
|
ON_EVENT(COXWebView, IDC_WEB_CTRL, 0x71, TitleChange, VTS_BSTR)
|
|
ON_EVENT(COXWebView, IDC_WEB_CTRL, 0xc8, FrameBeforeNavigate, VTS_BSTR VTS_I4 VTS_BSTR VTS_PVARIANT VTS_BSTR VTS_PVARIANT)
|
|
ON_EVENT(COXWebView, IDC_WEB_CTRL, 0xc9, FrameNavigateComplete, VTS_BSTR)
|
|
ON_EVENT(COXWebView, IDC_WEB_CTRL, 0xcc, FrameNewWindow, VTS_BSTR VTS_I4 VTS_BSTR VTS_PVARIANT VTS_BSTR VTS_PVARIANT)
|
|
END_EVENTSINK_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// COXWebView construction/destruction
|
|
|
|
COXWebView::COXWebView()
|
|
// --- In :
|
|
// --- Out :
|
|
// --- Returns :
|
|
// --- Effect : Contructor of object
|
|
// It will initialize the internal state
|
|
:
|
|
m_bCanGoBack(FALSE),
|
|
m_bCanGoForward(FALSE),
|
|
m_bCanRefresh(FALSE)
|
|
{
|
|
if (m_nNumInstantiated++ == 0)
|
|
{
|
|
CDC DC;
|
|
DC.CreateCompatibleDC(NULL);
|
|
LOGFONT lf;
|
|
memset(&lf, 0, sizeof(lf));
|
|
_tcscpy(lf.lfFaceName, _T("MS Sans Serif"));
|
|
const int POINTS_PER_INCH = 72;
|
|
const int PPLIY = DC.GetDeviceCaps(LOGPIXELSY);
|
|
lf.lfHeight = -MulDiv(8, PPLIY, POINTS_PER_INCH);
|
|
m_pfontToolbarURL = new CFont;
|
|
m_pfontToolbarURL->CreateFontIndirect(&lf);
|
|
}
|
|
}
|
|
|
|
COXWebView::~COXWebView()
|
|
{
|
|
if (--m_nNumInstantiated == 0)
|
|
{
|
|
delete m_pfontToolbarURL;
|
|
m_pfontToolbarURL = NULL;
|
|
}
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// COXWebView drawing
|
|
|
|
void COXWebView::OnDraw(CDC* /* pDC */)
|
|
{
|
|
// no implementation
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// COXWebView printing
|
|
|
|
BOOL COXWebView::OnPreparePrinting(CPrintInfo* pInfo)
|
|
{
|
|
// default preparation
|
|
return DoPreparePrinting(pInfo);
|
|
}
|
|
|
|
void COXWebView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
|
|
{
|
|
// TODO: add extra initialization before printing
|
|
}
|
|
|
|
void COXWebView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
|
|
{
|
|
// TODO: add cleanup after printing
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// COXWebView diagnostics
|
|
|
|
#ifdef _DEBUG
|
|
void COXWebView::AssertValid() const
|
|
{
|
|
CView::AssertValid();
|
|
}
|
|
|
|
void COXWebView::Dump(CDumpContext& dc) const
|
|
{
|
|
CView::Dump(dc);
|
|
}
|
|
|
|
#endif //_DEBUG
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// COXWebView message handlers
|
|
|
|
int COXWebView::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
{
|
|
if (CView::OnCreate(lpCreateStruct) == -1)
|
|
return -1;
|
|
|
|
// Fail if we cannot create the web control.
|
|
|
|
if (!m_WebCtrl.Create(_T(""), WS_VISIBLE|WS_CHILD,
|
|
CRect(0, 0, 0, 0), this, IDC_WEB_CTRL))
|
|
{
|
|
TRACE0("COXWebView::OnCreate could not create web control\n");
|
|
return -1;
|
|
}
|
|
|
|
// The control ID specified in the create function does
|
|
// not actually get used for the container ID; instead,
|
|
// zero is used. Unfortunately, the RepositionBars method
|
|
// will not actually resize the web control if the container
|
|
// ID is zero. Thus, we set it to something else here. Also,
|
|
// FYI, this cannot be done with SetDlgCtrlID--it sneakily
|
|
// checks to see if the window in question is a client site
|
|
// and changes the ID of the ActiveX control instead. The
|
|
// more MFC does, the more it frustrates customizations.
|
|
|
|
SetWindowLong(m_WebCtrl.GetSafeHwnd(), GWL_ID, 1);
|
|
|
|
#ifdef _DEBUG
|
|
// (Make sure OXWebViev.rc is included in your resource file)
|
|
HINSTANCE hInst = AfxFindResourceHandle(MAKEINTRESOURCE(IDR_OX_WEBVIEW_BAR), RT_TOOLBAR);
|
|
HRSRC hRsrc = ::FindResource(hInst, MAKEINTRESOURCE(IDR_OX_WEBVIEW_BAR), RT_TOOLBAR);
|
|
ASSERT(hRsrc != NULL);
|
|
#endif
|
|
|
|
// Fail if we cannot create the toolbar.
|
|
if (!m_Toolbar.Create(this) ||
|
|
!m_Toolbar.LoadToolBar(IDR_OX_WEBVIEW_BAR))
|
|
{
|
|
TRACE0("COXWebView::OnCreate could not create toolbar\n");
|
|
return -1;
|
|
}
|
|
|
|
// Create the combobox on the toolbar.
|
|
|
|
CRect rc;
|
|
const int HEIGHT = 150;
|
|
const int WIDTH = 200;
|
|
CToolBarCtrl& t = m_Toolbar.GetToolBarCtrl();
|
|
int nNum = t.GetButtonCount();
|
|
t.GetItemRect(nNum - 1, &rc);
|
|
CSize sizeOfs(rc.Width() / 2, rc.top);
|
|
rc.top = sizeOfs.cy;
|
|
rc.bottom = rc.top + HEIGHT;
|
|
rc.left = rc.right + sizeOfs.cx;
|
|
rc.right = rc.left + WIDTH;
|
|
|
|
if (!m_cbxToolbarURL.Create(CBS_DROPDOWN|WS_VISIBLE|WS_TABSTOP|WS_VSCROLL,
|
|
rc, &t, IDC_TOOLBAR_URL))
|
|
{
|
|
TRACE0("COXWebView::OnCreate could not create toolbar URL combo-box\n");
|
|
return -1;
|
|
}
|
|
m_cbxToolbarURL.SetFont(m_pfontToolbarURL, FALSE);
|
|
|
|
// Add combobox edit control handling for entering URLs.
|
|
|
|
CEditComboboxAdder* pCbxEdit;
|
|
pCbxEdit = new CEditComboboxAdder(&m_cbxToolbarURL);
|
|
ASSERT(pCbxEdit != NULL);
|
|
|
|
// Load up the tooltips for the toolbar.
|
|
|
|
VERIFY(m_Tooltips.Create(&m_Toolbar));
|
|
for (int n = 0; n < nNum; n++)
|
|
{
|
|
TBBUTTON btn;
|
|
t.GetButton(n, &btn);
|
|
t.GetItemRect(n, &rc);
|
|
m_Tooltips.AddTool(&t, LPSTR_TEXTCALLBACK, rc, btn.idCommand);
|
|
}
|
|
t.SetToolTips(&m_Tooltips);
|
|
|
|
return 0;
|
|
}
|
|
|
|
void COXWebView::OnSize(UINT nType, int cx, int cy)
|
|
{
|
|
// First, make sure that the view window has finished
|
|
// its own sizing.
|
|
|
|
CView::OnSize(nType, cx, cy);
|
|
UpdateWindow();
|
|
|
|
// Now, force an update of the toolbar, and resize the
|
|
// combobox to take advantage of all available room.
|
|
|
|
CRect rcTB, rc, rcLast;
|
|
RepositionBars(AFX_IDW_TOOLBAR, AFX_IDW_TOOLBAR, 1);
|
|
CToolBarCtrl& t = m_Toolbar.GetToolBarCtrl();
|
|
int nNum = t.GetButtonCount();
|
|
t.GetClientRect(&rcTB);
|
|
m_cbxToolbarURL.GetWindowRect(&rc);
|
|
t.ScreenToClient(&rc);
|
|
t.GetItemRect(nNum - 1, &rcLast);
|
|
const int HOFS = rcLast.Width() / 2;
|
|
rc.left = rcLast.right + HOFS;
|
|
rc.right = rcTB.right;
|
|
|
|
// Make sure the combobox is at least four buttons wide.
|
|
|
|
if (rc.Width() < HOFS * 8)
|
|
rc.right = rc.left + HOFS * 8;
|
|
|
|
m_cbxToolbarURL.MoveWindow(rc);
|
|
}
|
|
|
|
void COXWebView::OnUpdateWebviewBack(CCmdUI* pCmdUI)
|
|
{
|
|
pCmdUI->Enable(m_bCanGoBack);
|
|
}
|
|
|
|
void COXWebView::OnWebviewBack()
|
|
{
|
|
m_WebCtrl.GoBack();
|
|
}
|
|
|
|
void COXWebView::OnUpdateWebviewForward(CCmdUI* pCmdUI)
|
|
{
|
|
pCmdUI->Enable(m_bCanGoForward);
|
|
}
|
|
|
|
void COXWebView::OnWebviewForward()
|
|
{
|
|
m_WebCtrl.GoForward();
|
|
}
|
|
|
|
void COXWebView::OnWebviewHome()
|
|
{
|
|
m_WebCtrl.GoHome();
|
|
}
|
|
|
|
void COXWebView::OnWebviewSearch()
|
|
{
|
|
m_WebCtrl.GoSearch();
|
|
}
|
|
|
|
void COXWebView::OnUpdateWebviewStop(CCmdUI* pCmdUI)
|
|
{
|
|
pCmdUI->Enable(m_WebCtrl.GetBusy());
|
|
}
|
|
|
|
void COXWebView::OnWebviewStop()
|
|
{
|
|
m_WebCtrl.Stop();
|
|
}
|
|
|
|
void COXWebView::OnUpdateWebviewRefresh(CCmdUI* pCmdUI)
|
|
{
|
|
pCmdUI->Enable(m_bCanRefresh);
|
|
}
|
|
|
|
void COXWebView::OnWebviewRefresh()
|
|
{
|
|
m_WebCtrl.Refresh();
|
|
}
|
|
|
|
void COXWebView::OnToolbarURLChange()
|
|
{
|
|
int nSel = m_cbxToolbarURL.GetCurSel();
|
|
if (nSel != CB_ERR)
|
|
{
|
|
CString s;
|
|
m_cbxToolbarURL.GetLBText(nSel, s);
|
|
m_WebCtrl.Navigate(s, NULL, NULL, NULL, NULL);
|
|
}
|
|
}
|
|
|
|
BOOL COXWebView::OnTooltipNeedText(UINT /* id */, NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
// need to handle both ANSI and UNICODE versions of the message
|
|
TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR;
|
|
TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR;
|
|
CString strTipText;
|
|
UINT nID = pNMHDR->idFrom;
|
|
if (pNMHDR->code == TTN_NEEDTEXTA && (pTTTA->uFlags & TTF_IDISHWND) ||
|
|
pNMHDR->code == TTN_NEEDTEXTW && (pTTTW->uFlags & TTF_IDISHWND))
|
|
{
|
|
// idFrom is actually the HWND of the tool
|
|
nID = ((UINT)(WORD)::GetDlgCtrlID((HWND)nID));
|
|
}
|
|
|
|
if (nID != 0) // will be zero on a separator
|
|
{
|
|
strTipText.LoadString(nID);
|
|
int nNewLine = strTipText.Find('\n');
|
|
if (nNewLine != -1)
|
|
strTipText = strTipText.Mid(nNewLine + 1);
|
|
}
|
|
#ifndef _UNICODE
|
|
if (pNMHDR->code == TTN_NEEDTEXTA)
|
|
lstrcpyn(pTTTA->szText, strTipText,
|
|
(sizeof(pTTTA->szText)/sizeof(pTTTA->szText[0])));
|
|
else
|
|
_mbstowcsz(pTTTW->szText, strTipText,
|
|
(sizeof(pTTTW->szText)/sizeof(pTTTW->szText[0])));
|
|
#else
|
|
if (pNMHDR->code == TTN_NEEDTEXTA)
|
|
_wcstombsz(pTTTA->szText, strTipText,
|
|
(sizeof(pTTTA->szText)/sizeof(pTTTA->szText[0])));
|
|
else
|
|
lstrcpyn(pTTTW->szText, strTipText,
|
|
(sizeof(pTTTW->szText)/sizeof(pTTTW->szText[0])));
|
|
#endif
|
|
*pResult = 0;
|
|
|
|
// bring the tooltip window above other popup windows
|
|
::SetWindowPos(pNMHDR->hwndFrom, HWND_TOP, 0, 0, 0, 0,
|
|
SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE);
|
|
|
|
return TRUE; // message was handled
|
|
}
|
|
|
|
void COXWebView::OnUpdateFilePrintPreview(CCmdUI* pCmdUI)
|
|
{
|
|
pCmdUI->Enable(FALSE);
|
|
}
|
|
|
|
void COXWebView::OnFilePrint()
|
|
{
|
|
m_WebCtrl.Print();
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Web control notification handlers.
|
|
|
|
void COXWebView::BeforeNavigate(LPCTSTR /* pcszURL */, long /* lFlags */, LPCTSTR /* pcszTargetFrameName */, VARIANT* /* PostData */, LPCTSTR /* pcszHeaders */, VARIANT_BOOL* /* pbCancel */)
|
|
// --- In : pcszURL : The URL to which the view is about to navigate.
|
|
// lFlags : (reserved for Microsoft's future use)
|
|
// pcszTargetFrameName : String that contains the name of
|
|
// the frame in which to display the
|
|
// resource, or NULL if no named frame
|
|
// is targeted for the resource.
|
|
// PostData : Address of data to send to the server if the
|
|
// HTTP POST transaction is being used.
|
|
// pcszHeaders : Additional HTTP headers to send to the server
|
|
// (HTTP URLs only). The headers can specify
|
|
// such things as the action required of the
|
|
// server, the type of data being passed to the
|
|
// server, or a status code.
|
|
// --- Out : pbCancel : Address of cancel flag. An application can set
|
|
// this parameter to TRUE to cancel the navigation
|
|
// operation, or FALSE to allow it to proceed.
|
|
// --- Returns :
|
|
// --- Effect : This method is called prior to a navigation operation.
|
|
{
|
|
//TRACE1("COXWebView::BeforeNavigate %s\n", pcszURL);
|
|
}
|
|
|
|
void COXWebView::NavigateComplete(LPCTSTR /* pcszURL */)
|
|
// --- In : pcszURL : The URL to which the view is now positioned.
|
|
// --- Out :
|
|
// --- Returns :
|
|
// --- Effect : This method is called after a navigation operation
|
|
// is completed.
|
|
{
|
|
m_bCanRefresh = TRUE;
|
|
CString s = m_WebCtrl.GetLocationURL();
|
|
m_cbxToolbarURL.SetWindowText(s);
|
|
|
|
//TRACE1("COXWebView::NavigateComplete %s\n", pcszURL);
|
|
}
|
|
|
|
void COXWebView::StatusTextChange(LPCTSTR /* pcszText */)
|
|
// --- In : pcszText : The message describing an event that
|
|
// has occurred.
|
|
// --- Out :
|
|
// --- Returns :
|
|
// --- Effect : This method is called when something has happened of
|
|
// which the application might want to inform the user.
|
|
{
|
|
//TRACE1("COXWebView::StatusTextChange %s\n", pcszText);
|
|
}
|
|
|
|
void COXWebView::Quit(VARIANT_BOOL* /* pbCancel */)
|
|
// --- In :
|
|
// --- Out : pbCancel : Address of the cancel flag. An application
|
|
// can set this parameter to TRUE to cancel the
|
|
// quit operation, or FALSE to allow it to
|
|
// continue.
|
|
// --- Returns :
|
|
// --- Effect : This method is called when the Internet Explorer
|
|
// application is ready to quit.
|
|
{
|
|
//TRACE0("COXWebView::Quit\n");
|
|
}
|
|
|
|
void COXWebView::DownloadBegin()
|
|
// --- In :
|
|
// --- Out :
|
|
// --- Returns :
|
|
// --- Effect : Notifies an application that a navigation operation
|
|
// is beginning. This event is fired shortly after the
|
|
// BeforeNavigate event, unless the navigation is cancelled.
|
|
{
|
|
//TRACE0("COXWebView::DownloadBegin\n");
|
|
}
|
|
|
|
void COXWebView::NewWindow(LPCTSTR /* pcszURL */, long /* lFlags */, LPCTSTR /* pcszTargetFrameName */, VARIANT* /* PostData */, LPCTSTR /* pcszHeaders */, VARIANT_BOOL* /* pbCancel */)
|
|
// --- In : pcszURL : The URL to which the view is about to navigate.
|
|
// lFlags : (reserved for Microsoft's future use)
|
|
// pcszTargetFrameName : String that contains the name of
|
|
// the frame in which to display the
|
|
// resource, or NULL if no named frame
|
|
// is targeted for the resource.
|
|
// PostData : Address of data to send to the server if the
|
|
// HTTP POST transaction is being used.
|
|
// pcszHeaders : Additional HTTP headers to send to the server
|
|
// (HTTP URLs only). The headers can specify
|
|
// such things as the action required of the
|
|
// server, the type of data being passed to the
|
|
// server, or a status code.
|
|
// --- Out : pbCancel : Address of cancel flag. An application can set
|
|
// this parameter to TRUE to cancel the navigation
|
|
// operation, or FALSE to allow it to proceed.
|
|
// --- Returns :
|
|
// --- Effect : Notifies an application that a new window is to be
|
|
// created for displaying a resource.
|
|
{
|
|
//TRACE1("COXWebView::NewWindow %s\n", pcszURL);
|
|
}
|
|
|
|
void COXWebView::ProgressChange(long /* lProgress */, long /* lProgressMax */)
|
|
// --- In : lProgress : Amount of total progress to show,
|
|
// or -1 when progress is complete.
|
|
// lProgressMax : Maximum progress value.
|
|
// --- Out :
|
|
// --- Returns :
|
|
// --- Effect : Notifies an application that the progress of a
|
|
// download operation has been updated.
|
|
{
|
|
//TRACE2("COXWebView::ProgressChange %i of %i\n", lProgress, lProgressMax);
|
|
}
|
|
|
|
void COXWebView::DownloadComplete()
|
|
// --- In :
|
|
// --- Out :
|
|
// --- Returns :
|
|
// --- Effect : Occurs when a navigation operation finished, was halted,
|
|
// or failed. Unlike NavigateComplete which is only fired
|
|
// when a URL is successfully navigated to, this event
|
|
// is always fired after a navigation starts. Any animation
|
|
// or "busy" indication that the container needs to display
|
|
// should be connected to this event.
|
|
{
|
|
//TRACE0("COXWebView::DownloadComplete\n");
|
|
}
|
|
|
|
void COXWebView::CommandStateChange(long lCmdID, BOOL bEnabled)
|
|
// --- In : lCmdID : Identifier of the command whose enable state
|
|
// has changed.
|
|
// bEnabled : This parameter is TRUE if the command is
|
|
// enabled, or FALSE if it is disabled.
|
|
// --- Out :
|
|
// --- Returns :
|
|
// --- Effect : Notifies an application that the enabled state of a Web
|
|
// browser command has changed.
|
|
{
|
|
switch (lCmdID)
|
|
{
|
|
case CSC_NAVIGATEBACK:
|
|
m_bCanGoBack = bEnabled;
|
|
break;
|
|
case CSC_NAVIGATEFORWARD:
|
|
m_bCanGoForward = bEnabled;
|
|
break;
|
|
}
|
|
|
|
// TRACE(_T("COXWebView::CommandStateChange 0x%X %i\n"), lCmdID, bEnabled);
|
|
}
|
|
|
|
void COXWebView::PropertyChange(LPCTSTR /* pcszProperty */)
|
|
// --- In : pcszProperty : The name of the property that has changed.
|
|
// --- Out :
|
|
// --- Returns :
|
|
// --- Effect : Notifies an application that the IWebBrowser::PutProperty
|
|
// function has changed the value of a property.
|
|
{
|
|
// TRACE1("COXWebView::PropertyChange %s\n", pcszProperty);
|
|
}
|
|
|
|
void COXWebView::TitleChange(LPCTSTR /* pcszTitle */)
|
|
// --- In : pcszTitle : Caller allocated buffer that contains the
|
|
// new document title.
|
|
// --- Out :
|
|
// --- Returns :
|
|
// --- Effect : Notifies an application that the title of a document
|
|
// in the Web browser control becomes available or changes.
|
|
// For HTML, the title may change; while HTML is still
|
|
// downloading, the URL of the document is set as the title.
|
|
// After the real title (if there is one) is parsed from the
|
|
// HTML, the title is changed to reflect the actual title.
|
|
{
|
|
// TRACE1("COXWebView::TitleChange %s\n", pcszTitle);
|
|
}
|
|
|
|
void COXWebView::FrameBeforeNavigate(LPCTSTR /* pcszURL */, long /* lFlags */, LPCTSTR /* pcszTargetFrameName */, VARIANT* /* PostData */, LPCTSTR /* pcszHeaders */, VARIANT_BOOL* /* pbCancel */)
|
|
// --- In : pcszURL : The URL to which the view is about to navigate.
|
|
// lFlags : (reserved for Microsoft's future use)
|
|
// pcszTargetFrameName : String that contains the name of
|
|
// the frame in which to display the
|
|
// resource, or NULL if no named frame
|
|
// is targeted for the resource.
|
|
// PostData : Address of data to send to the server if the
|
|
// HTTP POST transaction is being used.
|
|
// pcszHeaders : Additional HTTP headers to send to the server
|
|
// (HTTP URLs only). The headers can specify
|
|
// such things as the action required of the
|
|
// server, the type of data being passed to the
|
|
// server, or a status code.
|
|
// --- Out : pbCancel : Address of cancel flag. An application can set
|
|
// this parameter to TRUE to cancel the navigation
|
|
// operation, or FALSE to allow it to proceed.
|
|
// --- Returns :
|
|
// --- Effect : Notifies an application that Web browser control is
|
|
// about to navigate to a different URL, which may happen
|
|
// as a result of external automation, internal automation
|
|
// from a script, or the user clicking a link or typing in
|
|
// the address bar. The container has an opportunity to
|
|
// cancel the pending navigation. This event is fired for
|
|
// navigations that occur inside an HTML frame.
|
|
{
|
|
// TRACE1("COXWebView::FrameBeforeNavigate %s\n", pcszURL);
|
|
}
|
|
|
|
void COXWebView::FrameNavigateComplete(LPCTSTR /* pcszURL */)
|
|
// --- In : pcszURL : URL to be navigated to. Note that this URL can be
|
|
// different from the URL that the browser was told
|
|
// to navigate to.
|
|
// --- Out :
|
|
// --- Returns :
|
|
// --- Effect : Notifies an application that the browser has successfully
|
|
// navigated to a new location. The document may still be
|
|
// downloading (and in the case of HTML, images may still be
|
|
// downloading), but at least part of the document has been
|
|
// received from the server and the viewer for the document
|
|
// has been created. This event is fired for navigations
|
|
// that occur inside an HTML frame.
|
|
{
|
|
// TRACE1("COXWebView::FrameNavigateComplete %s\n", pcszURL);
|
|
}
|
|
|
|
void COXWebView::FrameNewWindow(LPCTSTR /* pcszURL */, long /* lFlags */, LPCTSTR /* pcszTargetFrameName */, VARIANT* /* PostData */, LPCTSTR /* pcszHeaders */, VARIANT_BOOL* /* pbCancel */)
|
|
// --- In : pcszURL : The URL to which the view is about to navigate.
|
|
// lFlags : (reserved for Microsoft's future use)
|
|
// pcszTargetFrameName : String that contains the name of
|
|
// the frame in which to display the
|
|
// resource, or NULL if no named frame
|
|
// is targeted for the resource.
|
|
// PostData : Address of data to send to the server if the
|
|
// HTTP POST transaction is being used.
|
|
// pcszHeaders : Additional HTTP headers to send to the server
|
|
// (HTTP URLs only). The headers can specify
|
|
// such things as the action required of the
|
|
// server, the type of data being passed to the
|
|
// server, or a status code.
|
|
// --- Out : pbCancel : Address of cancel flag. An application can set
|
|
// this parameter to TRUE to cancel the navigation
|
|
// operation, or FALSE to allow it to proceed.
|
|
// --- Returns :
|
|
// --- Effect : Notifies an application that a new window is to be
|
|
// created for displaying a resource.
|
|
{
|
|
// TRACE1("COXWebView::FrameNewWindow %s\n", pcszURL);
|
|
}
|
|
|