diff --git a/dlls/shdocvw/navigate.c b/dlls/shdocvw/navigate.c index 8d3b539a2d4..841edd0f2ce 100644 --- a/dlls/shdocvw/navigate.c +++ b/dlls/shdocvw/navigate.c @@ -34,8 +34,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); static const WCHAR emptyW[] = {0}; typedef struct { - const IBindStatusCallbackVtbl *lpBindStatusCallbackVtbl; - const IHttpNegotiateVtbl *lpHttpNegotiateVtbl; + IBindStatusCallback IBindStatusCallback_iface; + IHttpNegotiate IHttpNegotiate_iface; LONG ref; @@ -47,9 +47,6 @@ typedef struct { ULONG post_data_len; } BindStatusCallback; -#define BINDSC(x) ((IBindStatusCallback*) &(x)->lpBindStatusCallbackVtbl) -#define HTTPNEG(x) ((IHttpNegotiate*) &(x)->lpHttpNegotiateVtbl) - static void dump_BINDINFO(BINDINFO *bi) { static const char * const BINDINFOF_str[] = { @@ -130,38 +127,38 @@ static HRESULT set_dochost_url(DocHost *This, const WCHAR *url) return S_OK; } -#define BINDSC_THIS(iface) DEFINE_THIS(BindStatusCallback, BindStatusCallback, iface) +static inline BindStatusCallback *impl_from_IBindStatusCallback(IBindStatusCallback *iface) +{ + return (BindStatusCallback*)((char*)iface - FIELD_OFFSET(BindStatusCallback, IBindStatusCallback_iface)); +} static HRESULT WINAPI BindStatusCallback_QueryInterface(IBindStatusCallback *iface, REFIID riid, void **ppv) { - BindStatusCallback *This = BINDSC_THIS(iface); - - *ppv = NULL; + BindStatusCallback *This = impl_from_IBindStatusCallback(iface); if(IsEqualGUID(&IID_IUnknown, riid)) { TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); - *ppv = BINDSC(This); + *ppv = &This->IBindStatusCallback_iface; }else if(IsEqualGUID(&IID_IBindStatusCallback, riid)) { TRACE("(%p)->(IID_IBindStatusCallback %p)\n", This, ppv); - *ppv = BINDSC(This); + *ppv = &This->IBindStatusCallback_iface; }else if(IsEqualGUID(&IID_IHttpNegotiate, riid)) { TRACE("(%p)->(IID_IHttpNegotiate %p)\n", This, ppv); - *ppv = HTTPNEG(This); + *ppv = &This->IHttpNegotiate_iface; + }else { + *ppv = NULL; + WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv); + return E_NOINTERFACE; } - if(*ppv) { - IBindStatusCallback_AddRef(BINDSC(This)); - return S_OK; - } - - WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv); - return E_NOINTERFACE; + IUnknown_AddRef((IUnknown*)*ppv); + return S_OK; } static ULONG WINAPI BindStatusCallback_AddRef(IBindStatusCallback *iface) { - BindStatusCallback *This = BINDSC_THIS(iface); + BindStatusCallback *This = impl_from_IBindStatusCallback(iface); LONG ref = InterlockedIncrement(&This->ref); TRACE("(%p) ref=%d\n", This, ref); @@ -171,7 +168,7 @@ static ULONG WINAPI BindStatusCallback_AddRef(IBindStatusCallback *iface) static ULONG WINAPI BindStatusCallback_Release(IBindStatusCallback *iface) { - BindStatusCallback *This = BINDSC_THIS(iface); + BindStatusCallback *This = impl_from_IBindStatusCallback(iface); LONG ref = InterlockedDecrement(&This->ref); TRACE("(%p) ref=%d\n", This, ref); @@ -192,7 +189,7 @@ static ULONG WINAPI BindStatusCallback_Release(IBindStatusCallback *iface) static HRESULT WINAPI BindStatusCallback_OnStartBinding(IBindStatusCallback *iface, DWORD dwReserved, IBinding *pbind) { - BindStatusCallback *This = BINDSC_THIS(iface); + BindStatusCallback *This = impl_from_IBindStatusCallback(iface); TRACE("(%p)->(%d %p)\n", This, dwReserved, pbind); @@ -202,7 +199,7 @@ static HRESULT WINAPI BindStatusCallback_OnStartBinding(IBindStatusCallback *ifa static HRESULT WINAPI BindStatusCallback_GetPriority(IBindStatusCallback *iface, LONG *pnPriority) { - BindStatusCallback *This = BINDSC_THIS(iface); + BindStatusCallback *This = impl_from_IBindStatusCallback(iface); FIXME("(%p)->(%p)\n", This, pnPriority); return E_NOTIMPL; } @@ -210,7 +207,7 @@ static HRESULT WINAPI BindStatusCallback_GetPriority(IBindStatusCallback *iface, static HRESULT WINAPI BindStatusCallback_OnLowResource(IBindStatusCallback *iface, DWORD reserved) { - BindStatusCallback *This = BINDSC_THIS(iface); + BindStatusCallback *This = impl_from_IBindStatusCallback(iface); FIXME("(%p)->(%d)\n", This, reserved); return E_NOTIMPL; } @@ -218,7 +215,7 @@ static HRESULT WINAPI BindStatusCallback_OnLowResource(IBindStatusCallback *ifac static HRESULT WINAPI BindStatusCallback_OnProgress(IBindStatusCallback *iface, ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText) { - BindStatusCallback *This = BINDSC_THIS(iface); + BindStatusCallback *This = impl_from_IBindStatusCallback(iface); TRACE("(%p)->(%d %d %d %s)\n", This, ulProgress, ulProgressMax, ulStatusCode, debugstr_w(szStatusText)); @@ -247,7 +244,7 @@ static HRESULT WINAPI BindStatusCallback_OnProgress(IBindStatusCallback *iface, static HRESULT WINAPI BindStatusCallback_OnStopBinding(IBindStatusCallback *iface, HRESULT hresult, LPCWSTR szError) { - BindStatusCallback *This = BINDSC_THIS(iface); + BindStatusCallback *This = impl_from_IBindStatusCallback(iface); TRACE("(%p)->(%08x %s)\n", This, hresult, debugstr_w(szError)); @@ -264,7 +261,7 @@ static HRESULT WINAPI BindStatusCallback_OnStopBinding(IBindStatusCallback *ifac static HRESULT WINAPI BindStatusCallback_GetBindInfo(IBindStatusCallback *iface, DWORD *grfBINDF, BINDINFO *pbindinfo) { - BindStatusCallback *This = BINDSC_THIS(iface); + BindStatusCallback *This = impl_from_IBindStatusCallback(iface); TRACE("(%p)->(%p %p)\n", This, grfBINDF, pbindinfo); @@ -276,8 +273,8 @@ static HRESULT WINAPI BindStatusCallback_GetBindInfo(IBindStatusCallback *iface, pbindinfo->stgmedData.tymed = TYMED_HGLOBAL; pbindinfo->stgmedData.u.hGlobal = This->post_data; pbindinfo->cbstgmedData = This->post_data_len; - pbindinfo->stgmedData.pUnkForRelease = (IUnknown*)BINDSC(This); - IBindStatusCallback_AddRef(BINDSC(This)); + pbindinfo->stgmedData.pUnkForRelease = (IUnknown*)&This->IBindStatusCallback_iface; + IBindStatusCallback_AddRef(&This->IBindStatusCallback_iface); } return S_OK; @@ -286,7 +283,7 @@ static HRESULT WINAPI BindStatusCallback_GetBindInfo(IBindStatusCallback *iface, static HRESULT WINAPI BindStatusCallback_OnDataAvailable(IBindStatusCallback *iface, DWORD grfBSCF, DWORD dwSize, FORMATETC *pformatetc, STGMEDIUM *pstgmed) { - BindStatusCallback *This = BINDSC_THIS(iface); + BindStatusCallback *This = impl_from_IBindStatusCallback(iface); FIXME("(%p)->(%08x %d %p %p)\n", This, grfBSCF, dwSize, pformatetc, pstgmed); return E_NOTIMPL; } @@ -294,15 +291,13 @@ static HRESULT WINAPI BindStatusCallback_OnDataAvailable(IBindStatusCallback *if static HRESULT WINAPI BindStatusCallback_OnObjectAvailable(IBindStatusCallback *iface, REFIID riid, IUnknown *punk) { - BindStatusCallback *This = BINDSC_THIS(iface); + BindStatusCallback *This = impl_from_IBindStatusCallback(iface); TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), punk); return dochost_object_available(This->doc_host, punk); } -#undef BSC_THIS - static const IBindStatusCallbackVtbl BindStatusCallbackVtbl = { BindStatusCallback_QueryInterface, BindStatusCallback_AddRef, @@ -317,31 +312,34 @@ static const IBindStatusCallbackVtbl BindStatusCallbackVtbl = { BindStatusCallback_OnObjectAvailable }; -#define HTTPNEG_THIS(iface) DEFINE_THIS(BindStatusCallback, HttpNegotiate, iface) +static inline BindStatusCallback *impl_from_IHttpNegotiate(IHttpNegotiate *iface) +{ + return (BindStatusCallback*)((char*)iface - FIELD_OFFSET(BindStatusCallback, IHttpNegotiate_iface)); +} static HRESULT WINAPI HttpNegotiate_QueryInterface(IHttpNegotiate *iface, REFIID riid, void **ppv) { - BindStatusCallback *This = HTTPNEG_THIS(iface); - return IBindStatusCallback_QueryInterface(BINDSC(This), riid, ppv); + BindStatusCallback *This = impl_from_IHttpNegotiate(iface); + return IBindStatusCallback_QueryInterface(&This->IBindStatusCallback_iface, riid, ppv); } static ULONG WINAPI HttpNegotiate_AddRef(IHttpNegotiate *iface) { - BindStatusCallback *This = HTTPNEG_THIS(iface); - return IBindStatusCallback_AddRef(BINDSC(This)); + BindStatusCallback *This = impl_from_IHttpNegotiate(iface); + return IBindStatusCallback_AddRef(&This->IBindStatusCallback_iface); } static ULONG WINAPI HttpNegotiate_Release(IHttpNegotiate *iface) { - BindStatusCallback *This = HTTPNEG_THIS(iface); - return IBindStatusCallback_Release(BINDSC(This)); + BindStatusCallback *This = impl_from_IHttpNegotiate(iface); + return IBindStatusCallback_Release(&This->IBindStatusCallback_iface); } static HRESULT WINAPI HttpNegotiate_BeginningTransaction(IHttpNegotiate *iface, LPCWSTR szURL, LPCWSTR szHeaders, DWORD dwReserved, LPWSTR *pszAdditionalHeaders) { - BindStatusCallback *This = HTTPNEG_THIS(iface); + BindStatusCallback *This = impl_from_IHttpNegotiate(iface); TRACE("(%p)->(%s %s %d %p)\n", This, debugstr_w(szURL), debugstr_w(szHeaders), dwReserved, pszAdditionalHeaders); @@ -359,14 +357,12 @@ static HRESULT WINAPI HttpNegotiate_OnResponse(IHttpNegotiate *iface, DWORD dwResponseCode, LPCWSTR szResponseHeaders, LPCWSTR szRequestHeaders, LPWSTR *pszAdditionalRequestHeaders) { - BindStatusCallback *This = HTTPNEG_THIS(iface); + BindStatusCallback *This = impl_from_IHttpNegotiate(iface); TRACE("(%p)->(%d %s %s %p)\n", This, dwResponseCode, debugstr_w(szResponseHeaders), debugstr_w(szRequestHeaders), pszAdditionalRequestHeaders); return S_OK; } -#undef HTTPNEG_THIS - static const IHttpNegotiateVtbl HttpNegotiateVtbl = { HttpNegotiate_QueryInterface, HttpNegotiate_AddRef, @@ -380,8 +376,8 @@ static BindStatusCallback *create_callback(DocHost *doc_host, LPCWSTR url, PBYTE { BindStatusCallback *ret = heap_alloc(sizeof(BindStatusCallback)); - ret->lpBindStatusCallbackVtbl = &BindStatusCallbackVtbl; - ret->lpHttpNegotiateVtbl = &HttpNegotiateVtbl; + ret->IBindStatusCallback_iface.lpVtbl = &BindStatusCallbackVtbl; + ret->IHttpNegotiate_iface.lpVtbl = &HttpNegotiateVtbl; ret->ref = 1; ret->url = heap_strdupW(url); @@ -712,12 +708,12 @@ static HRESULT navigate_bsc(DocHost *This, BindStatusCallback *bsc, IMoniker *mo if(This->document) deactivate_document(This); - CreateAsyncBindCtx(0, BINDSC(bsc), 0, &bindctx); + CreateAsyncBindCtx(0, &bsc->IBindStatusCallback_iface, 0, &bindctx); if(This->frame) IOleInPlaceFrame_EnableModeless(This->frame, FALSE); - hres = bind_to_object(This, mon, bsc->url, bindctx, BINDSC(bsc)); + hres = bind_to_object(This, mon, bsc->url, bindctx, &bsc->IBindStatusCallback_iface); if(This->frame) IOleInPlaceFrame_EnableModeless(This->frame, TRUE); @@ -741,7 +737,7 @@ static void navigate_bsc_proc(DocHost *This, task_header_t *t) navigate_bsc(This, task->bsc, NULL); - IBindStatusCallback_Release(BINDSC(task->bsc)); + IBindStatusCallback_Release(&task->bsc->IBindStatusCallback_iface); } @@ -849,7 +845,7 @@ static HRESULT navigate_hlink(DocHost *This, IMoniker *mon, IBindCtx *bindctx, }else { bsc = create_callback(This, url, post_data, post_data_len, headers); hres = navigate_bsc(This, bsc, mon); - IBindStatusCallback_Release(BINDSC(bsc)); + IBindStatusCallback_Release(&bsc->IBindStatusCallback_iface); } CoTaskMemFree(url); @@ -884,30 +880,33 @@ HRESULT go_home(DocHost *This) return navigate_url(This, wszPageName, NULL, NULL, NULL, NULL); } -#define HLINKFRAME_THIS(iface) DEFINE_THIS(HlinkFrame, IHlinkFrame, iface) +static inline HlinkFrame *impl_from_IHlinkFrame(IHlinkFrame *iface) +{ + return (HlinkFrame*)((char*)iface - FIELD_OFFSET(HlinkFrame, IHlinkFrame_iface)); +} static HRESULT WINAPI HlinkFrame_QueryInterface(IHlinkFrame *iface, REFIID riid, void **ppv) { - HlinkFrame *This = HLINKFRAME_THIS(iface); + HlinkFrame *This = impl_from_IHlinkFrame(iface); return IUnknown_QueryInterface(This->outer, riid, ppv); } static ULONG WINAPI HlinkFrame_AddRef(IHlinkFrame *iface) { - HlinkFrame *This = HLINKFRAME_THIS(iface); + HlinkFrame *This = impl_from_IHlinkFrame(iface); return IUnknown_AddRef(This->outer); } static ULONG WINAPI HlinkFrame_Release(IHlinkFrame *iface) { - HlinkFrame *This = HLINKFRAME_THIS(iface); + HlinkFrame *This = impl_from_IHlinkFrame(iface); return IUnknown_Release(This->outer); } static HRESULT WINAPI HlinkFrame_SetBrowseContext(IHlinkFrame *iface, IHlinkBrowseContext *pihlbc) { - HlinkFrame *This = HLINKFRAME_THIS(iface); + HlinkFrame *This = impl_from_IHlinkFrame(iface); FIXME("(%p)->(%p)\n", This, pihlbc); return E_NOTIMPL; } @@ -915,7 +914,7 @@ static HRESULT WINAPI HlinkFrame_SetBrowseContext(IHlinkFrame *iface, static HRESULT WINAPI HlinkFrame_GetBrowseContext(IHlinkFrame *iface, IHlinkBrowseContext **ppihlbc) { - HlinkFrame *This = HLINKFRAME_THIS(iface); + HlinkFrame *This = impl_from_IHlinkFrame(iface); FIXME("(%p)->(%p)\n", This, ppihlbc); return E_NOTIMPL; } @@ -923,7 +922,7 @@ static HRESULT WINAPI HlinkFrame_GetBrowseContext(IHlinkFrame *iface, static HRESULT WINAPI HlinkFrame_Navigate(IHlinkFrame *iface, DWORD grfHLNF, LPBC pbc, IBindStatusCallback *pibsc, IHlink *pihlNavigate) { - HlinkFrame *This = HLINKFRAME_THIS(iface); + HlinkFrame *This = impl_from_IHlinkFrame(iface); IMoniker *mon; LPWSTR location = NULL; @@ -954,7 +953,7 @@ static HRESULT WINAPI HlinkFrame_Navigate(IHlinkFrame *iface, DWORD grfHLNF, LPB static HRESULT WINAPI HlinkFrame_OnNavigate(IHlinkFrame *iface, DWORD grfHLNF, IMoniker *pimkTarget, LPCWSTR pwzLocation, LPCWSTR pwzFriendlyName, DWORD dwreserved) { - HlinkFrame *This = HLINKFRAME_THIS(iface); + HlinkFrame *This = impl_from_IHlinkFrame(iface); FIXME("(%p)->(%08x %p %s %s %d)\n", This, grfHLNF, pimkTarget, debugstr_w(pwzLocation), debugstr_w(pwzFriendlyName), dwreserved); return E_NOTIMPL; @@ -963,14 +962,12 @@ static HRESULT WINAPI HlinkFrame_OnNavigate(IHlinkFrame *iface, DWORD grfHLNF, static HRESULT WINAPI HlinkFrame_UpdateHlink(IHlinkFrame *iface, ULONG uHLID, IMoniker *pimkTarget, LPCWSTR pwzLocation, LPCWSTR pwzFriendlyName) { - HlinkFrame *This = HLINKFRAME_THIS(iface); + HlinkFrame *This = impl_from_IHlinkFrame(iface); FIXME("(%p)->(%u %p %s %s)\n", This, uHLID, pimkTarget, debugstr_w(pwzLocation), debugstr_w(pwzFriendlyName)); return E_NOTIMPL; } -#undef HLINKFRAME_THIS - static const IHlinkFrameVtbl HlinkFrameVtbl = { HlinkFrame_QueryInterface, HlinkFrame_AddRef, @@ -982,112 +979,113 @@ static const IHlinkFrameVtbl HlinkFrameVtbl = { HlinkFrame_UpdateHlink }; -#define TARGETFRAME2_THIS(iface) DEFINE_THIS(HlinkFrame, ITargetFrame2, iface) +static inline HlinkFrame *impl_from_ITargetFrame2(ITargetFrame2 *iface) +{ + return (HlinkFrame*)((char*)iface - FIELD_OFFSET(HlinkFrame, IHlinkFrame_iface)); +} static HRESULT WINAPI TargetFrame2_QueryInterface(ITargetFrame2 *iface, REFIID riid, void **ppv) { - HlinkFrame *This = TARGETFRAME2_THIS(iface); + HlinkFrame *This = impl_from_ITargetFrame2(iface); return IUnknown_QueryInterface(This->outer, riid, ppv); } static ULONG WINAPI TargetFrame2_AddRef(ITargetFrame2 *iface) { - HlinkFrame *This = TARGETFRAME2_THIS(iface); + HlinkFrame *This = impl_from_ITargetFrame2(iface); return IUnknown_AddRef(This->outer); } static ULONG WINAPI TargetFrame2_Release(ITargetFrame2 *iface) { - HlinkFrame *This = TARGETFRAME2_THIS(iface); + HlinkFrame *This = impl_from_ITargetFrame2(iface); return IUnknown_Release(This->outer); } static HRESULT WINAPI TargetFrame2_SetFrameName(ITargetFrame2 *iface, LPCWSTR pszFrameName) { - HlinkFrame *This = TARGETFRAME2_THIS(iface); + HlinkFrame *This = impl_from_ITargetFrame2(iface); FIXME("(%p)->(%s)\n", This, debugstr_w(pszFrameName)); return E_NOTIMPL; } static HRESULT WINAPI TargetFrame2_GetFrameName(ITargetFrame2 *iface, LPWSTR *ppszFrameName) { - HlinkFrame *This = TARGETFRAME2_THIS(iface); + HlinkFrame *This = impl_from_ITargetFrame2(iface); FIXME("(%p)->(%p)\n", This, ppszFrameName); return E_NOTIMPL; } static HRESULT WINAPI TargetFrame2_GetParentFrame(ITargetFrame2 *iface, IUnknown **ppunkParent) { - HlinkFrame *This = TARGETFRAME2_THIS(iface); + HlinkFrame *This = impl_from_ITargetFrame2(iface); FIXME("(%p)->(%p)\n", This, ppunkParent); return E_NOTIMPL; } static HRESULT WINAPI TargetFrame2_SetFrameSrc(ITargetFrame2 *iface, LPCWSTR pszFrameSrc) { - HlinkFrame *This = TARGETFRAME2_THIS(iface); + HlinkFrame *This = impl_from_ITargetFrame2(iface); FIXME("(%p)->(%s)\n", This, debugstr_w(pszFrameSrc)); return E_NOTIMPL; } static HRESULT WINAPI TargetFrame2_GetFrameSrc(ITargetFrame2 *iface, LPWSTR *ppszFrameSrc) { - HlinkFrame *This = TARGETFRAME2_THIS(iface); + HlinkFrame *This = impl_from_ITargetFrame2(iface); FIXME("(%p)->()\n", This); return E_NOTIMPL; } static HRESULT WINAPI TargetFrame2_GetFramesContainer(ITargetFrame2 *iface, IOleContainer **ppContainer) { - HlinkFrame *This = TARGETFRAME2_THIS(iface); + HlinkFrame *This = impl_from_ITargetFrame2(iface); FIXME("(%p)->(%p)\n", This, ppContainer); return E_NOTIMPL; } static HRESULT WINAPI TargetFrame2_SetFrameOptions(ITargetFrame2 *iface, DWORD dwFlags) { - HlinkFrame *This = TARGETFRAME2_THIS(iface); + HlinkFrame *This = impl_from_ITargetFrame2(iface); FIXME("(%p)->(%x)\n", This, dwFlags); return E_NOTIMPL; } static HRESULT WINAPI TargetFrame2_GetFrameOptions(ITargetFrame2 *iface, DWORD *pdwFlags) { - HlinkFrame *This = TARGETFRAME2_THIS(iface); + HlinkFrame *This = impl_from_ITargetFrame2(iface); FIXME("(%p)->(%p)\n", This, pdwFlags); return E_NOTIMPL; } static HRESULT WINAPI TargetFrame2_SetFrameMargins(ITargetFrame2 *iface, DWORD dwWidth, DWORD dwHeight) { - HlinkFrame *This = TARGETFRAME2_THIS(iface); + HlinkFrame *This = impl_from_ITargetFrame2(iface); FIXME("(%p)->(%d %d)\n", This, dwWidth, dwHeight); return E_NOTIMPL; } static HRESULT WINAPI TargetFrame2_GetFrameMargins(ITargetFrame2 *iface, DWORD *pdwWidth, DWORD *pdwHeight) { - HlinkFrame *This = TARGETFRAME2_THIS(iface); + HlinkFrame *This = impl_from_ITargetFrame2(iface); FIXME("(%p)->(%p %p)\n", This, pdwWidth, pdwHeight); return E_NOTIMPL; } static HRESULT WINAPI TargetFrame2_FindFrame(ITargetFrame2 *iface, LPCWSTR pszTargetName, DWORD dwFlags, IUnknown **ppunkTargetFrame) { - HlinkFrame *This = TARGETFRAME2_THIS(iface); + HlinkFrame *This = impl_from_ITargetFrame2(iface); FIXME("(%p)->(%s %x %p)\n", This, debugstr_w(pszTargetName), dwFlags, ppunkTargetFrame); return E_NOTIMPL; } static HRESULT WINAPI TargetFrame2_GetTargetAlias(ITargetFrame2 *iface, LPCWSTR pszTargetName, LPWSTR *ppszTargetAlias) { - HlinkFrame *This = TARGETFRAME2_THIS(iface); + HlinkFrame *This = impl_from_ITargetFrame2(iface); FIXME("(%p)->(%s %p)\n", This, debugstr_w(pszTargetName), ppszTargetAlias); return E_NOTIMPL; } -#undef TARGETFRAME2_THIS - static const ITargetFrame2Vtbl TargetFrame2Vtbl = { TargetFrame2_QueryInterface, TargetFrame2_AddRef, @@ -1110,10 +1108,10 @@ BOOL HlinkFrame_QI(HlinkFrame *This, REFIID riid, void **ppv) { if(IsEqualGUID(&IID_IHlinkFrame, riid)) { TRACE("(%p)->(IID_IHlinkFrame %p)\n", This, ppv); - *ppv = HLINKFRAME(This); + *ppv = &This->IHlinkFrame_iface; }else if(IsEqualGUID(&IID_ITargetFrame2, riid)) { TRACE("(%p)->(IID_ITargetFrame2 %p)\n", This, ppv); - *ppv = TARGETFRAME2(This); + *ppv = &This->ITargetFrame2_iface; }else { return FALSE; } @@ -1124,8 +1122,8 @@ BOOL HlinkFrame_QI(HlinkFrame *This, REFIID riid, void **ppv) void HlinkFrame_Init(HlinkFrame *This, IUnknown *outer, DocHost *doc_host) { - This->lpIHlinkFrameVtbl = &HlinkFrameVtbl; - This->lpITargetFrame2Vtbl = &TargetFrame2Vtbl; + This->IHlinkFrame_iface.lpVtbl = &HlinkFrameVtbl; + This->ITargetFrame2_iface.lpVtbl = &TargetFrame2Vtbl; This->outer = outer; This->doc_host = doc_host; diff --git a/dlls/shdocvw/shdocvw.h b/dlls/shdocvw/shdocvw.h index d3e9e9d67bb..5e9c8a384c7 100644 --- a/dlls/shdocvw/shdocvw.h +++ b/dlls/shdocvw/shdocvw.h @@ -69,8 +69,8 @@ typedef struct { } ConnectionPointContainer; typedef struct { - const IHlinkFrameVtbl *lpIHlinkFrameVtbl; - const ITargetFrame2Vtbl *lpITargetFrame2Vtbl; + IHlinkFrame IHlinkFrame_iface; + ITargetFrame2 ITargetFrame2_iface; IUnknown *outer; DocHost *doc_host; @@ -197,9 +197,6 @@ struct InternetExplorer { #define CONPTCONT(x) ((IConnectionPointContainer*) &(x)->lpConnectionPointContainerVtbl) #define INPLACEFRAME(x) ((IOleInPlaceFrame*) &(x)->lpOleInPlaceFrameVtbl) -#define HLINKFRAME(x) ((IHlinkFrame*) &(x)->lpIHlinkFrameVtbl) -#define TARGETFRAME2(x) ((ITargetFrame2*) &(x)->lpITargetFrame2Vtbl) - void WebBrowser_OleObject_Init(WebBrowser*); void WebBrowser_ViewObject_Init(WebBrowser*); void WebBrowser_Persist_Init(WebBrowser*);