diff --git a/dlls/packager/packager_main.c b/dlls/packager/packager_main.c index 942ae7208e4..02e691c7d06 100644 --- a/dlls/packager/packager_main.c +++ b/dlls/packager/packager_main.c @@ -256,8 +256,15 @@ static HRESULT WINAPI OleObject_EnumAdvise(IOleObject *iface, IEnumSTATDATA **pp static HRESULT WINAPI OleObject_GetMiscStatus(IOleObject *iface, DWORD dwAspect, DWORD *pdwStatus) { struct Package *This = impl_from_IOleObject(iface); - FIXME("(%p)->(%d, %p)\n", This, dwAspect, pdwStatus); - return E_NOTIMPL; + + TRACE("(%p)->(%d, %p)\n", This, dwAspect, pdwStatus); + + if(!pdwStatus) + return E_INVALIDARG; + + *pdwStatus = OLEMISC_ONLYICONIC; + + return S_OK; } static HRESULT WINAPI OleObject_SetColorScheme(IOleObject *iface, LOGPALETTE *pLogpal) diff --git a/dlls/packager/tests/oleobj.c b/dlls/packager/tests/oleobj.c index 912dda97742..6170e671019 100644 --- a/dlls/packager/tests/oleobj.c +++ b/dlls/packager/tests/oleobj.c @@ -410,7 +410,7 @@ static void test_packager(void) { IOleObject *oleobj; IPersistStorage *persist; - DWORD len, bytes_read; + DWORD len, bytes_read, status; HRESULT hr; HANDLE file; WCHAR filename[MAX_PATH]; @@ -441,6 +441,15 @@ static void test_packager(void) hr = IOleObject_SetClientSite(oleobj, &clientsite); ok(hr == S_OK, "SetClientSite failed: %08x\n", hr); + hr = IOleObject_GetMiscStatus(oleobj, DVASPECT_CONTENT, NULL); + ok(hr == E_INVALIDARG, "GetMiscStatus failed: %08x\n", hr); + + hr = IOleObject_GetMiscStatus(oleobj, DVASPECT_CONTENT, &status); + ok(hr == S_OK, "GetMiscStatus failed: %08x\n", hr); + ok(status == OLEMISC_ONLYICONIC || + status == OLEMISC_CANTLINKINSIDE /* winxp */, + "Got wrong DVASPECT_CONTENT status: 0x%x\n", status); + hr = IOleObject_QueryInterface(oleobj, &IID_IPersistStorage, (void**)&persist); ok(hr == S_OK, "QueryInterface(IPersistStorage) failed: %08x\n", hr);