scrobj: Add GetDispID implementation.
Signed-off-by: Jacek Caban <jacek@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
b3b78b4226
commit
dd2fcd6afa
|
@ -1046,8 +1046,26 @@ static HRESULT WINAPI scriptlet_Invoke(IDispatchEx *iface, DISPID dispIdMember,
|
||||||
static HRESULT WINAPI scriptlet_GetDispID(IDispatchEx *iface, BSTR bstrName, DWORD grfdex, DISPID *pid)
|
static HRESULT WINAPI scriptlet_GetDispID(IDispatchEx *iface, BSTR bstrName, DWORD grfdex, DISPID *pid)
|
||||||
{
|
{
|
||||||
struct scriptlet_instance *This = impl_from_IDispatchEx(iface);
|
struct scriptlet_instance *This = impl_from_IDispatchEx(iface);
|
||||||
FIXME("(%p)->(%s %x %p)\n", This, debugstr_w(bstrName), grfdex, pid);
|
unsigned i;
|
||||||
return E_NOTIMPL;
|
|
||||||
|
TRACE("(%p)->(%s %x %p)\n", This, debugstr_w(bstrName), grfdex, pid);
|
||||||
|
|
||||||
|
if (grfdex & ~(fdexNameCaseInsensitive|fdexNameCaseSensitive))
|
||||||
|
FIXME("Unsupported grfdex %x\n", grfdex);
|
||||||
|
|
||||||
|
for (i = 0; i < This->member_cnt; i++)
|
||||||
|
{
|
||||||
|
if (grfdex & fdexNameCaseInsensitive)
|
||||||
|
{
|
||||||
|
if (wcsicmp(This->members[i].name, bstrName)) continue;
|
||||||
|
}
|
||||||
|
else if (wcscmp(This->members[i].name, bstrName)) continue;
|
||||||
|
*pid = i + 1;
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
WARN("Unknown property %s\n", debugstr_w(bstrName));
|
||||||
|
return DISP_E_UNKNOWNNAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI scriptlet_InvokeEx(IDispatchEx *iface, DISPID id, LCID lcid, WORD flags, DISPPARAMS *pdp,
|
static HRESULT WINAPI scriptlet_InvokeEx(IDispatchEx *iface, DISPID id, LCID lcid, WORD flags, DISPPARAMS *pdp,
|
||||||
|
|
|
@ -848,45 +848,37 @@ static void test_create_object(void)
|
||||||
|
|
||||||
str = SysAllocString(L"vbAddOne");
|
str = SysAllocString(L"vbAddOne");
|
||||||
hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseSensitive, &vb_add_one_id);
|
hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseSensitive, &vb_add_one_id);
|
||||||
todo_wine
|
|
||||||
ok(hres == S_OK, "Could not get vkAddOne id: %08x\n", hres);
|
ok(hres == S_OK, "Could not get vkAddOne id: %08x\n", hres);
|
||||||
SysFreeString(str);
|
SysFreeString(str);
|
||||||
|
|
||||||
str = SysAllocString(L"jsAddTwo");
|
str = SysAllocString(L"jsAddTwo");
|
||||||
hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseSensitive, &js_add_two_id);
|
hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseSensitive, &js_add_two_id);
|
||||||
todo_wine
|
|
||||||
ok(hres == S_OK, "Could not get jsAddTwo id: %08x\n", hres);
|
ok(hres == S_OK, "Could not get jsAddTwo id: %08x\n", hres);
|
||||||
SysFreeString(str);
|
SysFreeString(str);
|
||||||
|
|
||||||
str = SysAllocString(L"wtTest");
|
str = SysAllocString(L"wtTest");
|
||||||
hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseSensitive, &wt_test_id);
|
hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseSensitive, &wt_test_id);
|
||||||
todo_wine
|
|
||||||
ok(hres == S_OK, "Could not get wtTest id: %08x\n", hres);
|
ok(hres == S_OK, "Could not get wtTest id: %08x\n", hres);
|
||||||
SysFreeString(str);
|
SysFreeString(str);
|
||||||
|
|
||||||
str = SysAllocString(L"gsProp");
|
str = SysAllocString(L"gsProp");
|
||||||
hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseSensitive, &wt_gsprop_id);
|
hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseSensitive, &wt_gsprop_id);
|
||||||
todo_wine
|
|
||||||
ok(hres == S_OK, "Could not get wtTest id: %08x\n", hres);
|
ok(hres == S_OK, "Could not get wtTest id: %08x\n", hres);
|
||||||
SysFreeString(str);
|
SysFreeString(str);
|
||||||
|
|
||||||
str = SysAllocString(L"vbaddone");
|
str = SysAllocString(L"vbaddone");
|
||||||
hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseSensitive, &id);
|
hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseSensitive, &id);
|
||||||
todo_wine
|
|
||||||
ok(hres == DISP_E_UNKNOWNNAME, "invalid case returned: %08x\n", hres);
|
ok(hres == DISP_E_UNKNOWNNAME, "invalid case returned: %08x\n", hres);
|
||||||
SysFreeString(str);
|
SysFreeString(str);
|
||||||
|
|
||||||
str = SysAllocString(L"vbaddone");
|
str = SysAllocString(L"vbaddone");
|
||||||
hres = IDispatchEx_GetDispID(dispex, str, 0, &id);
|
hres = IDispatchEx_GetDispID(dispex, str, 0, &id);
|
||||||
todo_wine
|
|
||||||
ok(hres == DISP_E_UNKNOWNNAME, "invalid case returned: %08x\n", hres);
|
ok(hres == DISP_E_UNKNOWNNAME, "invalid case returned: %08x\n", hres);
|
||||||
SysFreeString(str);
|
SysFreeString(str);
|
||||||
|
|
||||||
str = SysAllocString(L"vbaddone");
|
str = SysAllocString(L"vbaddone");
|
||||||
hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseInsensitive, &id);
|
hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseInsensitive, &id);
|
||||||
todo_wine
|
|
||||||
ok(hres == S_OK, "case insensitive returned: %08x\n", hres);
|
ok(hres == S_OK, "case insensitive returned: %08x\n", hres);
|
||||||
todo_wine
|
|
||||||
ok(id == vb_add_one_id, "id = %u, expected %u\n", id, vb_add_one_id);
|
ok(id == vb_add_one_id, "id = %u, expected %u\n", id, vb_add_one_id);
|
||||||
SysFreeString(str);
|
SysFreeString(str);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue