Implemented DispGetParam.
This commit is contained in:
parent
ed2aa7acdb
commit
aacac86ada
@ -121,12 +121,26 @@ HRESULT WINAPI DispGetParam(
|
|||||||
VARIANT *pvarResult, /* [out] */
|
VARIANT *pvarResult, /* [out] */
|
||||||
UINT *puArgErr) /* [out] */
|
UINT *puArgErr) /* [out] */
|
||||||
{
|
{
|
||||||
HRESULT hr = E_FAIL;
|
/* position is counted backwards */
|
||||||
|
UINT pos;
|
||||||
|
HRESULT hr;
|
||||||
|
|
||||||
/**
|
TRACE("position=%d, cArgs=%d, cNamedArgs=%d\n",
|
||||||
* TODO : Call VariantChangeTypeEx with LCID 0 (system)
|
position, pdispparams->cArgs, pdispparams->cNamedArgs);
|
||||||
*/
|
if (position < pdispparams->cArgs) {
|
||||||
|
/* positional arg? */
|
||||||
|
pos = pdispparams->cArgs - position - 1;
|
||||||
|
} else {
|
||||||
|
/* FIXME: is this how to handle named args? */
|
||||||
|
for (pos=0; pos<pdispparams->cNamedArgs; pos++)
|
||||||
|
if (pdispparams->rgdispidNamedArgs[pos] == position) break;
|
||||||
|
|
||||||
FIXME("Coercion of arguments not implemented\n");
|
if (pos==pdispparams->cNamedArgs)
|
||||||
return (hr);
|
return DISP_E_PARAMNOTFOUND;
|
||||||
|
}
|
||||||
|
hr = VariantChangeType(pvarResult,
|
||||||
|
&pdispparams->rgvarg[pos],
|
||||||
|
0, vtTarg);
|
||||||
|
if (hr == DISP_E_TYPEMISMATCH) *puArgErr = pos;
|
||||||
|
return hr;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user