static HRESULT HTMLSelectElement_invoke(HTMLDOMNode *iface, DISPID id, LCID lcid, WORD flags, DISPPARAMS *params, VARIANT *res, EXCEPINFO *ei, IServiceProvider *caller) { HTMLSelectElement *This = impl_from_HTMLDOMNode(iface); TRACE("(%p)->(%x %x %x %p %p %p %p)\n", This, id, lcid, flags, params, res, ei, caller); switch(flags) { case DISPATCH_PROPERTYGET: { IDispatch *ret; HRESULT hres; hres = htmlselect_item(This, id-DISPID_OPTIONCOL_0, &ret); if(FAILED(hres)) return hres; if(ret) { V_VT(res) = VT_DISPATCH; V_DISPATCH(res) = ret; }else { V_VT(res) = VT_NULL; } break; } default: FIXME("unimplemented flags %x\n", flags); return E_NOTIMPL; } return S_OK; }
static HRESULT WINAPI HTMLSelectElement_item(IHTMLSelectElement *iface, VARIANT name, VARIANT index, IDispatch **pdisp) { HTMLSelectElement *This = impl_from_IHTMLSelectElement(iface); TRACE("(%p)->(%s %s %p)\n", This, debugstr_variant(&name), debugstr_variant(&index), pdisp); if(!pdisp) return E_POINTER; *pdisp = NULL; if(V_VT(&name) == VT_I4) { if(V_I4(&name) < 0) return E_INVALIDARG; return htmlselect_item(This, V_I4(&name), pdisp); } FIXME("Unsupported args\n"); return E_NOTIMPL; }