From 536fac7c1b4ef7f6f124d7f3100d3284313f3018 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Tue, 7 Oct 2008 14:44:18 -0500 Subject: [PATCH] mshtml: Added IHTMLElement3 stub implementation. --- dlls/mshtml/Makefile.in | 1 + dlls/mshtml/htmlelem.c | 4 + dlls/mshtml/htmlelem3.c | 447 +++++++++++++++++++++++++++++++++++++++++++ dlls/mshtml/mshtml_private.h | 3 + dlls/mshtml/tests/dom.c | 14 ++ 5 files changed, 469 insertions(+) create mode 100644 dlls/mshtml/htmlelem3.c diff --git a/dlls/mshtml/Makefile.in b/dlls/mshtml/Makefile.in index b3b5eed807b..c7695dc68f0 100644 --- a/dlls/mshtml/Makefile.in +++ b/dlls/mshtml/Makefile.in @@ -21,6 +21,7 @@ C_SRCS = \ htmldoc5.c \ htmlelem.c \ htmlelem2.c \ + htmlelem3.c \ htmlelemcol.c \ htmlevent.c \ htmlgeneric.c \ diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c index bed5f5978e5..22423126a9c 100644 --- a/dlls/mshtml/htmlelem.c +++ b/dlls/mshtml/htmlelem.c @@ -1339,6 +1339,9 @@ HRESULT HTMLElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) }else if(IsEqualGUID(&IID_IHTMLElement2, riid)) { TRACE("(%p)->(IID_IHTMLElement2 %p)\n", This, ppv); *ppv = HTMLELEM2(This); + }else if(IsEqualGUID(&IID_IHTMLElement3, riid)) { + TRACE("(%p)->(IID_IHTMLElement3 %p)\n", This, ppv); + *ppv = HTMLELEM3(This); }else if(IsEqualGUID(&IID_IConnectionPointContainer, riid)) { TRACE("(%p)->(IID_IConnectionPointContainer %p)\n", This, ppv); *ppv = CONPTCONT(&This->cp_container); @@ -1391,6 +1394,7 @@ void HTMLElement_Init(HTMLElement *This) ConnectionPointContainer_Init(&This->cp_container, (IUnknown*)HTMLELEM(This)); HTMLElement2_Init(This); + HTMLElement3_Init(This); if(!This->node.dispex.data) init_dispex(&This->node.dispex, (IUnknown*)HTMLELEM(This), &HTMLElement_dispex); diff --git a/dlls/mshtml/htmlelem3.c b/dlls/mshtml/htmlelem3.c new file mode 100644 index 00000000000..f85b065c047 --- /dev/null +++ b/dlls/mshtml/htmlelem3.c @@ -0,0 +1,447 @@ +/* + * Copyright 2008 Jacek Caban for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include + +#define COBJMACROS + +#include "windef.h" +#include "winbase.h" +#include "winuser.h" +#include "ole2.h" + +#include "wine/debug.h" +#include "wine/unicode.h" + +#include "mshtml_private.h" + +WINE_DEFAULT_DEBUG_CHANNEL(mshtml); + +#define HTMLELEM3_THIS(iface) DEFINE_THIS(HTMLElement, HTMLElement3, iface) + +static HRESULT WINAPI HTMLElement3_QueryInterface(IHTMLElement3 *iface, + REFIID riid, void **ppv) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + return IHTMLElement_QueryInterface(HTMLELEM(This), riid, ppv); +} + +static ULONG WINAPI HTMLElement3_AddRef(IHTMLElement3 *iface) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + return IHTMLElement_AddRef(HTMLELEM(This)); +} + +static ULONG WINAPI HTMLElement3_Release(IHTMLElement3 *iface) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + return IHTMLElement_Release(HTMLELEM(This)); +} + +static HRESULT WINAPI HTMLElement3_GetTypeInfoCount(IHTMLElement3 *iface, UINT *pctinfo) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + return IDispatchEx_GetTypeInfoCount(DISPATCHEX(&This->node.dispex), pctinfo); +} + +static HRESULT WINAPI HTMLElement3_GetTypeInfo(IHTMLElement3 *iface, UINT iTInfo, + LCID lcid, ITypeInfo **ppTInfo) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + return IDispatchEx_GetTypeInfo(DISPATCHEX(&This->node.dispex), iTInfo, lcid, ppTInfo); +} + +static HRESULT WINAPI HTMLElement3_GetIDsOfNames(IHTMLElement3 *iface, REFIID riid, + LPOLESTR *rgszNames, UINT cNames, + LCID lcid, DISPID *rgDispId) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + return IDispatchEx_GetIDsOfNames(DISPATCHEX(&This->node.dispex), riid, rgszNames, cNames, lcid, rgDispId); +} + +static HRESULT WINAPI HTMLElement3_Invoke(IHTMLElement3 *iface, DISPID dispIdMember, + REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, + VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + return IDispatchEx_Invoke(DISPATCHEX(&This->node.dispex), dispIdMember, riid, lcid, + wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); +} + +static HRESULT WINAPI HTMLElement3_mergeAttributes(IHTMLElement3 *iface, IHTMLElement *mergeThis, VARIANT *pvarFlags) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%p %p)\n", This, mergeThis, pvarFlags); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_get_isMultiLine(IHTMLElement3 *iface, VARIANT_BOOL *p) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_get_canHaveHTML(IHTMLElement3 *iface, VARIANT_BOOL *p) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_put_onlayoutcomplete(IHTMLElement3 *iface, VARIANT v) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%s)\n", This, debugstr_variant(&v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_get_onlayoutcomplete(IHTMLElement3 *iface, VARIANT *p) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_put_onpage(IHTMLElement3 *iface, VARIANT v) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%s)\n", This, debugstr_variant(&v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_get_onpage(IHTMLElement3 *iface, VARIANT *p) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_put_inflateBlock(IHTMLElement3 *iface, VARIANT_BOOL v) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%x)\n", This, v); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_get_inflateBlock(IHTMLElement3 *iface, VARIANT_BOOL *p) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_put_onbeforedeactivate(IHTMLElement3 *iface, VARIANT v) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%s)\n", This, debugstr_variant(&v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_get_onbeforedeactivate(IHTMLElement3 *iface, VARIANT *p) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_setActive(IHTMLElement3 *iface) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)\n", This); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_put_contentEditable(IHTMLElement3 *iface, BSTR v) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%s)\n", This, debugstr_w(v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_get_contentEditable(IHTMLElement3 *iface, BSTR *p) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_get_isContentEditable(IHTMLElement3 *iface, VARIANT_BOOL *p) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_put_hideFocus(IHTMLElement3 *iface, VARIANT_BOOL v) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%x)\n", This, v); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_get_hideFocus(IHTMLElement3 *iface, VARIANT_BOOL *p) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_put_disabled(IHTMLElement3 *iface, VARIANT_BOOL v) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%x)\n", This, v); + return S_OK; + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_get_disabled(IHTMLElement3 *iface, VARIANT_BOOL *p) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_get_isDisabled(IHTMLElement3 *iface, VARIANT_BOOL *p) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_put_onmove(IHTMLElement3 *iface, VARIANT v) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%s)\n", This, debugstr_variant(&v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_get_onmove(IHTMLElement3 *iface, VARIANT *p) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_put_oncontrolselect(IHTMLElement3 *iface, VARIANT v) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%s)\n", This, debugstr_variant(&v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_get_oncontrolselect(IHTMLElement3 *iface, VARIANT *p) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_fireEvent(IHTMLElement3 *iface, BSTR bstrEventName, + VARIANT *pvarEventObject, VARIANT_BOOL *pfCancelled) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%s %p %p)\n", This, debugstr_w(bstrEventName), pvarEventObject, pfCancelled); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_put_onresizestart(IHTMLElement3 *iface, VARIANT v) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%s)\n", This, debugstr_variant(&v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_get_onresizestart(IHTMLElement3 *iface, VARIANT *p) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_put_onresizeend(IHTMLElement3 *iface, VARIANT v) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%s)\n", This, debugstr_variant(&v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_get_onresizeend(IHTMLElement3 *iface, VARIANT *p) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_put_onmovestart(IHTMLElement3 *iface, VARIANT v) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%s)\n", This, debugstr_variant(&v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_get_onmovestart(IHTMLElement3 *iface, VARIANT *p) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_put_onmoveend(IHTMLElement3 *iface, VARIANT v) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%s)\n", This, debugstr_variant(&v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_get_onmoveend(IHTMLElement3 *iface, VARIANT *p) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_put_onmousecenter(IHTMLElement3 *iface, VARIANT v) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%s)\n", This, debugstr_variant(&v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_get_onmousecenter(IHTMLElement3 *iface, VARIANT *p) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_put_onmouseleave(IHTMLElement3 *iface, VARIANT v) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%s)\n", This, debugstr_variant(&v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_get_onmouseleave(IHTMLElement3 *iface, VARIANT *p) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_put_onactivate(IHTMLElement3 *iface, VARIANT v) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%s)\n", This, debugstr_variant(&v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_get_onactivate(IHTMLElement3 *iface, VARIANT *p) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_put_ondeactivate(IHTMLElement3 *iface, VARIANT v) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%s)\n", This, debugstr_variant(&v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_get_ondeactivate(IHTMLElement3 *iface, VARIANT *p) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_dragDrop(IHTMLElement3 *iface, VARIANT_BOOL *pfRet) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%p)\n", This, pfRet); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLElement3_get_glyphMode(IHTMLElement3 *iface, LONG *p) +{ + HTMLElement *This = HTMLELEM3_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +#undef HTMLELEM2_THIS + +static const IHTMLElement3Vtbl HTMLElement3Vtbl = { + HTMLElement3_QueryInterface, + HTMLElement3_AddRef, + HTMLElement3_Release, + HTMLElement3_GetTypeInfoCount, + HTMLElement3_GetTypeInfo, + HTMLElement3_GetIDsOfNames, + HTMLElement3_Invoke, + HTMLElement3_mergeAttributes, + HTMLElement3_get_isMultiLine, + HTMLElement3_get_canHaveHTML, + HTMLElement3_put_onlayoutcomplete, + HTMLElement3_get_onlayoutcomplete, + HTMLElement3_put_onpage, + HTMLElement3_get_onpage, + HTMLElement3_put_inflateBlock, + HTMLElement3_get_inflateBlock, + HTMLElement3_put_onbeforedeactivate, + HTMLElement3_get_onbeforedeactivate, + HTMLElement3_setActive, + HTMLElement3_put_contentEditable, + HTMLElement3_get_contentEditable, + HTMLElement3_get_isContentEditable, + HTMLElement3_put_hideFocus, + HTMLElement3_get_hideFocus, + HTMLElement3_put_disabled, + HTMLElement3_get_disabled, + HTMLElement3_get_isDisabled, + HTMLElement3_put_onmove, + HTMLElement3_get_onmove, + HTMLElement3_put_oncontrolselect, + HTMLElement3_get_oncontrolselect, + HTMLElement3_fireEvent, + HTMLElement3_put_onresizestart, + HTMLElement3_get_onresizestart, + HTMLElement3_put_onresizeend, + HTMLElement3_get_onresizeend, + HTMLElement3_put_onmovestart, + HTMLElement3_get_onmovestart, + HTMLElement3_put_onmoveend, + HTMLElement3_get_onmoveend, + HTMLElement3_put_onmousecenter, + HTMLElement3_get_onmousecenter, + HTMLElement3_put_onmouseleave, + HTMLElement3_get_onmouseleave, + HTMLElement3_put_onactivate, + HTMLElement3_get_onactivate, + HTMLElement3_put_ondeactivate, + HTMLElement3_get_ondeactivate, + HTMLElement3_dragDrop, + HTMLElement3_get_glyphMode +}; + +void HTMLElement3_Init(HTMLElement *This) +{ + This->lpHTMLElement3Vtbl = &HTMLElement3Vtbl; +} diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 626cb8b99f7..e148232ee8e 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -381,6 +381,7 @@ typedef struct { const IHTMLElementVtbl *lpHTMLElementVtbl; const IHTMLElement2Vtbl *lpHTMLElement2Vtbl; + const IHTMLElement3Vtbl *lpHTMLElement3Vtbl; nsIDOMHTMLElement *nselem; } HTMLElement; @@ -441,6 +442,7 @@ typedef struct { #define HTMLELEM(x) ((IHTMLElement*) &(x)->lpHTMLElementVtbl) #define HTMLELEM2(x) ((IHTMLElement2*) &(x)->lpHTMLElement2Vtbl) +#define HTMLELEM3(x) ((IHTMLElement3*) &(x)->lpHTMLElement3Vtbl) #define HTMLDOMNODE(x) ((IHTMLDOMNode*) &(x)->lpHTMLDOMNodeVtbl) #define HTMLDOMNODE2(x) ((IHTMLDOMNode2*) &(x)->lpHTMLDOMNode2Vtbl) @@ -572,6 +574,7 @@ HTMLElement *HTMLGenericElement_Create(nsIDOMHTMLElement*); void HTMLDOMNode_Init(HTMLDocument*,HTMLDOMNode*,nsIDOMNode*); void HTMLElement_Init(HTMLElement*); void HTMLElement2_Init(HTMLElement*); +void HTMLElement3_Init(HTMLElement*); void HTMLTextContainer_Init(HTMLTextContainer*); HRESULT HTMLDOMNode_QI(HTMLDOMNode*,REFIID,void**); diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c index 9ce91ba3753..dd13ad3875a 100644 --- a/dlls/mshtml/tests/dom.c +++ b/dlls/mshtml/tests/dom.c @@ -99,6 +99,7 @@ static const IID * const elem_iids[] = { &IID_IHTMLDOMNode2, &IID_IHTMLElement, &IID_IHTMLElement2, + &IID_IHTMLElement3, &IID_IDispatchEx, &IID_IConnectionPointContainer, NULL @@ -109,6 +110,7 @@ static const IID * const body_iids[] = { &IID_IHTMLDOMNode2, &IID_IHTMLElement, &IID_IHTMLElement2, + &IID_IHTMLElement3, &IID_IHTMLTextContainer, &IID_IHTMLBodyElement, &IID_IDispatchEx, @@ -121,6 +123,7 @@ static const IID * const anchor_iids[] = { &IID_IHTMLDOMNode2, &IID_IHTMLElement, &IID_IHTMLElement2, + &IID_IHTMLElement3, &IID_IHTMLAnchorElement, &IID_IDispatchEx, &IID_IConnectionPointContainer, @@ -132,6 +135,7 @@ static const IID * const input_iids[] = { &IID_IHTMLDOMNode2, &IID_IHTMLElement, &IID_IHTMLElement2, + &IID_IHTMLElement3, &IID_IHTMLInputElement, &IID_IHTMLInputTextElement, &IID_IDispatchEx, @@ -144,6 +148,7 @@ static const IID * const select_iids[] = { &IID_IHTMLDOMNode2, &IID_IHTMLElement, &IID_IHTMLElement2, + &IID_IHTMLElement3, &IID_IHTMLSelectElement, &IID_IDispatchEx, &IID_IConnectionPointContainer, @@ -155,6 +160,7 @@ static const IID * const textarea_iids[] = { &IID_IHTMLDOMNode2, &IID_IHTMLElement, &IID_IHTMLElement2, + &IID_IHTMLElement3, &IID_IHTMLTextAreaElement, &IID_IDispatchEx, &IID_IConnectionPointContainer, @@ -166,6 +172,7 @@ static const IID * const option_iids[] = { &IID_IHTMLDOMNode2, &IID_IHTMLElement, &IID_IHTMLElement2, + &IID_IHTMLElement3, &IID_IHTMLOptionElement, &IID_IDispatchEx, &IID_IConnectionPointContainer, @@ -177,6 +184,7 @@ static const IID * const table_iids[] = { &IID_IHTMLDOMNode2, &IID_IHTMLElement, &IID_IHTMLElement2, + &IID_IHTMLElement3, &IID_IHTMLTable, &IID_IDispatchEx, &IID_IConnectionPointContainer, @@ -188,6 +196,7 @@ static const IID * const script_iids[] = { &IID_IHTMLDOMNode2, &IID_IHTMLElement, &IID_IHTMLElement2, + &IID_IHTMLElement3, &IID_IHTMLScriptElement, &IID_IDispatchEx, &IID_IConnectionPointContainer, @@ -220,6 +229,7 @@ static const IID * const comment_iids[] = { &IID_IHTMLDOMNode2, &IID_IHTMLElement, &IID_IHTMLElement2, + &IID_IHTMLElement3, &IID_IHTMLCommentElement, &IID_IDispatchEx, &IID_IConnectionPointContainer, @@ -231,6 +241,7 @@ static const IID * const img_iids[] = { &IID_IHTMLDOMNode2, &IID_IHTMLElement, &IID_IHTMLElement2, + &IID_IHTMLElement3, &IID_IDispatchEx, &IID_IHTMLImgElement, &IID_IConnectionPointContainer, @@ -242,6 +253,7 @@ static const IID * const tr_iids[] = { &IID_IHTMLDOMNode2, &IID_IHTMLElement, &IID_IHTMLElement2, + &IID_IHTMLElement3, &IID_IDispatchEx, &IID_IHTMLTableRow, &IID_IConnectionPointContainer, @@ -253,6 +265,7 @@ static const IID * const td_iids[] = { &IID_IHTMLDOMNode2, &IID_IHTMLElement, &IID_IHTMLElement2, + &IID_IHTMLElement3, &IID_IDispatchEx, &IID_IConnectionPointContainer, NULL @@ -263,6 +276,7 @@ static const IID * const generic_iids[] = { &IID_IHTMLDOMNode2, &IID_IHTMLElement, &IID_IHTMLElement2, + &IID_IHTMLElement3, &IID_IHTMLGenericElement, &IID_IDispatchEx, &IID_IConnectionPointContainer, -- 2.11.4.GIT