Jacek Caban : vbscript: Added ScriptDisp::GetIDsOfNames implementation.
Alexandre Julliard
julliard at winehq.org
Tue Sep 18 14:04:29 CDT 2012
Module: wine
Branch: master
Commit: ba611c0d3a4f091da0028d16a047fc7295510355
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ba611c0d3a4f091da0028d16a047fc7295510355
Author: Jacek Caban <jacek at 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,
More information about the wine-cvs
mailing list