mirror of
https://github.com/reactos/wine.git
synced 2025-02-03 18:53:17 +00:00
oleaut32: Implement getting of all properties in IPictureDisp::Invoke.
This commit is contained in:
parent
9985f50389
commit
e0e7d96ee6
@ -2065,6 +2065,11 @@ static HRESULT WINAPI OLEPictureImpl_Invoke(
|
|||||||
|
|
||||||
if (wFlags & DISPATCH_PROPERTYGET)
|
if (wFlags & DISPATCH_PROPERTYGET)
|
||||||
{
|
{
|
||||||
|
if (pDispParams->cArgs != 0)
|
||||||
|
{
|
||||||
|
ERR("param count for DISPATCH_PROPERTYGET was %d instead of 0\n", pDispParams->cArgs);
|
||||||
|
return DISP_E_BADPARAMCOUNT;
|
||||||
|
}
|
||||||
if (!pVarResult)
|
if (!pVarResult)
|
||||||
{
|
{
|
||||||
ERR("null pVarResult not allowed when DISPATCH_PROPERTYGET specified\n");
|
ERR("null pVarResult not allowed when DISPATCH_PROPERTYGET specified\n");
|
||||||
@ -2085,30 +2090,52 @@ static HRESULT WINAPI OLEPictureImpl_Invoke(
|
|||||||
return DISP_E_MEMBERNOTFOUND;
|
return DISP_E_MEMBERNOTFOUND;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dispIdMember == DISPID_PICT_TYPE)
|
switch (dispIdMember)
|
||||||
{
|
{
|
||||||
TRACE("DISPID_PICT_TYPE\n");
|
case DISPID_PICT_HANDLE:
|
||||||
if (!(wFlags & INVOKE_PROPERTYGET))
|
if (wFlags & DISPATCH_PROPERTYGET)
|
||||||
return DISP_E_PARAMNOTFOUND;
|
|
||||||
if (pDispParams->cArgs != 0)
|
|
||||||
return DISP_E_BADPARAMCOUNT;
|
|
||||||
if (pVarResult)
|
|
||||||
{
|
{
|
||||||
VariantInit(pVarResult);
|
TRACE("DISPID_PICT_HANDLE\n");
|
||||||
V_VT(pVarResult) = VT_I2;
|
V_VT(pVarResult) = VT_I4;
|
||||||
return OLEPictureImpl_get_Type((IPicture *)&This->lpVtbl, &V_I2(pVarResult));
|
return IPicture_get_Handle((IPicture *)&This->lpVtbl, &V_UINT(pVarResult));
|
||||||
}
|
}
|
||||||
return S_OK;
|
break;
|
||||||
|
case DISPID_PICT_HPAL:
|
||||||
|
if (wFlags & DISPATCH_PROPERTYGET)
|
||||||
|
{
|
||||||
|
TRACE("DISPID_PICT_HPAL\n");
|
||||||
|
V_VT(pVarResult) = VT_I4;
|
||||||
|
return IPicture_get_hPal((IPicture *)&This->lpVtbl, &V_UINT(pVarResult));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DISPID_PICT_TYPE:
|
||||||
|
if (wFlags & DISPATCH_PROPERTYGET)
|
||||||
|
{
|
||||||
|
TRACE("DISPID_PICT_TYPE\n");
|
||||||
|
V_VT(pVarResult) = VT_I2;
|
||||||
|
return OLEPictureImpl_get_Type((IPicture *)&This->lpVtbl, &V_I2(pVarResult));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DISPID_PICT_WIDTH:
|
||||||
|
if (wFlags & DISPATCH_PROPERTYGET)
|
||||||
|
{
|
||||||
|
TRACE("DISPID_PICT_WIDTH\n");
|
||||||
|
V_VT(pVarResult) = VT_I4;
|
||||||
|
return IPicture_get_Width((IPicture *)&This->lpVtbl, &V_I4(pVarResult));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DISPID_PICT_HEIGHT:
|
||||||
|
if (wFlags & DISPATCH_PROPERTYGET)
|
||||||
|
{
|
||||||
|
TRACE("DISPID_PICT_HEIGHT\n");
|
||||||
|
V_VT(pVarResult) = VT_I4;
|
||||||
|
return IPicture_get_Height((IPicture *)&This->lpVtbl, &V_I4(pVarResult));
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
FIXME("(dispid: %ld):Stub\n",dispIdMember);
|
|
||||||
|
|
||||||
VariantInit(pVarResult);
|
ERR("invalid dispid 0x%lx or wFlags 0x%x\n", dispIdMember, wFlags);
|
||||||
V_VT(pVarResult) = VT_BOOL;
|
return DISP_E_MEMBERNOTFOUND;
|
||||||
V_BOOL(pVarResult) = FALSE;
|
|
||||||
return S_OK;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -337,14 +337,23 @@ static void test_Invoke(void)
|
|||||||
|
|
||||||
hr = IPictureDisp_Invoke(picdisp, DISPID_PICT_HPAL, &IID_NULL, 0, DISPATCH_PROPERTYGET, &dispparams, &varresult, NULL, NULL);
|
hr = IPictureDisp_Invoke(picdisp, DISPID_PICT_HPAL, &IID_NULL, 0, DISPATCH_PROPERTYGET, &dispparams, &varresult, NULL, NULL);
|
||||||
ok_ole_success(hr, "IPictureDisp_Invoke");
|
ok_ole_success(hr, "IPictureDisp_Invoke");
|
||||||
|
ok(V_VT(&varresult) == VT_I4, "V_VT(&varresult) should have been VT_UINT instead of %d\n", V_VT(&varresult));
|
||||||
|
|
||||||
hr = IPictureDisp_Invoke(picdisp, DISPID_PICT_HPAL, &IID_NULL, 0, DISPATCH_METHOD, &dispparams, &varresult, NULL, NULL);
|
hr = IPictureDisp_Invoke(picdisp, DISPID_PICT_HPAL, &IID_NULL, 0, DISPATCH_METHOD, &dispparams, &varresult, NULL, NULL);
|
||||||
ok(hr == DISP_E_MEMBERNOTFOUND, "IPictureDisp_Invoke should have returned DISP_E_MEMBERNOTFOUND instead of 0x%08lx\n", hr);
|
ok(hr == DISP_E_MEMBERNOTFOUND, "IPictureDisp_Invoke should have returned DISP_E_MEMBERNOTFOUND instead of 0x%08lx\n", hr);
|
||||||
|
|
||||||
hr = IPictureDisp_Invoke(picdisp, 0xdeadbeef, &IID_NULL, 0, DISPATCH_PROPERTYGET, &dispparams, &varresult, NULL, NULL);
|
hr = IPictureDisp_Invoke(picdisp, 0xdeadbeef, &IID_NULL, 0, DISPATCH_PROPERTYGET, &dispparams, &varresult, NULL, NULL);
|
||||||
todo_wine {
|
|
||||||
ok(hr == DISP_E_MEMBERNOTFOUND, "IPictureDisp_Invoke should have returned DISP_E_MEMBERNOTFOUND instead of 0x%08lx\n", hr);
|
ok(hr == DISP_E_MEMBERNOTFOUND, "IPictureDisp_Invoke should have returned DISP_E_MEMBERNOTFOUND instead of 0x%08lx\n", hr);
|
||||||
}
|
|
||||||
|
dispparams.cArgs = 1;
|
||||||
|
dispparams.rgvarg = &vararg;
|
||||||
|
hr = IPictureDisp_Invoke(picdisp, DISPID_PICT_HPAL, &IID_NULL, 0, DISPATCH_PROPERTYGET, &dispparams, &varresult, NULL, NULL);
|
||||||
|
ok(hr == DISP_E_BADPARAMCOUNT, "IPictureDisp_Invoke should have returned DISP_E_BADPARAMCOUNT instead of 0x%08lx\n", hr);
|
||||||
|
|
||||||
|
dispparams.cArgs = 1;
|
||||||
|
dispparams.rgvarg = &vararg;
|
||||||
|
hr = IPictureDisp_Invoke(picdisp, DISPID_PICT_HPAL, &IID_NULL, 0, DISPATCH_PROPERTYGET, &dispparams, &varresult, NULL, NULL);
|
||||||
|
ok(hr == DISP_E_BADPARAMCOUNT, "IPictureDisp_Invoke should have returned DISP_E_BADPARAMCOUNT instead of 0x%08lx\n", hr);
|
||||||
|
|
||||||
IPictureDisp_Release(picdisp);
|
IPictureDisp_Release(picdisp);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user