HRESULT InternetExplorer_Create(IUnknown *pOuter, REFIID riid, void **ppv) { InternetExplorer *ret; HRESULT hres; TRACE("(%p %s %p)\n", pOuter, debugstr_guid(riid), ppv); ret = heap_alloc(sizeof(InternetExplorer)); ret->ref = 0; ret->doc_host.disp = (IDispatch*)WEBBROWSER2(ret); DocHost_Init(&ret->doc_host, (IDispatch*)WEBBROWSER2(ret)); InternetExplorer_WebBrowser_Init(ret); create_frame_hwnd(ret); ret->doc_host.frame_hwnd = ret->frame_hwnd; hres = IWebBrowser2_QueryInterface(WEBBROWSER2(ret), riid, ppv); if(FAILED(hres)) { heap_free(ret); return hres; } return hres; }
static HRESULT WebBrowser_Create(INT version, IUnknown *pOuter, REFIID riid, void **ppv) { WebBrowser *ret; HRESULT hres; TRACE("(%p %s %p) version=%d\n", pOuter, debugstr_guid(riid), ppv, version); ret = heap_alloc_zero(sizeof(WebBrowser)); ret->lpWebBrowser2Vtbl = &WebBrowser2Vtbl; ret->lpServiceProviderVtbl = &ServiceProviderVtbl; ret->ref = 1; ret->version = version; DocHost_Init(&ret->doc_host, (IDispatch*)WEBBROWSER2(ret)); ret->visible = VARIANT_TRUE; ret->menu_bar = VARIANT_TRUE; ret->address_bar = VARIANT_TRUE; ret->status_bar = VARIANT_TRUE; ret->tool_bar = VARIANT_TRUE; WebBrowser_OleObject_Init(ret); WebBrowser_ViewObject_Init(ret); WebBrowser_Persist_Init(ret); WebBrowser_ClassInfo_Init(ret); WebBrowser_HlinkFrame_Init(ret); SHDOCVW_LockModule(); hres = IWebBrowser_QueryInterface(WEBBROWSER(ret), riid, ppv); IWebBrowser2_Release(WEBBROWSER(ret)); return hres; }
static HRESULT on_silent_change(WebBrowser *This) { VARIANT silent; get_client_disp_property(This->client, DISPID_AMBIENT_SILENT, &silent); if(V_VT(&silent) == VT_BOOL) IWebBrowser2_put_Silent(WEBBROWSER2(This), V_BOOL(&silent)); else if(V_VT(&silent) != VT_EMPTY) WARN("wrong V_VT(silent) %d\n", V_VT(&silent)); return S_OK; }
static HRESULT on_offlineconnected_change(WebBrowser *This) { VARIANT offline; get_client_disp_property(This->client, DISPID_AMBIENT_OFFLINEIFNOTCONNECTED, &offline); if(V_VT(&offline) == VT_BOOL) IWebBrowser2_put_Offline(WEBBROWSER2(This), V_BOOL(&offline)); else if(V_VT(&offline) != VT_EMPTY) WARN("wrong V_VT(silent) %d\n", V_VT(&offline)); return S_OK; }
static HRESULT WINAPI WebBrowser_get_Application(IWebBrowser2 *iface, IDispatch **ppDisp) { WebBrowser *This = WEBBROWSER_THIS(iface); TRACE("(%p)->(%p)\n", This, ppDisp); if(!ppDisp) return E_POINTER; *ppDisp = (IDispatch*)WEBBROWSER2(This); IDispatch_AddRef(*ppDisp); return S_OK; }
static HRESULT WINAPI WebBrowser_Invoke(IWebBrowser2 *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExepInfo, UINT *puArgErr) { WebBrowser *This = WEBBROWSER_THIS(iface); ITypeInfo *typeinfo; HRESULT hres; TRACE("(%p)->(%d %s %d %08x %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid), lcid, wFlags, pDispParams, pVarResult, pExepInfo, puArgErr); hres = get_typeinfo(&typeinfo); if(FAILED(hres)) return hres; return ITypeInfo_Invoke(typeinfo, WEBBROWSER2(This), dispIdMember, wFlags, pDispParams, pVarResult, pExepInfo, puArgErr); }
static ULONG WINAPI HlinkFrame_Release(IHlinkFrame *iface) { WebBrowser *This = HLINKFRAME_THIS(iface); return IWebBrowser2_Release(WEBBROWSER2(This)); }
static HRESULT WINAPI HlinkFrame_QueryInterface(IHlinkFrame *iface, REFIID riid, void **ppv) { WebBrowser *This = HLINKFRAME_THIS(iface); return IWebBrowser2_QueryInterface(WEBBROWSER2(This), riid, ppv); }
static ULONG WINAPI InPlaceActiveObject_Release(IOleInPlaceActiveObject *iface) { WebBrowser *This = ACTIVEOBJ_THIS(iface); return IWebBrowser2_Release(WEBBROWSER2(This)); }
static HRESULT WINAPI InPlaceActiveObject_QueryInterface(IOleInPlaceActiveObject *iface, REFIID riid, void **ppv) { WebBrowser *This = ACTIVEOBJ_THIS(iface); return IWebBrowser2_QueryInterface(WEBBROWSER2(This), riid, ppv); }