Module: wine Branch: master Commit: ba611c0d3a4f091da0028d16a047fc7295510355 URL: http://source.winehq.org/git/wine.git/?a=commit;h=ba611c0d3a4f091da0028d16a0...
Author: Jacek Caban jacek@codeweavers.com Date: Tue Sep 18 12:26:03 2012 +0200
vbscript: Added ScriptDisp::GetIDsOfNames implementation.
---
dlls/vbscript/tests/vbscript.c | 7 ++++++- dlls/vbscript/vbdisp.c | 17 +++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-)
diff --git a/dlls/vbscript/tests/vbscript.c b/dlls/vbscript/tests/vbscript.c index 27153f8..3dd64dd 100644 --- a/dlls/vbscript/tests/vbscript.c +++ b/dlls/vbscript/tests/vbscript.c @@ -350,13 +350,18 @@ static void parse_script(IActiveScriptParse *parse, const char *src) #define get_disp_id(a,b,c,d) _get_disp_id(__LINE__,a,b,c,d) static void _get_disp_id(unsigned line, IDispatchEx *dispex, const char *name, HRESULT exhres, DISPID *id) { + DISPID id2; BSTR str; HRESULT hres;
str = a2bstr(name); hres = IDispatchEx_GetDispID(dispex, str, 0, id); - SysFreeString(str); ok_(__FILE__,line)(hres == exhres, "GetDispID(%s) returned %08x, expected %08x\n", name, hres, exhres); + + hres = IDispatchEx_GetIDsOfNames(dispex, &IID_NULL, &str, 1, 0, &id2); + SysFreeString(str); + ok_(__FILE__,line)(hres == exhres, "GetIDsOfNames(%s) returned %08x, expected %08x\n", name, hres, exhres); + ok_(__FILE__,line)(*id == id2, "GetIDsOfNames(%s) id != id2\n", name); }
static void test_no_script_dispatch(IActiveScript *script) diff --git a/dlls/vbscript/vbdisp.c b/dlls/vbscript/vbdisp.c index 1b2b8fe..8b0e4f2 100644 --- a/dlls/vbscript/vbdisp.c +++ b/dlls/vbscript/vbdisp.c @@ -682,13 +682,22 @@ static HRESULT WINAPI ScriptDisp_GetTypeInfo(IDispatchEx *iface, UINT iTInfo, LC }
static HRESULT WINAPI ScriptDisp_GetIDsOfNames(IDispatchEx *iface, REFIID riid, - LPOLESTR *rgszNames, UINT cNames, LCID lcid, - DISPID *rgDispId) + LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId) { ScriptDisp *This = ScriptDisp_from_IDispatchEx(iface); - FIXME("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames, + UINT i; + HRESULT hres; + + TRACE("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId); - return E_NOTIMPL; + + for(i=0; i < cNames; i++) { + hres = IDispatchEx_GetDispID(&This->IDispatchEx_iface, rgszNames[i], 0, rgDispId+i); + if(FAILED(hres)) + return hres; + } + + return S_OK; }
static HRESULT WINAPI ScriptDisp_Invoke(IDispatchEx *iface, DISPID dispIdMember,