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