ieframe: Use IOleObject::DoVerb if IHlink interface is not available.

This commit is contained in:
Jacek Caban 2013-05-22 16:08:40 +02:00 committed by Alexandre Julliard
parent 15aa8daf64
commit 14ad0a1a84
1 changed files with 22 additions and 8 deletions

View File

@ -121,15 +121,29 @@ static void object_available(DocHost *This)
}
hres = IUnknown_QueryInterface(This->document, &IID_IHlinkTarget, (void**)&hlink);
if(FAILED(hres)) {
FIXME("Could not get IHlinkTarget interface\n");
return;
}
if(SUCCEEDED(hres)) {
hres = IHlinkTarget_Navigate(hlink, 0, NULL);
IHlinkTarget_Release(hlink);
if(FAILED(hres))
FIXME("Navigate failed\n");
}else {
IOleObject *ole_object;
RECT rect;
hres = IHlinkTarget_Navigate(hlink, 0, NULL);
IHlinkTarget_Release(hlink);
if(FAILED(hres))
FIXME("Navigate failed\n");
TRACE("No IHlink iface\n");
hres = IUnknown_QueryInterface(This->document, &IID_IOleObject, (void**)&ole_object);
if(FAILED(hres)) {
FIXME("Could not get IOleObject iface: %08x\n", hres);
return;
}
GetClientRect(This->hwnd, &rect);
hres = IOleObject_DoVerb(ole_object, OLEIVERB_SHOW, NULL, &This->IOleClientSite_iface, -1, This->hwnd, &rect);
IOleObject_Release(ole_object);
if(FAILED(hres))
FIXME("DoVerb failed: %08x\n", hres);
}
}
static HRESULT get_doc_ready_state(DocHost *This, READYSTATE *ret)