doc_view_atom = RegisterClassExW(&wndclass);
}
- GetClientRect(This->frame_hwnd, &rect);
- adjust_ie_docobj_rect(This->frame_hwnd, &rect);
+ This->container_vtbl->GetDocObjRect(This, &rect);
This->hwnd = CreateWindowExW(0, wszShell_DocObject_View,
wszShell_DocObject_View,
WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_TABSTOP,
PropertyNotifySink_OnRequestEdit
};
-void DocHost_Init(DocHost *This, IDispatch *disp)
+void DocHost_Init(DocHost *This, IDispatch *disp, const IDocHostContainerVtbl* container)
{
This->lpDocHostUIHandlerVtbl = &DocHostUIHandler2Vtbl;
This->lpOleCommandTargetVtbl = &OleCommandTargetVtbl;
This->disp = disp;
+ This->container_vtbl = container;
+
This->client_disp = NULL;
This->document = NULL;
LPCOLESTR pszStatusText)
{
DocHost *This = INPLACEFRAME_THIS(iface);
- FIXME("(%p)->(%s)\n", This, debugstr_w(pszStatusText));
- return E_NOTIMPL;
+ TRACE("(%p)->(%s)\n", This, debugstr_w(pszStatusText));
+ return This->container_vtbl->SetStatusText(This, pszStatusText);
}
static HRESULT WINAPI InPlaceFrame_EnableModeless(IOleInPlaceFrame *iface, BOOL fEnable)
return wb;
}
+static void WINAPI DocHostContainer_GetDocObjRect(DocHost* This, RECT* rc)
+{
+ GetClientRect(This->frame_hwnd, rc);
+ adjust_ie_docobj_rect(This->frame_hwnd, rc);
+}
+
+static HRESULT WINAPI DocHostContainer_SetStatusText(DocHost* This, LPCWSTR text)
+{
+ FIXME("(%p)->(%s)\n", This, debugstr_w(text));
+
+ return E_NOTIMPL;
+}
+
+static void WINAPI DocHostContainer_SetURL(DocHost* This, LPCWSTR url)
+{
+
+}
+
+static const IDocHostContainerVtbl DocHostContainerVtbl = {
+ DocHostContainer_GetDocObjRect,
+ DocHostContainer_SetStatusText,
+ DocHostContainer_SetURL
+};
+
HRESULT InternetExplorer_Create(IUnknown *pOuter, REFIID riid, void **ppv)
{
InternetExplorer *ret;
ret->ref = 0;
ret->doc_host.disp = (IDispatch*)WEBBROWSER2(ret);
- DocHost_Init(&ret->doc_host, (IDispatch*)WEBBROWSER2(ret));
+ DocHost_Init(&ret->doc_host, (IDispatch*)WEBBROWSER2(ret), &DocHostContainerVtbl);
InternetExplorer_WebBrowser_Init(ret);
heap_free(This->url);
This->url = new_url;
+
+ This->container_vtbl->SetURL(This, This->url);
return S_OK;
}
task_proc_t proc;
} task_header_t;
+typedef struct _IDocHostContainerVtbl
+{
+ void (WINAPI* GetDocObjRect)(DocHost*,RECT*);
+ HRESULT (WINAPI* SetStatusText)(DocHost*,LPCWSTR);
+ void (WINAPI* SetURL)(DocHost*,LPCWSTR);
+} IDocHostContainerVtbl;
+
struct DocHost {
const IOleClientSiteVtbl *lpOleClientSiteVtbl;
const IOleInPlaceSiteVtbl *lpOleInPlaceSiteVtbl;
IOleDocumentView *view;
IUnknown *doc_navigate;
+ const IDocHostContainerVtbl *container_vtbl;
+
HWND hwnd;
HWND frame_hwnd;
void WebBrowser_OleObject_Destroy(WebBrowser*);
-void DocHost_Init(DocHost*,IDispatch*);
+void DocHost_Init(DocHost*,IDispatch*,const IDocHostContainerVtbl*);
void DocHost_ClientSite_Init(DocHost*);
void DocHost_Frame_Init(DocHost*);
void release_dochost_client(DocHost*);
WebBrowser_IServiceProvider_QueryService
};
+static void WINAPI DocHostContainer_GetDocObjRect(DocHost* This, RECT* rc)
+{
+ GetClientRect(This->frame_hwnd, rc);
+}
+
+static HRESULT WINAPI DocHostContainer_SetStatusText(DocHost* This, LPCWSTR text)
+{
+ return E_NOTIMPL;
+}
+
+static void WINAPI DocHostContainer_SetURL(DocHost* This, LPCWSTR url)
+{
+
+}
+
+static const IDocHostContainerVtbl DocHostContainerVtbl = {
+ DocHostContainer_GetDocObjRect,
+ DocHostContainer_SetStatusText,
+ DocHostContainer_SetURL
+};
+
static HRESULT WebBrowser_Create(INT version, IUnknown *pOuter, REFIID riid, void **ppv)
{
WebBrowser *ret;
ret->ref = 1;
ret->version = version;
- DocHost_Init(&ret->doc_host, (IDispatch*)WEBBROWSER2(ret));
+ DocHost_Init(&ret->doc_host, (IDispatch*)WEBBROWSER2(ret), &DocHostContainerVtbl);
ret->visible = VARIANT_TRUE;
ret->menu_bar = VARIANT_TRUE;