Use OLE helper macros in wxWebView to reduce the amount of duplicated code.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70096 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Steve Lamerton
2011-12-22 19:16:12 +00:00
parent 4b4ed3c942
commit 9f194b9de0
2 changed files with 21 additions and 87 deletions

View File

@@ -1051,50 +1051,17 @@ void wxWebViewIE::onActiveXEvent(wxActiveXEvent& evt)
VirtualProtocol::VirtualProtocol(wxSharedPtr<wxWebViewHandler> handler)
{
m_refCount = 0;
m_file = NULL;
m_handler = handler;
}
VirtualProtocol::~VirtualProtocol()
{
}
BEGIN_IID_TABLE(VirtualProtocol)
ADD_IID(Unknown)
ADD_RAW_IID(wxIID_IInternetProtocolRoot)
ADD_RAW_IID(wxIID_IInternetProtocol)
END_IID_TABLE;
ULONG VirtualProtocol::AddRef()
{
m_refCount++;
return m_refCount;
}
HRESULT VirtualProtocol::QueryInterface(REFIID riid, void **ppvObject)
{
if(riid == IID_IUnknown || riid == wxIID_IInternetProtocolRoot ||
riid == wxIID_IInternetProtocol)
{
*ppvObject = (wxIInternetProtocol*)this;
AddRef();
return S_OK;
}
else
{
*ppvObject = NULL;
return E_POINTER;
}
}
ULONG VirtualProtocol::Release()
{
m_refCount--;
if (m_refCount > 0)
{
return m_refCount;
}
else
{
delete this;
return 0;
}
}
IMPLEMENT_IUNKNOWN_METHODS(VirtualProtocol)
HRESULT VirtualProtocol::Start(LPCWSTR szUrl, wxIInternetProtocolSink *pOIProtSink,
wxIInternetBindInfo *pOIBindInfo, DWORD grfPI,
@@ -1162,6 +1129,13 @@ HRESULT VirtualProtocol::Read(void *pv, ULONG cb, ULONG *pcbRead)
}
}
BEGIN_IID_TABLE(ClassFactory)
ADD_IID(Unknown)
ADD_IID(ClassFactory)
END_IID_TABLE;
IMPLEMENT_IUNKNOWN_METHODS(ClassFactory)
HRESULT ClassFactory::CreateInstance(IUnknown* pUnkOuter, REFIID riid,
void ** ppvObject)
{
@@ -1181,41 +1155,4 @@ STDMETHODIMP ClassFactory::LockServer(BOOL fLock)
return S_OK;
}
ULONG ClassFactory::AddRef(void)
{
m_refCount++;
return m_refCount;
}
HRESULT ClassFactory::QueryInterface(REFIID riid, void **ppvObject)
{
if ((riid == IID_IUnknown) || (riid == IID_IClassFactory))
{
*ppvObject = this;
AddRef();
return S_OK;
}
else
{
*ppvObject = NULL;
return E_POINTER;
}
}
ULONG ClassFactory::Release(void)
{
m_refCount--;
if (m_refCount > 0)
{
return m_refCount;
}
else
{
delete this;
return 0;
}
}
#endif // wxUSE_WEBVIEW && wxUSE_WEBVIEW_IE