diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c index eb1c78277ad..57d4fc6e517 100644 --- a/dlls/mshtml/htmldoc.c +++ b/dlls/mshtml/htmldoc.c @@ -1697,6 +1697,9 @@ static BOOL htmldoc_qi(HTMLDocument *This, REFIID riid, void **ppv) }else if(IsEqualGUID(&IID_IViewObject2, riid)) { TRACE("(%p)->(IID_IViewObject2, %p)\n", This, ppv); *ppv = VIEWOBJ2(This); + }else if(IsEqualGUID(&IID_IViewObjectEx, riid)) { + TRACE("(%p)->(IID_IViewObjectEx, %p)\n", This, ppv); + *ppv = VIEWOBJEX(This); }else if(IsEqualGUID(&IID_IOleWindow, riid)) { TRACE("(%p)->(IID_IOleWindow, %p)\n", This, ppv); *ppv = OLEWIN(This); diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 4fb4c89f6c2..afd0bff74b7 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -314,7 +314,7 @@ struct HTMLDocument { const IOleDocumentVtbl *lpOleDocumentVtbl; const IOleDocumentViewVtbl *lpOleDocumentViewVtbl; const IOleInPlaceActiveObjectVtbl *lpOleInPlaceActiveObjectVtbl; - const IViewObject2Vtbl *lpViewObject2Vtbl; + const IViewObjectExVtbl *lpViewObjectExVtbl; const IOleInPlaceObjectWindowlessVtbl *lpOleInPlaceObjectWindowlessVtbl; const IServiceProviderVtbl *lpServiceProviderVtbl; const IOleCommandTargetVtbl *lpOleCommandTargetVtbl; @@ -564,8 +564,9 @@ struct HTMLDocumentNode { #define DOCVIEW(x) ((IOleDocumentView*) &(x)->lpOleDocumentViewVtbl) #define OLEWIN(x) ((IOleWindow*) &(x)->lpOleInPlaceActiveObjectVtbl) #define ACTOBJ(x) ((IOleInPlaceActiveObject*) &(x)->lpOleInPlaceActiveObjectVtbl) -#define VIEWOBJ(x) ((IViewObject*) &(x)->lpViewObject2Vtbl) -#define VIEWOBJ2(x) ((IViewObject2*) &(x)->lpViewObject2Vtbl) +#define VIEWOBJ(x) ((IViewObject*) &(x)->lpViewObjectExVtbl) +#define VIEWOBJ2(x) ((IViewObject2*) &(x)->lpViewObjectExVtbl) +#define VIEWOBJEX(x) ((IViewObjectEx*) &(x)->lpViewObjectExVtbl) #define INPLACEOBJ(x) ((IOleInPlaceObject*) &(x)->lpOleInPlaceObjectWindowlessVtbl) #define INPLACEWIN(x) ((IOleInPlaceObjectWindowless*) &(x)->lpOleInPlaceObjectWindowlessVtbl) #define SERVPROV(x) ((IServiceProvider*) &(x)->lpServiceProviderVtbl) diff --git a/dlls/mshtml/view.c b/dlls/mshtml/view.c index 271a1675107..f4c62a03d63 100644 --- a/dlls/mshtml/view.c +++ b/dlls/mshtml/view.c @@ -751,27 +751,27 @@ static const IOleDocumentViewVtbl OleDocumentViewVtbl = { * IViewObject implementation */ -#define VIEWOBJ_THIS(iface) DEFINE_THIS(HTMLDocument, ViewObject2, iface) +#define VIEWOBJ_THIS(iface) DEFINE_THIS(HTMLDocument, ViewObjectEx, iface) -static HRESULT WINAPI ViewObject_QueryInterface(IViewObject2 *iface, REFIID riid, void **ppvObject) +static HRESULT WINAPI ViewObject_QueryInterface(IViewObjectEx *iface, REFIID riid, void **ppvObject) { HTMLDocument *This = VIEWOBJ_THIS(iface); return IHTMLDocument2_QueryInterface(HTMLDOC(This), riid, ppvObject); } -static ULONG WINAPI ViewObject_AddRef(IViewObject2 *iface) +static ULONG WINAPI ViewObject_AddRef(IViewObjectEx *iface) { HTMLDocument *This = VIEWOBJ_THIS(iface); return IHTMLDocument2_AddRef(HTMLDOC(This)); } -static ULONG WINAPI ViewObject_Release(IViewObject2 *iface) +static ULONG WINAPI ViewObject_Release(IViewObjectEx *iface) { HTMLDocument *This = VIEWOBJ_THIS(iface); return IHTMLDocument2_Release(HTMLDOC(This)); } -static HRESULT WINAPI ViewObject_Draw(IViewObject2 *iface, DWORD dwDrawAspect, LONG lindex, void *pvAspect, +static HRESULT WINAPI ViewObject_Draw(IViewObjectEx *iface, DWORD dwDrawAspect, LONG lindex, void *pvAspect, DVTARGETDEVICE *ptd, HDC hdcTargetDev, HDC hdcDraw, LPCRECTL lprcBounds, LPCRECTL lprcWBounds, BOOL (CALLBACK *pfnContinue)(ULONG_PTR dwContinue), ULONG_PTR dwContinue) { @@ -781,7 +781,7 @@ static HRESULT WINAPI ViewObject_Draw(IViewObject2 *iface, DWORD dwDrawAspect, L return E_NOTIMPL; } -static HRESULT WINAPI ViewObject_GetColorSet(IViewObject2 *iface, DWORD dwDrawAspect, LONG lindex, void *pvAspect, +static HRESULT WINAPI ViewObject_GetColorSet(IViewObjectEx *iface, DWORD dwDrawAspect, LONG lindex, void *pvAspect, DVTARGETDEVICE *ptd, HDC hicTargetDev, LOGPALETTE **ppColorSet) { HTMLDocument *This = VIEWOBJ_THIS(iface); @@ -789,7 +789,7 @@ static HRESULT WINAPI ViewObject_GetColorSet(IViewObject2 *iface, DWORD dwDrawAs return E_NOTIMPL; } -static HRESULT WINAPI ViewObject_Freeze(IViewObject2 *iface, DWORD dwDrawAspect, LONG lindex, +static HRESULT WINAPI ViewObject_Freeze(IViewObjectEx *iface, DWORD dwDrawAspect, LONG lindex, void *pvAspect, DWORD *pdwFreeze) { HTMLDocument *This = VIEWOBJ_THIS(iface); @@ -797,28 +797,28 @@ static HRESULT WINAPI ViewObject_Freeze(IViewObject2 *iface, DWORD dwDrawAspect, return E_NOTIMPL; } -static HRESULT WINAPI ViewObject_Unfreeze(IViewObject2 *iface, DWORD dwFreeze) +static HRESULT WINAPI ViewObject_Unfreeze(IViewObjectEx *iface, DWORD dwFreeze) { HTMLDocument *This = VIEWOBJ_THIS(iface); FIXME("(%p)->(%d)\n", This, dwFreeze); return E_NOTIMPL; } -static HRESULT WINAPI ViewObject_SetAdvise(IViewObject2 *iface, DWORD aspects, DWORD advf, IAdviseSink *pAdvSink) +static HRESULT WINAPI ViewObject_SetAdvise(IViewObjectEx *iface, DWORD aspects, DWORD advf, IAdviseSink *pAdvSink) { HTMLDocument *This = VIEWOBJ_THIS(iface); FIXME("(%p)->(%d %d %p)\n", This, aspects, advf, pAdvSink); return E_NOTIMPL; } -static HRESULT WINAPI ViewObject_GetAdvise(IViewObject2 *iface, DWORD *pAspects, DWORD *pAdvf, IAdviseSink **ppAdvSink) +static HRESULT WINAPI ViewObject_GetAdvise(IViewObjectEx *iface, DWORD *pAspects, DWORD *pAdvf, IAdviseSink **ppAdvSink) { HTMLDocument *This = VIEWOBJ_THIS(iface); FIXME("(%p)->(%p %p %p)\n", This, pAspects, pAdvf, ppAdvSink); return E_NOTIMPL; } -static HRESULT WINAPI ViewObject_GetExtent(IViewObject2 *iface, DWORD dwDrawAspect, LONG lindex, +static HRESULT WINAPI ViewObject_GetExtent(IViewObjectEx *iface, DWORD dwDrawAspect, LONG lindex, DVTARGETDEVICE* ptd, LPSIZEL lpsizel) { HTMLDocument *This = VIEWOBJ_THIS(iface); @@ -826,9 +826,49 @@ static HRESULT WINAPI ViewObject_GetExtent(IViewObject2 *iface, DWORD dwDrawAspe return E_NOTIMPL; } +static HRESULT WINAPI ViewObject_GetRect(IViewObjectEx *iface, DWORD dwAspect, LPRECTL pRect) +{ + HTMLDocument *This = VIEWOBJ_THIS(iface); + FIXME("(%p)->(%d %p)\n", This, dwAspect, pRect); + return E_NOTIMPL; +} + +static HRESULT WINAPI ViewObject_GetViewStatus(IViewObjectEx *iface, DWORD *pdwStatus) +{ + HTMLDocument *This = VIEWOBJ_THIS(iface); + FIXME("(%p)->(%p)\n", This, pdwStatus); + return E_NOTIMPL; +} + +static HRESULT WINAPI ViewObject_QueryHitPoint(IViewObjectEx* iface, DWORD dwAspect, + LPCRECT pRectBounds, POINT ptlLoc, LONG lCloseHint, DWORD *pHitResult) +{ + HTMLDocument *This = VIEWOBJ_THIS(iface); + FIXME("(%p)->(%d %p (%d %d) %d %p)\n", This, dwAspect, pRectBounds, ptlLoc.x, + ptlLoc.y, lCloseHint, pHitResult); + return E_NOTIMPL; +} + +static HRESULT WINAPI ViewObject_QueryHitRect(IViewObjectEx *iface, DWORD dwAspect, + LPCRECT pRectBounds, LPCRECT pRectLoc, LONG lCloseHint, DWORD *pHitResult) +{ + HTMLDocument *This = VIEWOBJ_THIS(iface); + FIXME("(%p)->(%d %p %p %d %p)\n", This, dwAspect, pRectBounds, pRectLoc, lCloseHint, pHitResult); + return E_NOTIMPL; +} + +static HRESULT WINAPI ViewObject_GetNaturalExtent(IViewObjectEx *iface, DWORD dwAspect, LONG lindex, + DVTARGETDEVICE *ptd, HDC hicTargetDev, DVEXTENTINFO *pExtentInfo, LPSIZEL pSizel) +{ + HTMLDocument *This = VIEWOBJ_THIS(iface); + FIXME("(%p)->(%d %d %p %p %p %p\n", This, dwAspect,lindex, ptd, + hicTargetDev, pExtentInfo, pSizel); + return E_NOTIMPL; +} + #undef VIEWOBJ_THIS -static const IViewObject2Vtbl ViewObjectVtbl = { +static const IViewObjectExVtbl ViewObjectVtbl = { ViewObject_QueryInterface, ViewObject_AddRef, ViewObject_Release, @@ -838,11 +878,16 @@ static const IViewObject2Vtbl ViewObjectVtbl = { ViewObject_Unfreeze, ViewObject_SetAdvise, ViewObject_GetAdvise, - ViewObject_GetExtent + ViewObject_GetExtent, + ViewObject_GetRect, + ViewObject_GetViewStatus, + ViewObject_QueryHitPoint, + ViewObject_QueryHitRect, + ViewObject_GetNaturalExtent }; void HTMLDocument_View_Init(HTMLDocument *This) { This->lpOleDocumentViewVtbl = &OleDocumentViewVtbl; - This->lpViewObject2Vtbl = &ViewObjectVtbl; + This->lpViewObjectExVtbl = &ViewObjectVtbl; }