Commit bc6f1b0c authored by Jon Griffiths's avatar Jon Griffiths Committed by Alexandre Julliard

oleaut32: Implement ICreateTypeLib2::SetHelpStringContext/SetHelpStringDll.

parent 85d19193
...@@ -152,6 +152,7 @@ typedef struct tagICreateTypeLib2Impl ...@@ -152,6 +152,7 @@ typedef struct tagICreateTypeLib2Impl
WCHAR *filename; WCHAR *filename;
MSFT_Header typelib_header; MSFT_Header typelib_header;
INT helpStringDll;
MSFT_pSeg typelib_segdir[MSFT_SEG_MAX]; MSFT_pSeg typelib_segdir[MSFT_SEG_MAX];
char *typelib_segment_data[MSFT_SEG_MAX]; char *typelib_segment_data[MSFT_SEG_MAX];
int typelib_segment_block_length[MSFT_SEG_MAX]; int typelib_segment_block_length[MSFT_SEG_MAX];
...@@ -231,6 +232,7 @@ static void ctl2_init_header( ...@@ -231,6 +232,7 @@ static void ctl2_init_header(
This->typelib_header.res48 = 0x80; This->typelib_header.res48 = 0x80;
This->typelib_header.dispatchpos = -1; This->typelib_header.dispatchpos = -1;
This->typelib_header.nimpinfos = 0; This->typelib_header.nimpinfos = 0;
This->helpStringDll = -1;
} }
/**************************************************************************** /****************************************************************************
...@@ -3331,6 +3333,8 @@ static HRESULT WINAPI ICreateTypeLib2_fnSaveAllChanges(ICreateTypeLib2 * iface) ...@@ -3331,6 +3333,8 @@ static HRESULT WINAPI ICreateTypeLib2_fnSaveAllChanges(ICreateTypeLib2 * iface)
ctl2_finalize_typeinfos(This, filepos); ctl2_finalize_typeinfos(This, filepos);
if (!ctl2_write_chunk(hFile, &This->typelib_header, sizeof(This->typelib_header))) return retval; if (!ctl2_write_chunk(hFile, &This->typelib_header, sizeof(This->typelib_header))) return retval;
if (This->typelib_header.varflags & HELPDLLFLAG)
if (!ctl2_write_chunk(hFile, &This->helpStringDll, sizeof(This->helpStringDll))) return retval;
if (!ctl2_write_chunk(hFile, This->typelib_typeinfo_offsets, This->typelib_header.nrtypeinfos * 4)) return retval; if (!ctl2_write_chunk(hFile, This->typelib_typeinfo_offsets, This->typelib_header.nrtypeinfos * 4)) return retval;
if (!ctl2_write_chunk(hFile, &This->typelib_segdir, sizeof(This->typelib_segdir))) return retval; if (!ctl2_write_chunk(hFile, &This->typelib_segdir, sizeof(This->typelib_segdir))) return retval;
if (!ctl2_write_segment(This, hFile, MSFT_SEG_TYPEINFO )) return retval; if (!ctl2_write_segment(This, hFile, MSFT_SEG_TYPEINFO )) return retval;
...@@ -3401,35 +3405,56 @@ static HRESULT WINAPI ICreateTypeLib2_fnSetCustData( ...@@ -3401,35 +3405,56 @@ static HRESULT WINAPI ICreateTypeLib2_fnSetCustData(
* *
* Sets a context number for the library help string. * Sets a context number for the library help string.
* *
* RETURNS * PARAMS
* iface [I] The type library to set the help string context for.
* dwContext [I] The help string context.
* *
* RETURNS
* Success: S_OK * Success: S_OK
* Failure: E_OUTOFMEMORY or E_INVALIDARG. * Failure: E_OUTOFMEMORY or E_INVALIDARG.
*/ */
static HRESULT WINAPI ICreateTypeLib2_fnSetHelpStringContext( static
ICreateTypeLib2 * iface, /* [I] The type library to set the help string context for. */ HRESULT WINAPI ICreateTypeLib2_fnSetHelpStringContext(ICreateTypeLib2 * iface,
ULONG dwHelpStringContext) /* [I] The help string context. */ ULONG dwContext)
{ {
FIXME("(%p,%d), stub!\n", iface, dwHelpStringContext); ICreateTypeLib2Impl *This = (ICreateTypeLib2Impl *)iface;
return E_OUTOFMEMORY;
TRACE("(%p,%d)\n", iface, dwContext);
This->typelib_header.helpstringcontext = dwContext;
return S_OK;
} }
/****************************************************************************** /******************************************************************************
* ICreateTypeLib2_SetHelpStringDll {OLEAUT32} * ICreateTypeLib2_SetHelpStringDll {OLEAUT32}
* *
* Sets the DLL used to look up localized help strings. * Set the DLL used to look up localized help strings.
* *
* RETURNS * PARAMS
* iface [I] The type library to set the help DLL for.
* szDllName [I] The name of the help DLL.
* *
* RETURNS
* Success: S_OK * Success: S_OK
* Failure: E_OUTOFMEMORY or E_INVALIDARG. * Failure: E_OUTOFMEMORY or E_INVALIDARG.
*/ */
static HRESULT WINAPI ICreateTypeLib2_fnSetHelpStringDll( static
ICreateTypeLib2 * iface, /* [I] The type library to set the help DLL for. */ HRESULT WINAPI ICreateTypeLib2_fnSetHelpStringDll(ICreateTypeLib2 * iface,
LPOLESTR szFileName) /* [I] The name of the help DLL. */ LPOLESTR szDllName)
{ {
FIXME("(%p,%s), stub!\n", iface, debugstr_w(szFileName)); ICreateTypeLib2Impl *This = (ICreateTypeLib2Impl *)iface;
return E_OUTOFMEMORY; int offset;
TRACE("(%p,%s)\n", iface, debugstr_w(szDllName));
if (!szDllName)
return E_INVALIDARG;
offset = ctl2_alloc_string(This, szDllName);
if (offset == -1)
return E_OUTOFMEMORY;
This->typelib_header.varflags |= HELPDLLFLAG;
This->helpStringDll = offset;
return S_OK;
} }
/*================== ITypeLib2 Implementation ===================================*/ /*================== ITypeLib2 Implementation ===================================*/
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment