shdocvw: Add IOleControlSite interface to dochost.

This commit is contained in:
David Hedberg 2010-11-17 13:12:20 +01:00 committed by Alexandre Julliard
parent 910cac49a4
commit 42ef5a0fce
2 changed files with 92 additions and 0 deletions

View File

@ -55,6 +55,9 @@ static HRESULT WINAPI ClientSite_QueryInterface(IOleClientSite *iface, REFIID ri
}else if(IsEqualGUID(&IID_IOleDocumentSite, riid)) { }else if(IsEqualGUID(&IID_IOleDocumentSite, riid)) {
TRACE("(%p)->(IID_IOleDocumentSite %p)\n", This, ppv); TRACE("(%p)->(IID_IOleDocumentSite %p)\n", This, ppv);
*ppv = &This->IOleDocumentSite_iface; *ppv = &This->IOleDocumentSite_iface;
}else if(IsEqualGUID(&IID_IOleControlSite, riid)) {
TRACE("(%p)->(IID_IOleControlSite %p)\n", This, ppv);
*ppv = &This->IOleControlSite_iface;
}else if(IsEqualGUID(&IID_IOleCommandTarget, riid)) { }else if(IsEqualGUID(&IID_IOleCommandTarget, riid)) {
TRACE("(%p)->(IID_IOleCommandTarget %p)\n", This, ppv); TRACE("(%p)->(IID_IOleCommandTarget %p)\n", This, ppv);
*ppv = &This->IOleCommandTarget_iface; *ppv = &This->IOleCommandTarget_iface;
@ -356,6 +359,93 @@ static const IOleDocumentSiteVtbl OleDocumentSiteVtbl = {
OleDocumentSite_ActivateMe OleDocumentSite_ActivateMe
}; };
static inline DocHost *impl_from_IOleControlSite(IOleControlSite *iface)
{
return (DocHost*)((char*)iface - FIELD_OFFSET(DocHost, IOleControlSite_iface));
}
static HRESULT WINAPI ControlSite_QueryInterface(IOleControlSite *iface, REFIID riid, void **ppv)
{
DocHost *This = impl_from_IOleControlSite(iface);
return IOleClientSite_QueryInterface(&This->IOleClientSite_iface, riid, ppv);
}
static ULONG WINAPI ControlSite_AddRef(IOleControlSite *iface)
{
DocHost *This = impl_from_IOleControlSite(iface);
return IOleClientSite_AddRef(&This->IOleClientSite_iface);
}
static ULONG WINAPI ControlSite_Release(IOleControlSite *iface)
{
DocHost *This = impl_from_IOleControlSite(iface);
return IOleClientSite_Release(&This->IOleClientSite_iface);
}
static HRESULT WINAPI ControlSite_OnControlInfoChanged(IOleControlSite *iface)
{
DocHost *This = impl_from_IOleControlSite(iface);
FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI ControlSite_LockInPlaceActive(IOleControlSite *iface, BOOL fLock)
{
DocHost *This = impl_from_IOleControlSite(iface);
FIXME("(%p)->(%d)\n", This, fLock);
return E_NOTIMPL;
}
static HRESULT WINAPI ControlSite_GetExtendedControl(IOleControlSite *iface, IDispatch **ppDisp)
{
DocHost *This = impl_from_IOleControlSite(iface);
FIXME("(%p)->(%p)\n", This, ppDisp);
return E_NOTIMPL;
}
static HRESULT WINAPI ControlSite_TransformCoords(IOleControlSite *iface, POINTL *pPtlHimetric,
POINTF *pPtfContainer, DWORD dwFlags)
{
DocHost *This = impl_from_IOleControlSite(iface);
FIXME("(%p)->(%p, %p, %08x)\n", This, pPtlHimetric, pPtfContainer, dwFlags);
return E_NOTIMPL;
}
static HRESULT WINAPI ControlSite_TranslateAccelerator(IOleControlSite *iface, MSG *pMsg,
DWORD grfModifiers)
{
DocHost *This = impl_from_IOleControlSite(iface);
FIXME("(%p)->(%p, %08x)\n", This, pMsg, grfModifiers);
return E_NOTIMPL;
}
static HRESULT WINAPI ControlSite_OnFocus(IOleControlSite *iface, BOOL fGotFocus)
{
DocHost *This = impl_from_IOleControlSite(iface);
FIXME("(%p)->(%d)\n", This, fGotFocus);
return E_NOTIMPL;
}
static HRESULT WINAPI ControlSite_ShowPropertyFrame(IOleControlSite *iface)
{
DocHost *This = impl_from_IOleControlSite(iface);
FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static IOleControlSiteVtbl OleControlSiteVtbl = {
ControlSite_QueryInterface,
ControlSite_AddRef,
ControlSite_Release,
ControlSite_OnControlInfoChanged,
ControlSite_LockInPlaceActive,
ControlSite_GetExtendedControl,
ControlSite_TransformCoords,
ControlSite_TranslateAccelerator,
ControlSite_OnFocus,
ControlSite_ShowPropertyFrame
};
static inline DocHost *impl_from_IDispatch(IDispatch *iface) static inline DocHost *impl_from_IDispatch(IDispatch *iface)
{ {
return (DocHost*)((char*)iface - FIELD_OFFSET(DocHost, IDispatch_iface)); return (DocHost*)((char*)iface - FIELD_OFFSET(DocHost, IDispatch_iface));
@ -521,6 +611,7 @@ void DocHost_ClientSite_Init(DocHost *This)
This->IOleClientSite_iface.lpVtbl = &OleClientSiteVtbl; This->IOleClientSite_iface.lpVtbl = &OleClientSiteVtbl;
This->IOleInPlaceSite_iface.lpVtbl = &OleInPlaceSiteVtbl; This->IOleInPlaceSite_iface.lpVtbl = &OleInPlaceSiteVtbl;
This->IOleDocumentSite_iface.lpVtbl = &OleDocumentSiteVtbl; This->IOleDocumentSite_iface.lpVtbl = &OleDocumentSiteVtbl;
This->IOleControlSite_iface.lpVtbl = &OleControlSiteVtbl;
This->IDispatch_iface.lpVtbl = &DispatchVtbl; This->IDispatch_iface.lpVtbl = &DispatchVtbl;
This->IServiceProvider_iface.lpVtbl = &ServiceProviderVtbl; This->IServiceProvider_iface.lpVtbl = &ServiceProviderVtbl;
} }

View File

@ -97,6 +97,7 @@ struct DocHost {
IOleInPlaceSite IOleInPlaceSite_iface; IOleInPlaceSite IOleInPlaceSite_iface;
IDocHostUIHandler2 IDocHostUIHandler2_iface; IDocHostUIHandler2 IDocHostUIHandler2_iface;
IOleDocumentSite IOleDocumentSite_iface; IOleDocumentSite IOleDocumentSite_iface;
IOleControlSite IOleControlSite_iface;
IOleCommandTarget IOleCommandTarget_iface; IOleCommandTarget IOleCommandTarget_iface;
IDispatch IDispatch_iface; IDispatch IDispatch_iface;
IPropertyNotifySink IPropertyNotifySink_iface; IPropertyNotifySink IPropertyNotifySink_iface;