mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
170 lines
4.9 KiB
C++
170 lines
4.9 KiB
C++
// ControlEventSink.cpp : Implementation of CBrowseEventSink
|
|
#include "stdafx.h"
|
|
#include "Cbrowse.h"
|
|
#include "ControlEventSink.h"
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CBrowseEventSink
|
|
|
|
HRESULT STDMETHODCALLTYPE CBrowseEventSink::GetTypeInfoCount(
|
|
/* [out] */ UINT __RPC_FAR *pctinfo)
|
|
{
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
HRESULT STDMETHODCALLTYPE CBrowseEventSink::GetTypeInfo(
|
|
/* [in] */ UINT iTInfo,
|
|
/* [in] */ LCID lcid,
|
|
/* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo)
|
|
{
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
HRESULT STDMETHODCALLTYPE CBrowseEventSink::GetIDsOfNames(
|
|
/* [in] */ REFIID riid,
|
|
/* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
|
|
/* [in] */ UINT cNames,
|
|
/* [in] */ LCID lcid,
|
|
/* [size_is][out] */ DISPID __RPC_FAR *rgDispId)
|
|
{
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
HRESULT STDMETHODCALLTYPE CBrowseEventSink:: Invoke(
|
|
/* [in] */ DISPID dispIdMember,
|
|
/* [in] */ REFIID riid,
|
|
/* [in] */ LCID lcid,
|
|
/* [in] */ WORD wFlags,
|
|
/* [out][in] */ DISPPARAMS __RPC_FAR *pDispParams,
|
|
/* [out] */ VARIANT __RPC_FAR *pVarResult,
|
|
/* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
|
|
/* [out] */ UINT __RPC_FAR *puArgErr)
|
|
{
|
|
CString szEvent;
|
|
|
|
switch (dispIdMember)
|
|
{
|
|
case 0x66:
|
|
{
|
|
USES_CONVERSION;
|
|
CString szText(OLE2T(pDispParams->rgvarg[0].bstrVal));
|
|
szEvent.Format(_T("StatusTextChange: \"%s\""), szText);
|
|
m_pBrowseDlg->m_TabMessages.m_szStatus = szText;
|
|
m_pBrowseDlg->m_TabMessages.UpdateData(FALSE);
|
|
}
|
|
break;
|
|
case 0x6c:
|
|
{
|
|
LONG nProgress = pDispParams->rgvarg[1].lVal;
|
|
LONG nProgressMax = pDispParams->rgvarg[0].lVal;
|
|
szEvent.Format("ProgressChange(%d of %d)", nProgress, nProgressMax);
|
|
CProgressCtrl &pc = m_pBrowseDlg->m_TabMessages.m_pcProgress;
|
|
pc.SetRange(0, nProgressMax);
|
|
pc.SetPos(nProgress);
|
|
}
|
|
break;
|
|
case 0x69:
|
|
{
|
|
BOOL enable = pDispParams->rgvarg[0].boolVal == VARIANT_TRUE ? TRUE : FALSE;
|
|
LONG commandState = pDispParams->rgvarg[1].lVal;
|
|
if (commandState == CSC_NAVIGATEBACK)
|
|
{
|
|
m_pBrowseDlg->m_bCanGoBack = enable;
|
|
m_pBrowseDlg->m_btnBack.EnableWindow(enable);
|
|
}
|
|
else if (commandState == CSC_NAVIGATEFORWARD)
|
|
{
|
|
m_pBrowseDlg->m_bCanGoForward = enable;
|
|
m_pBrowseDlg->m_btnForward.EnableWindow(enable);
|
|
}
|
|
szEvent.Format(_T("CommandStateChange(%ld, %d)"), commandState, enable);
|
|
}
|
|
break;
|
|
case 0x6a:
|
|
szEvent = _T("DownloadBegin");
|
|
m_pBrowseDlg->m_btnStop.EnableWindow(TRUE);
|
|
break;
|
|
case 0x68:
|
|
szEvent = _T("DownloadComplete");
|
|
m_pBrowseDlg->m_btnStop.EnableWindow(FALSE);
|
|
break;
|
|
case 0x71:
|
|
{
|
|
USES_CONVERSION;
|
|
CString szText(OLE2T(pDispParams->rgvarg[0].bstrVal));
|
|
szEvent.Format(_T("TitleChange: \"%s\""), szText);
|
|
CString szTitle;
|
|
szTitle.Format(_T("CBrowse - %s"), szText);
|
|
m_pBrowseDlg->SetWindowText(szTitle);
|
|
}
|
|
break;
|
|
case 0x70:
|
|
szEvent = _T("PropertyChange");
|
|
break;
|
|
case 0xfa:
|
|
szEvent = _T("BeforeNavigate2");
|
|
break;
|
|
case 0xfb:
|
|
{
|
|
szEvent = _T("NewWindow2");
|
|
|
|
VARIANTARG *pvars = pDispParams->rgvarg;
|
|
CBrowseDlg *pDlg = new CBrowseDlg;
|
|
if (pDlg)
|
|
{
|
|
pDlg->m_clsid = m_pBrowseDlg->m_clsid;
|
|
pDlg->Create(IDD_CBROWSE_DIALOG);
|
|
|
|
if (pDlg->m_pControlSite)
|
|
{
|
|
CIUnkPtr spUnkBrowser;
|
|
pDlg->m_pControlSite->GetControlUnknown(&spUnkBrowser);
|
|
|
|
pvars[0].byref = (void *) VARIANT_FALSE;
|
|
spUnkBrowser->QueryInterface(IID_IDispatch, (void **) pvars[1].byref);
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case 0xfc:
|
|
szEvent = _T("NavigateComplete2");
|
|
break;
|
|
case 0x103:
|
|
szEvent = _T("DocumentComplete");
|
|
if (m_pBrowseDlg)
|
|
{
|
|
m_pBrowseDlg->UpdateURL();
|
|
}
|
|
break;
|
|
case 0xfd:
|
|
szEvent = _T("OnQuit");
|
|
break;
|
|
case 0xfe:
|
|
szEvent = _T("OnVisible");
|
|
break;
|
|
case 0xff:
|
|
szEvent = _T("OnToolBar");
|
|
break;
|
|
case 0x100:
|
|
szEvent = _T("OnMenuBar");
|
|
break;
|
|
case 0x101:
|
|
szEvent = _T("OnStatusBar");
|
|
break;
|
|
case 0x102:
|
|
szEvent = _T("OnFullScreen");
|
|
break;
|
|
case 0x104:
|
|
szEvent = _T("OnTheaterMode");
|
|
break;
|
|
default:
|
|
szEvent.Format(_T("%d"), dispIdMember);
|
|
}
|
|
|
|
if (m_pBrowseDlg)
|
|
{
|
|
m_pBrowseDlg->OutputString(_T("Event %s"), szEvent);
|
|
}
|
|
return S_OK;
|
|
}
|