Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com ---
The DocString is not localized because it's not part of the DLL's resources in Windows, either.
dlls/vbscript/vbdisp.c | 45 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-)
diff --git a/dlls/vbscript/vbdisp.c b/dlls/vbscript/vbdisp.c index 242010d..5044115 100644 --- a/dlls/vbscript/vbdisp.c +++ b/dlls/vbscript/vbdisp.c @@ -899,10 +899,51 @@ static HRESULT WINAPI ScriptTypeInfo_GetDocumentation(ITypeInfo *iface, MEMBERID BSTR *pBstrDocString, DWORD *pdwHelpContext, BSTR *pBstrHelpFile) { ScriptTypeInfo *This = ScriptTypeInfo_from_ITypeInfo(iface); + enum memid_type memid_type = get_memid_type(This, memid); + ITypeInfo *disp_typeinfo; + HRESULT hr;
- FIXME("(%p)->(%d %p %p %p %p)\n", This, memid, pBstrName, pBstrDocString, pdwHelpContext, pBstrHelpFile); + TRACE("(%p)->(%d %p %p %p %p)\n", This, memid, pBstrName, pBstrDocString, pdwHelpContext, pBstrHelpFile);
- return E_NOTIMPL; + if (pBstrDocString) *pBstrDocString = NULL; + if (pdwHelpContext) *pdwHelpContext = 0; + if (pBstrHelpFile) *pBstrHelpFile = NULL; + + if (memid == MEMBERID_NIL) + { + if (pBstrName && !(*pBstrName = SysAllocString(L"VBScriptTypeInfo"))) + return STG_E_INSUFFICIENTMEMORY; + if (pBstrDocString && + !(*pBstrDocString = SysAllocString(L"Visual Basic Scripting Type Info"))) + { + if (pBstrName) SysFreeString(*pBstrName); + return STG_E_INSUFFICIENTMEMORY; + } + return S_OK; + } + if (memid_type == memid_invalid) return TYPE_E_ELEMENTNOTFOUND; + if (memid_type == memid_inherited) + { + hr = get_dispatch_typeinfo(&disp_typeinfo); + if (FAILED(hr)) return hr; + + return ITypeInfo_GetDocumentation(disp_typeinfo, memid, pBstrName, pBstrDocString, + pdwHelpContext, pBstrHelpFile); + } + + if (pBstrName) + { + const WCHAR *name; + + if (memid_type == memid_func) + name = This->funcs[This->func_memid_map[memid & ~DISPID_FUNCTION_MASK]].func->name; + else + name = This->disp->global_vars[memid - 1]->name; + + *pBstrName = SysAllocString(name); + if (!*pBstrName) return STG_E_INSUFFICIENTMEMORY; + } + return S_OK; }
static HRESULT WINAPI ScriptTypeInfo_GetDllEntry(ITypeInfo *iface, MEMBERID memid, INVOKEKIND invKind,