diff --git a/dlls/shdocvw/classinfo.c b/dlls/shdocvw/classinfo.c index ee104e76bea..df41369563b 100644 --- a/dlls/shdocvw/classinfo.c +++ b/dlls/shdocvw/classinfo.c @@ -32,30 +32,33 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); * Implement the IProvideClassInfo2 interface */ -#define CLASSINFO_THIS(iface) DEFINE_THIS(WebBrowser, ProvideClassInfo, iface) +static inline WebBrowser *impl_from_IProvideClassInfo2(IProvideClassInfo2 *iface) +{ + return (WebBrowser*)((char*)iface - FIELD_OFFSET(WebBrowser, IProvideClassInfo2_iface)); +} static HRESULT WINAPI ProvideClassInfo_QueryInterface(IProvideClassInfo2 *iface, REFIID riid, LPVOID *ppobj) { - WebBrowser *This = CLASSINFO_THIS(iface); + WebBrowser *This = impl_from_IProvideClassInfo2(iface); return IWebBrowser_QueryInterface(&This->IWebBrowser2_iface, riid, ppobj); } static ULONG WINAPI ProvideClassInfo_AddRef(IProvideClassInfo2 *iface) { - WebBrowser *This = CLASSINFO_THIS(iface); + WebBrowser *This = impl_from_IProvideClassInfo2(iface); return IWebBrowser_AddRef(&This->IWebBrowser2_iface); } static ULONG WINAPI ProvideClassInfo_Release(IProvideClassInfo2 *iface) { - WebBrowser *This = CLASSINFO_THIS(iface); + WebBrowser *This = impl_from_IProvideClassInfo2(iface); return IWebBrowser_Release(&This->IWebBrowser2_iface); } static HRESULT WINAPI ProvideClassInfo_GetClassInfo(IProvideClassInfo2 *iface, LPTYPEINFO *ppTI) { - WebBrowser *This = CLASSINFO_THIS(iface); + WebBrowser *This = impl_from_IProvideClassInfo2(iface); FIXME("(%p)->(%p)\n", This, ppTI); return E_NOTIMPL; } @@ -63,7 +66,7 @@ static HRESULT WINAPI ProvideClassInfo_GetClassInfo(IProvideClassInfo2 *iface, L static HRESULT WINAPI ProvideClassInfo_GetGUID(IProvideClassInfo2 *iface, DWORD dwGuidKind, GUID *pGUID) { - WebBrowser *This = CLASSINFO_THIS(iface); + WebBrowser *This = impl_from_IProvideClassInfo2(iface); TRACE("(%p)->(%d %p)\n", This, dwGuidKind, pGUID); @@ -81,8 +84,6 @@ static HRESULT WINAPI ProvideClassInfo_GetGUID(IProvideClassInfo2 *iface, return S_OK; } -#undef CLASSINFO_THIS - static const IProvideClassInfo2Vtbl ProvideClassInfoVtbl = { ProvideClassInfo_QueryInterface, @@ -94,5 +95,5 @@ static const IProvideClassInfo2Vtbl ProvideClassInfoVtbl = void WebBrowser_ClassInfo_Init(WebBrowser *This) { - This->lpProvideClassInfoVtbl = &ProvideClassInfoVtbl; + This->IProvideClassInfo2_iface.lpVtbl = &ProvideClassInfoVtbl; } diff --git a/dlls/shdocvw/persist.c b/dlls/shdocvw/persist.c index febb82ce24d..7a150359b10 100644 --- a/dlls/shdocvw/persist.c +++ b/dlls/shdocvw/persist.c @@ -28,51 +28,54 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); * Implement the IPersistStorage interface */ -#define PERSTORAGE_THIS(ifce) DEFINE_THIS(WebBrowser, PersistStorage, iface) +static inline WebBrowser *impl_from_IPersistStorage(IPersistStorage *iface) +{ + return (WebBrowser*)((char*)iface - FIELD_OFFSET(WebBrowser, IPersistStorage_iface)); +} static HRESULT WINAPI PersistStorage_QueryInterface(IPersistStorage *iface, REFIID riid, LPVOID *ppobj) { - WebBrowser *This = PERSTORAGE_THIS(iface); + WebBrowser *This = impl_from_IPersistStorage(iface); return IWebBrowser_QueryInterface(&This->IWebBrowser2_iface, riid, ppobj); } static ULONG WINAPI PersistStorage_AddRef(IPersistStorage *iface) { - WebBrowser *This = PERSTORAGE_THIS(iface); + WebBrowser *This = impl_from_IPersistStorage(iface); return IWebBrowser_AddRef(&This->IWebBrowser2_iface); } static ULONG WINAPI PersistStorage_Release(IPersistStorage *iface) { - WebBrowser *This = PERSTORAGE_THIS(iface); + WebBrowser *This = impl_from_IPersistStorage(iface); return IWebBrowser_Release(&This->IWebBrowser2_iface); } static HRESULT WINAPI PersistStorage_GetClassID(IPersistStorage *iface, CLSID *pClassID) { - WebBrowser *This = PERSTORAGE_THIS(iface); + WebBrowser *This = impl_from_IPersistStorage(iface); FIXME("(%p)->(%p)\n", This, pClassID); return E_NOTIMPL; } static HRESULT WINAPI PersistStorage_IsDirty(IPersistStorage *iface) { - WebBrowser *This = PERSTORAGE_THIS(iface); + WebBrowser *This = impl_from_IPersistStorage(iface); FIXME("(%p)\n", This); return E_NOTIMPL; } static HRESULT WINAPI PersistStorage_InitNew(IPersistStorage *iface, LPSTORAGE pStg) { - WebBrowser *This = PERSTORAGE_THIS(iface); + WebBrowser *This = impl_from_IPersistStorage(iface); FIXME("(%p)->(%p)\n", This, pStg); return S_OK; } static HRESULT WINAPI PersistStorage_Load(IPersistStorage *iface, LPSTORAGE pStg) { - WebBrowser *This = PERSTORAGE_THIS(iface); + WebBrowser *This = impl_from_IPersistStorage(iface); FIXME("(%p)->(%p)\n", This, pStg); return E_NOTIMPL; } @@ -80,14 +83,14 @@ static HRESULT WINAPI PersistStorage_Load(IPersistStorage *iface, LPSTORAGE pStg static HRESULT WINAPI PersistStorage_Save(IPersistStorage *iface, LPSTORAGE pStg, BOOL fSameAsLoad) { - WebBrowser *This = PERSTORAGE_THIS(iface); + WebBrowser *This = impl_from_IPersistStorage(iface); FIXME("(%p)->(%p %x)\n", This, pStg, fSameAsLoad); return E_NOTIMPL; } static HRESULT WINAPI PersistStorage_SaveCompleted(IPersistStorage *iface, LPSTORAGE pStgNew) { - WebBrowser *This = PERSTORAGE_THIS(iface); + WebBrowser *This = impl_from_IPersistStorage(iface); FIXME("(%p)->(%p)\n", This, pStgNew); return E_NOTIMPL; } @@ -109,51 +112,54 @@ static const IPersistStorageVtbl PersistStorageVtbl = * Implement the IPersistMemory interface */ -#define PERMEMORY_THIS(ifce) DEFINE_THIS(WebBrowser, PersistMemory, iface) +static inline WebBrowser *impl_from_IPersistMemory(IPersistMemory *iface) +{ + return (WebBrowser*)((char*)iface - FIELD_OFFSET(WebBrowser, IPersistMemory_iface)); +} static HRESULT WINAPI PersistMemory_QueryInterface(IPersistMemory *iface, REFIID riid, LPVOID *ppobj) { - WebBrowser *This = PERMEMORY_THIS(iface); + WebBrowser *This = impl_from_IPersistMemory(iface); return IWebBrowser_QueryInterface(&This->IWebBrowser2_iface, riid, ppobj); } static ULONG WINAPI PersistMemory_AddRef(IPersistMemory *iface) { - WebBrowser *This = PERMEMORY_THIS(iface); + WebBrowser *This = impl_from_IPersistMemory(iface); return IWebBrowser_AddRef(&This->IWebBrowser2_iface); } static ULONG WINAPI PersistMemory_Release(IPersistMemory *iface) { - WebBrowser *This = PERMEMORY_THIS(iface); + WebBrowser *This = impl_from_IPersistMemory(iface); return IWebBrowser_Release(&This->IWebBrowser2_iface); } static HRESULT WINAPI PersistMemory_GetClassID(IPersistMemory *iface, CLSID *pClassID) { - WebBrowser *This = PERMEMORY_THIS(iface); + WebBrowser *This = impl_from_IPersistMemory(iface); FIXME("(%p)->(%p)\n", This, pClassID); return E_NOTIMPL; } static HRESULT WINAPI PersistMemory_IsDirty(IPersistMemory *iface) { - WebBrowser *This = PERMEMORY_THIS(iface); + WebBrowser *This = impl_from_IPersistMemory(iface); FIXME("(%p)\n", This); return E_NOTIMPL; } static HRESULT WINAPI PersistMemory_InitNew(IPersistMemory *iface) { - WebBrowser *This = PERMEMORY_THIS(iface); + WebBrowser *This = impl_from_IPersistMemory(iface); FIXME("(%p)\n", This); return S_OK; } static HRESULT WINAPI PersistMemory_Load(IPersistMemory *iface, LPVOID pMem, ULONG cbSize) { - WebBrowser *This = PERMEMORY_THIS(iface); + WebBrowser *This = impl_from_IPersistMemory(iface); FIXME("(%p)->(%p %x)\n", This, pMem, cbSize); return S_OK; } @@ -161,14 +167,14 @@ static HRESULT WINAPI PersistMemory_Load(IPersistMemory *iface, LPVOID pMem, ULO static HRESULT WINAPI PersistMemory_Save(IPersistMemory *iface, LPVOID pMem, BOOL fClearDirty, ULONG cbSize) { - WebBrowser *This = PERMEMORY_THIS(iface); + WebBrowser *This = impl_from_IPersistMemory(iface); FIXME("(%p)->(%p %x %x)\n", This, pMem, fClearDirty, cbSize); return E_NOTIMPL; } static HRESULT WINAPI PersistMemory_GetSizeMax(IPersistMemory *iface, ULONG *pCbSize) { - WebBrowser *This = PERMEMORY_THIS(iface); + WebBrowser *This = impl_from_IPersistMemory(iface); FIXME("(%p)->(%p)\n", This, pCbSize); return E_NOTIMPL; } @@ -190,42 +196,45 @@ static const IPersistMemoryVtbl PersistMemoryVtbl = * Implement the IPersistStreamInit interface */ -#define PERSTRINIT_THIS(iface) DEFINE_THIS(WebBrowser, PersistStreamInit, iface) +static inline WebBrowser *impl_from_IPersistStreamInit(IPersistStreamInit *iface) +{ + return (WebBrowser*)((char*)iface - FIELD_OFFSET(WebBrowser, IPersistStreamInit_iface)); +} static HRESULT WINAPI PersistStreamInit_QueryInterface(IPersistStreamInit *iface, REFIID riid, LPVOID *ppobj) { - WebBrowser *This = PERSTRINIT_THIS(iface); + WebBrowser *This = impl_from_IPersistStreamInit(iface); return IWebBrowser_QueryInterface(&This->IWebBrowser2_iface, riid, ppobj); } static ULONG WINAPI PersistStreamInit_AddRef(IPersistStreamInit *iface) { - WebBrowser *This = PERSTRINIT_THIS(iface); + WebBrowser *This = impl_from_IPersistStreamInit(iface); return IWebBrowser_AddRef(&This->IWebBrowser2_iface); } static ULONG WINAPI PersistStreamInit_Release(IPersistStreamInit *iface) { - WebBrowser *This = PERSTRINIT_THIS(iface); + WebBrowser *This = impl_from_IPersistStreamInit(iface); return IWebBrowser_Release(&This->IWebBrowser2_iface); } static HRESULT WINAPI PersistStreamInit_GetClassID(IPersistStreamInit *iface, CLSID *pClassID) { - WebBrowser *This = PERSTRINIT_THIS(iface); - return IPersistStorage_GetClassID(PERSTORAGE(This), pClassID); + WebBrowser *This = impl_from_IPersistStreamInit(iface); + return IPersistStorage_GetClassID(&This->IPersistStorage_iface, pClassID); } static HRESULT WINAPI PersistStreamInit_IsDirty(IPersistStreamInit *iface) { - WebBrowser *This = PERSTRINIT_THIS(iface); - return IPersistStorage_IsDirty(PERSTORAGE(This)); + WebBrowser *This = impl_from_IPersistStreamInit(iface); + return IPersistStorage_IsDirty(&This->IPersistStorage_iface); } static HRESULT WINAPI PersistStreamInit_Load(IPersistStreamInit *iface, LPSTREAM pStg) { - WebBrowser *This = PERSTRINIT_THIS(iface); + WebBrowser *This = impl_from_IPersistStreamInit(iface); FIXME("(%p)->(%p)\n", This, pStg); return S_OK; } @@ -233,7 +242,7 @@ static HRESULT WINAPI PersistStreamInit_Load(IPersistStreamInit *iface, LPSTREAM static HRESULT WINAPI PersistStreamInit_Save(IPersistStreamInit *iface, LPSTREAM pStg, BOOL fSameAsLoad) { - WebBrowser *This = PERSTRINIT_THIS(iface); + WebBrowser *This = impl_from_IPersistStreamInit(iface); FIXME("(%p)->(%p %x)\n", This, pStg, fSameAsLoad); return E_NOTIMPL; } @@ -241,20 +250,18 @@ static HRESULT WINAPI PersistStreamInit_Save(IPersistStreamInit *iface, LPSTREAM static HRESULT WINAPI PersistStreamInit_GetSizeMax(IPersistStreamInit *iface, ULARGE_INTEGER *pcbSize) { - WebBrowser *This = PERSTRINIT_THIS(iface); + WebBrowser *This = impl_from_IPersistStreamInit(iface); FIXME("(%p)->(%p)\n", This, pcbSize); return E_NOTIMPL; } static HRESULT WINAPI PersistStreamInit_InitNew(IPersistStreamInit *iface) { - WebBrowser *This = PERSTRINIT_THIS(iface); + WebBrowser *This = impl_from_IPersistStreamInit(iface); FIXME("(%p)\n", This); return S_OK; } -#undef PERSTRINIT_THIS - static const IPersistStreamInitVtbl PersistStreamInitVtbl = { PersistStreamInit_QueryInterface, @@ -270,7 +277,7 @@ static const IPersistStreamInitVtbl PersistStreamInitVtbl = void WebBrowser_Persist_Init(WebBrowser *This) { - This->lpPersistStorageVtbl = &PersistStorageVtbl; - This->lpPersistMemoryVtbl = &PersistMemoryVtbl; - This->lpPersistStreamInitVtbl = &PersistStreamInitVtbl; + This->IPersistStorage_iface.lpVtbl = &PersistStorageVtbl; + This->IPersistMemory_iface.lpVtbl = &PersistMemoryVtbl; + This->IPersistStreamInit_iface.lpVtbl = &PersistStreamInitVtbl; } diff --git a/dlls/shdocvw/shdocvw.h b/dlls/shdocvw/shdocvw.h index 81a4a3cb834..34749188d25 100644 --- a/dlls/shdocvw/shdocvw.h +++ b/dlls/shdocvw/shdocvw.h @@ -139,15 +139,15 @@ struct WebBrowser { IOleObject IOleObject_iface; IOleInPlaceObject IOleInPlaceObject_iface; IOleControl IOleControl_iface; - const IPersistStorageVtbl *lpPersistStorageVtbl; - const IPersistMemoryVtbl *lpPersistMemoryVtbl; - const IPersistStreamInitVtbl *lpPersistStreamInitVtbl; - const IProvideClassInfo2Vtbl *lpProvideClassInfoVtbl; - const IViewObject2Vtbl *lpViewObjectVtbl; + IPersistStorage IPersistStorage_iface; + IPersistMemory IPersistMemory_iface; + IPersistStreamInit IPersistStreamInit_iface; + IProvideClassInfo2 IProvideClassInfo2_iface; + IViewObject2 IViewObject2_iface; IOleInPlaceActiveObject IOleInPlaceActiveObject_iface; IOleCommandTarget IOleCommandTarget_iface; IServiceProvider IServiceProvider_iface; - const IDataObjectVtbl *lpDataObjectVtbl; + IDataObject IDataObject_iface; HlinkFrame hlink_frame; LONG ref; @@ -194,15 +194,8 @@ struct InternetExplorer { DocHost doc_host; }; -#define PERSTORAGE(x) ((IPersistStorage*) &(x)->lpPersistStorageVtbl) -#define PERMEMORY(x) ((IPersistMemory*) &(x)->lpPersistMemoryVtbl) -#define PERSTRINIT(x) ((IPersistStreamInit*) &(x)->lpPersistStreamInitVtbl) -#define CLASSINFO(x) ((IProvideClassInfo2*) &(x)->lpProvideClassInfoVtbl) #define CONPTCONT(x) ((IConnectionPointContainer*) &(x)->lpConnectionPointContainerVtbl) -#define VIEWOBJ(x) ((IViewObject*) &(x)->lpViewObjectVtbl); -#define VIEWOBJ2(x) ((IViewObject2*) &(x)->lpViewObjectVtbl); #define OLECMD(x) ((IOleCommandTarget*) &(x)->lpOleCommandTargetVtbl) -#define DATAOBJECT(x) ((IDataObject*) &(x)->lpDataObjectVtbl) #define CLIENTSITE(x) ((IOleClientSite*) &(x)->lpOleClientSiteVtbl) #define INPLACESITE(x) ((IOleInPlaceSite*) &(x)->lpOleInPlaceSiteVtbl) @@ -220,7 +213,6 @@ struct InternetExplorer { void WebBrowser_OleObject_Init(WebBrowser*); void WebBrowser_ViewObject_Init(WebBrowser*); -void WebBrowser_DataObject_Init(WebBrowser*); void WebBrowser_Persist_Init(WebBrowser*); void WebBrowser_ClassInfo_Init(WebBrowser*); diff --git a/dlls/shdocvw/view.c b/dlls/shdocvw/view.c index 00d4cdeaacf..0ed7847e443 100644 --- a/dlls/shdocvw/view.c +++ b/dlls/shdocvw/view.c @@ -26,23 +26,26 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); * Implement the IViewObject interface */ -#define VIEWOBJ_THIS(iface) DEFINE_THIS(WebBrowser, ViewObject, iface) +static inline WebBrowser *impl_from_IViewObject2(IViewObject2 *iface) +{ + return (WebBrowser*)((char*)iface - FIELD_OFFSET(WebBrowser, IViewObject2_iface)); +} static HRESULT WINAPI ViewObject_QueryInterface(IViewObject2 *iface, REFIID riid, void **ppv) { - WebBrowser *This = VIEWOBJ_THIS(iface); + WebBrowser *This = impl_from_IViewObject2(iface); return IWebBrowser2_QueryInterface(&This->IWebBrowser2_iface, riid, ppv); } static ULONG WINAPI ViewObject_AddRef(IViewObject2 *iface) { - WebBrowser *This = VIEWOBJ_THIS(iface); + WebBrowser *This = impl_from_IViewObject2(iface); return IWebBrowser2_AddRef(&This->IWebBrowser2_iface); } static ULONG WINAPI ViewObject_Release(IViewObject2 *iface) { - WebBrowser *This = VIEWOBJ_THIS(iface); + WebBrowser *This = impl_from_IViewObject2(iface); return IWebBrowser2_Release(&This->IWebBrowser2_iface); } @@ -52,7 +55,7 @@ static HRESULT WINAPI ViewObject_Draw(IViewObject2 *iface, DWORD dwDrawAspect, BOOL (STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR), ULONG_PTR dwContinue) { - WebBrowser *This = VIEWOBJ_THIS(iface); + WebBrowser *This = impl_from_IViewObject2(iface); FIXME("(%p)->(%d %d %p %p %p %p %p %p %p %08lx)\n", This, dwDrawAspect, lindex, pvAspect, ptd, hdcTargetDev, hdcDraw, lprcBounds, lprcWBounds, pfnContinue, dwContinue); @@ -63,7 +66,7 @@ static HRESULT WINAPI ViewObject_GetColorSet(IViewObject2 *iface, DWORD dwAspect LONG lindex, void *pvAspect, DVTARGETDEVICE *ptd, HDC hicTargetDev, LOGPALETTE **ppColorSet) { - WebBrowser *This = VIEWOBJ_THIS(iface); + WebBrowser *This = impl_from_IViewObject2(iface); FIXME("(%p)->(%d %d %p %p %p %p)\n", This, dwAspect, lindex, pvAspect, ptd, hicTargetDev, ppColorSet); return E_NOTIMPL; @@ -72,14 +75,14 @@ static HRESULT WINAPI ViewObject_GetColorSet(IViewObject2 *iface, DWORD dwAspect static HRESULT WINAPI ViewObject_Freeze(IViewObject2 *iface, DWORD dwDrawAspect, LONG lindex, void *pvAspect, DWORD *pdwFreeze) { - WebBrowser *This = VIEWOBJ_THIS(iface); + WebBrowser *This = impl_from_IViewObject2(iface); FIXME("(%p)->(%d %d %p %p)\n", This, dwDrawAspect, lindex, pvAspect, pdwFreeze); return E_NOTIMPL; } static HRESULT WINAPI ViewObject_Unfreeze(IViewObject2 *iface, DWORD dwFreeze) { - WebBrowser *This = VIEWOBJ_THIS(iface); + WebBrowser *This = impl_from_IViewObject2(iface); FIXME("(%p)->(%d)\n", This, dwFreeze); return E_NOTIMPL; } @@ -87,7 +90,7 @@ static HRESULT WINAPI ViewObject_Unfreeze(IViewObject2 *iface, DWORD dwFreeze) static HRESULT WINAPI ViewObject_SetAdvise(IViewObject2 *iface, DWORD aspects, DWORD advf, IAdviseSink *pAdvSink) { - WebBrowser *This = VIEWOBJ_THIS(iface); + WebBrowser *This = impl_from_IViewObject2(iface); FIXME("(%p)->(%d %08x %p)\n", This, aspects, advf, pAdvSink); return E_NOTIMPL; } @@ -95,7 +98,7 @@ static HRESULT WINAPI ViewObject_SetAdvise(IViewObject2 *iface, DWORD aspects, D static HRESULT WINAPI ViewObject_GetAdvise(IViewObject2 *iface, DWORD *pAspects, DWORD *pAdvf, IAdviseSink **ppAdvSink) { - WebBrowser *This = VIEWOBJ_THIS(iface); + WebBrowser *This = impl_from_IViewObject2(iface); FIXME("(%p)->(%p %p %p)\n", This, pAspects, pAdvf, ppAdvSink); return E_NOTIMPL; } @@ -103,7 +106,7 @@ static HRESULT WINAPI ViewObject_GetAdvise(IViewObject2 *iface, DWORD *pAspects, static HRESULT WINAPI ViewObject_GetExtent(IViewObject2 *iface, DWORD dwAspect, LONG lindex, DVTARGETDEVICE *ptd, LPSIZEL lpsizel) { - WebBrowser *This = VIEWOBJ_THIS(iface); + WebBrowser *This = impl_from_IViewObject2(iface); FIXME("(%p)->(%d %d %p %p)\n", This, dwAspect, lindex, ptd, lpsizel); return E_NOTIMPL; } @@ -121,96 +124,92 @@ static const IViewObject2Vtbl ViewObjectVtbl = { ViewObject_GetExtent }; -#undef VIEWOBJ_THIS - -void WebBrowser_ViewObject_Init(WebBrowser *This) -{ - This->lpViewObjectVtbl = &ViewObjectVtbl; -} - /********************************************************************** * Implement the IDataObject interface */ -#define DATAOBJ_THIS(iface) DEFINE_THIS(WebBrowser, DataObject, iface) +static inline WebBrowser *impl_from_IDataObject(IDataObject *iface) +{ + return (WebBrowser*)((char*)iface - FIELD_OFFSET(WebBrowser, IDataObject_iface)); +} static HRESULT WINAPI DataObject_QueryInterface(LPDATAOBJECT iface, REFIID riid, LPVOID * ppvObj) { - WebBrowser *This = DATAOBJ_THIS(iface); + WebBrowser *This = impl_from_IDataObject(iface); return IWebBrowser2_QueryInterface(&This->IWebBrowser2_iface, riid, ppvObj); } static ULONG WINAPI DataObject_AddRef(LPDATAOBJECT iface) { - WebBrowser *This = DATAOBJ_THIS(iface); + WebBrowser *This = impl_from_IDataObject(iface); return IWebBrowser2_AddRef(&This->IWebBrowser2_iface); } static ULONG WINAPI DataObject_Release(LPDATAOBJECT iface) { - WebBrowser *This = DATAOBJ_THIS(iface); + WebBrowser *This = impl_from_IDataObject(iface); return IWebBrowser2_Release(&This->IWebBrowser2_iface); } static HRESULT WINAPI DataObject_GetData(LPDATAOBJECT iface, LPFORMATETC pformatetcIn, STGMEDIUM *pmedium) { - WebBrowser *This = DATAOBJ_THIS(iface); + WebBrowser *This = impl_from_IDataObject(iface); FIXME("(%p)->()\n", This); return E_NOTIMPL; } static HRESULT WINAPI DataObject_GetDataHere(LPDATAOBJECT iface, LPFORMATETC pformatetc, STGMEDIUM *pmedium) { - WebBrowser *This = DATAOBJ_THIS(iface); + WebBrowser *This = impl_from_IDataObject(iface); FIXME("(%p)->()\n", This); return E_NOTIMPL; } static HRESULT WINAPI DataObject_QueryGetData(LPDATAOBJECT iface, LPFORMATETC pformatetc) { - WebBrowser *This = DATAOBJ_THIS(iface); + WebBrowser *This = impl_from_IDataObject(iface); FIXME("(%p)->()\n", This); return E_NOTIMPL; } static HRESULT WINAPI DataObject_GetCanonicalFormatEtc(LPDATAOBJECT iface, LPFORMATETC pformatectIn, LPFORMATETC pformatetcOut) { - WebBrowser *This = DATAOBJ_THIS(iface); + WebBrowser *This = impl_from_IDataObject(iface); FIXME("(%p)->()\n", This); return E_NOTIMPL; } static HRESULT WINAPI DataObject_SetData(LPDATAOBJECT iface, LPFORMATETC pformatetc, STGMEDIUM *pmedium, BOOL fRelease) { - WebBrowser *This = DATAOBJ_THIS(iface); + WebBrowser *This = impl_from_IDataObject(iface); FIXME("(%p)->()\n", This); return E_NOTIMPL; } static HRESULT WINAPI DataObject_EnumFormatEtc(LPDATAOBJECT iface, DWORD dwDirection, IEnumFORMATETC **ppenumFormatEtc) { - WebBrowser *This = DATAOBJ_THIS(iface); + WebBrowser *This = impl_from_IDataObject(iface); FIXME("(%p)->()\n", This); return E_NOTIMPL; } static HRESULT WINAPI DataObject_DAdvise(LPDATAOBJECT iface, FORMATETC *pformatetc, DWORD advf, IAdviseSink *pAdvSink, DWORD *pdwConnection) { - WebBrowser *This = DATAOBJ_THIS(iface); + WebBrowser *This = impl_from_IDataObject(iface); FIXME("(%p)->()\n", This); return E_NOTIMPL; } static HRESULT WINAPI DataObject_DUnadvise(LPDATAOBJECT iface, DWORD dwConnection) { - WebBrowser *This = DATAOBJ_THIS(iface); + WebBrowser *This = impl_from_IDataObject(iface); FIXME("(%p)->()\n", This); return E_NOTIMPL; } static HRESULT WINAPI DataObject_EnumDAdvise(LPDATAOBJECT iface, IEnumSTATDATA **ppenumAdvise) { - WebBrowser *This = DATAOBJ_THIS(iface); + WebBrowser *This = impl_from_IDataObject(iface); FIXME("(%p)->()\n", This); return E_NOTIMPL; } @@ -230,9 +229,8 @@ static const IDataObjectVtbl DataObjectVtbl = { DataObject_EnumDAdvise }; -#undef DATAOBJ_THIS - -void WebBrowser_DataObject_Init(WebBrowser *This) +void WebBrowser_ViewObject_Init(WebBrowser *This) { - This->lpDataObjectVtbl = &DataObjectVtbl; + This->IViewObject2_iface.lpVtbl = &ViewObjectVtbl; + This->IDataObject_iface.lpVtbl = &DataObjectVtbl; } diff --git a/dlls/shdocvw/webbrowser.c b/dlls/shdocvw/webbrowser.c index 46bd9426d5b..3b98b040102 100644 --- a/dlls/shdocvw/webbrowser.c +++ b/dlls/shdocvw/webbrowser.c @@ -68,31 +68,31 @@ static HRESULT WINAPI WebBrowser_QueryInterface(IWebBrowser2 *iface, REFIID riid *ppv = &This->IOleControl_iface; }else if(IsEqualGUID(&IID_IPersist, riid)) { TRACE("(%p)->(IID_IPersist %p)\n", This, ppv); - *ppv = PERSTORAGE(This); + *ppv = &This->IPersistStorage_iface; }else if(IsEqualGUID(&IID_IPersistStorage, riid)) { TRACE("(%p)->(IID_IPersistStorage %p)\n", This, ppv); - *ppv = PERSTORAGE(This); + *ppv = &This->IPersistStorage_iface; }else if(IsEqualGUID(&IID_IPersistMemory, riid)) { TRACE("(%p)->(IID_IPersistStorage %p)\n", This, ppv); - *ppv = PERMEMORY(This); + *ppv = &This->IPersistMemory_iface; }else if(IsEqualGUID (&IID_IPersistStreamInit, riid)) { TRACE("(%p)->(IID_IPersistStreamInit %p)\n", This, ppv); - *ppv = PERSTRINIT(This); + *ppv = &This->IPersistStreamInit_iface; }else if(IsEqualGUID(&IID_IProvideClassInfo, riid)) { TRACE("(%p)->(IID_IProvideClassInfo %p)\n", This, ppv); - *ppv = CLASSINFO(This); + *ppv = &This->IProvideClassInfo2_iface; }else if(IsEqualGUID(&IID_IProvideClassInfo2, riid)) { TRACE("(%p)->(IID_IProvideClassInfo2 %p)\n", This, ppv); - *ppv = CLASSINFO(This); + *ppv = &This->IProvideClassInfo2_iface; }else if(IsEqualGUID(&IID_IConnectionPointContainer, riid)) { TRACE("(%p)->(IID_IConnectionPointContainer %p)\n", This, ppv); *ppv = CONPTCONT(&This->doc_host.cps); }else if(IsEqualGUID(&IID_IViewObject, riid)) { TRACE("(%p)->(IID_IViewObject %p)\n", This, ppv); - *ppv = VIEWOBJ(This); + *ppv = &This->IViewObject2_iface; }else if(IsEqualGUID(&IID_IViewObject2, riid)) { TRACE("(%p)->(IID_IViewObject2 %p)\n", This, ppv); - *ppv = VIEWOBJ2(This); + *ppv = &This->IViewObject2_iface; }else if(IsEqualGUID(&IID_IOleInPlaceActiveObject, riid)) { TRACE("(%p)->(IID_IOleInPlaceActiveObject %p)\n", This, ppv); *ppv = &This->IOleInPlaceActiveObject_iface; @@ -103,7 +103,7 @@ static HRESULT WINAPI WebBrowser_QueryInterface(IWebBrowser2 *iface, REFIID riid *ppv = &This->IServiceProvider_iface; TRACE("(%p)->(IID_IServiceProvider %p)\n", This, ppv); }else if(IsEqualGUID(&IID_IDataObject, riid)) { - *ppv = DATAOBJECT(This); + *ppv = &This->IDataObject_iface; TRACE("(%p)->(IID_IDataObject %p)\n", This, ppv); }else if(IsEqualGUID(&IID_IQuickActivate, riid)) { TRACE("(%p)->(IID_IQuickActivate %p) returning NULL\n", This, ppv); @@ -1194,7 +1194,6 @@ static HRESULT WebBrowser_Create(INT version, IUnknown *pOuter, REFIID riid, voi WebBrowser_OleObject_Init(ret); WebBrowser_ViewObject_Init(ret); - WebBrowser_DataObject_Init(ret); WebBrowser_Persist_Init(ret); WebBrowser_ClassInfo_Init(ret);