#include ".\webbrowsereventsink.h" CWebBrowserEventSink::CWebBrowserEventSink(CExplorerBar* pExplorerBar) { m_pExplorerBar=pExplorerBar; m_ObjRefCount = 1; } CWebBrowserEventSink::~CWebBrowserEventSink(void) {} //IUnknown methods STDMETHODIMP CWebBrowserEventSink::QueryInterface(REFIID riid, LPVOID* ppReturn) { *ppReturn = NULL; if(IsEqualIID(riid, IID_IUnknown) ||IsEqualIID(riid, IID_IDispatch) ||IsEqualIID(riid, __uuidof(DWebBrowserEvents2)) ) *ppReturn = this; if(*ppReturn) { (*(LPUNKNOWN*)ppReturn)->AddRef(); return S_OK; } return E_NOINTERFACE; } STDMETHODIMP_(DWORD) CWebBrowserEventSink::AddRef() { return ++m_ObjRefCount; } STDMETHODIMP_(DWORD) CWebBrowserEventSink::Release() { if(--m_ObjRefCount == 0) { delete this; return 0; } return m_ObjRefCount; } //IDispatch methods HRESULT STDMETHODCALLTYPE CWebBrowserEventSink::GetTypeInfoCount(UINT *pctinfo) { return E_NOTIMPL; } HRESULT STDMETHODCALLTYPE CWebBrowserEventSink::GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) { return E_NOTIMPL; } HRESULT STDMETHODCALLTYPE CWebBrowserEventSink::GetIDsOfNames( REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId) { return E_NOTIMPL; } HRESULT STDMETHODCALLTYPE CWebBrowserEventSink::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) { return m_pExplorerBar->EventNotify(dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); }