diff --git a/reactos/dll/win32/mshtml/Da.rc b/reactos/dll/win32/mshtml/Da.rc
new file mode 100644
index 00000000000..40562dc36df
--- /dev/null
+++ b/reactos/dll/win32/mshtml/Da.rc
@@ -0,0 +1,57 @@
+/*
+ * Danish language support
+ *
+ * Copyright (C) 2008 Jens Albretsen
+ *
+ * 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
+ */
+
+
+LANGUAGE LANG_DANISH, SUBLANG_DEFAULT
+
+STRINGTABLE DISCARDABLE
+{
+ IDS_HTMLDISABLED "HTML optegning er i шjeblikket deaktiveret."
+ IDS_HTMLDOCUMENT "HTML dokument"
+ IDS_DOWNLOADING "Henter..."
+ IDS_INSTALLING "Installerer..."
+}
+
+ID_DWL_DIALOG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 260, 85
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "Installere Wine Gecko"
+FONT 8, "MS Shell Dlg"
+{
+ LTEXT "Dette program prшver at vise en HTML-side. Wine har brug for Gecko" \
+ "(Mozillas HTML motor) for at vise denne siden. Vжlg Installer hvis " \
+ "du vil have at Wine skal hente og installere Gecko automatisk.", ID_DWL_STATUS, 10, 10, 240, 30, SS_LEFT
+ CONTROL "Progress", ID_DWL_PROGRESS, PROGRESS_CLASSA, WS_BORDER|PBS_SMOOTH, 10, 40, 240, 12
+ DEFPUSHBUTTON "&Installer", ID_DWL_INSTALL, 200, 60, 50, 15, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Annuller", IDCANCEL, 140, 60, 50, 15, WS_GROUP | WS_TABSTOP
+}
+
+IDD_HYPERLINK DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 250, 65
+STYLE DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "Hyperlink"
+FONT 8, "MS Shell Dlg"
+{
+ GROUPBOX "Information om Hyperlink'en", IDC_STATIC, 5, 5, 190, 55
+ LTEXT "&Type:", IDC_STATIC, 10, 22, 20, 10
+ COMBOBOX IDC_TYPE, 35, 20, 45, 100, WS_TABSTOP | WS_GROUP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS
+ LTEXT "&URL:", IDC_STATIC, 10, 42, 20, 10
+ EDITTEXT IDC_URL, 35, 40, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "OK", IDOK, 200, 10, 45, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Annuller", IDCANCEL, 200, 28, 45, 14, WS_GROUP | WS_TABSTOP
+}
diff --git a/reactos/dll/win32/mshtml/Fi.rc b/reactos/dll/win32/mshtml/Fi.rc
index 8ca063b06e8..d1d389a8ba5 100644
--- a/reactos/dll/win32/mshtml/Fi.rc
+++ b/reactos/dll/win32/mshtml/Fi.rc
@@ -25,4 +25,6 @@ STRINGTABLE DISCARDABLE
{
IDS_HTMLDISABLED "HTML:n nдyttдminen on tдllдhetkellд poistettu kдytцstд."
IDS_HTMLDOCUMENT "HTML Dokumentti"
+ IDS_DOWNLOADING "Downloading..."
+ IDS_INSTALLING "Installing..."
}
diff --git a/reactos/dll/win32/mshtml/Hu.rc b/reactos/dll/win32/mshtml/Hu.rc
index bb2d3308dc8..7f3d25446ad 100644
--- a/reactos/dll/win32/mshtml/Hu.rc
+++ b/reactos/dll/win32/mshtml/Hu.rc
@@ -23,4 +23,6 @@ STRINGTABLE DISCARDABLE
{
IDS_HTMLDISABLED "A HTML rajzolбs jelenleg le van tiltva."
IDS_HTMLDOCUMENT "HTML Dokumentum"
+ IDS_DOWNLOADING "Downloading..."
+ IDS_INSTALLING "Installing..."
}
diff --git a/reactos/dll/win32/mshtml/No.rc b/reactos/dll/win32/mshtml/No.rc
index 731459e9e83..463d2c6939f 100644
--- a/reactos/dll/win32/mshtml/No.rc
+++ b/reactos/dll/win32/mshtml/No.rc
@@ -25,8 +25,8 @@ STRINGTABLE DISCARDABLE
{
IDS_HTMLDISABLED "HTML-tegning er for шyeblikket deaktivert."
IDS_HTMLDOCUMENT "HTML-dokument"
- IDS_DOWNLOADING "Laster ned . . ."
- IDS_INSTALLING "Installerer . . ."
+ IDS_DOWNLOADING "Laster ned..."
+ IDS_INSTALLING "Installerer..."
}
ID_DWL_DIALOG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 260, 85
diff --git a/reactos/dll/win32/mshtml/Ru.rc b/reactos/dll/win32/mshtml/Ru.rc
index 3c8207f6669..a16273be30a 100644
--- a/reactos/dll/win32/mshtml/Ru.rc
+++ b/reactos/dll/win32/mshtml/Ru.rc
@@ -27,17 +27,17 @@ STRINGTABLE DISCARDABLE
IDS_INSTALLING "Установка..."
}
-ID_DWL_DIALOG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 260, 85
+ID_DWL_DIALOG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 261, 85
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Установка Wine Gecko"
FONT 8, "MS Shell Dlg"
{
LTEXT "Эта программа пытается отобразить HTML страницу. Для её отображения Wine необходимо " \
"установить Gecko (Mozilla HTML engine). Нажмите кнопку установить если вы хотите, что бы Wine " \
- "автоматически загрузил и установил Gecko.", ID_DWL_STATUS, 10, 10, 240, 30, SS_LEFT
- CONTROL "Прогресс", ID_DWL_PROGRESS, PROGRESS_CLASSA, WS_BORDER|PBS_SMOOTH, 10, 40, 240, 12
- DEFPUSHBUTTON "&Установить", ID_DWL_INSTALL, 200, 60, 50, 15, WS_GROUP | WS_TABSTOP
- PUSHBUTTON "&Отмена", IDCANCEL, 140, 60, 50, 15, WS_GROUP | WS_TABSTOP
+ "автоматически загрузил и установил Gecko.", ID_DWL_STATUS, 10, 10, 240, 33, SS_LEFT
+ CONTROL "Прогресс", ID_DWL_PROGRESS, PROGRESS_CLASSA, WS_BORDER|PBS_SMOOTH, 10, 46, 240, 12
+ DEFPUSHBUTTON "&Установить", ID_DWL_INSTALL, 200, 63, 50, 15, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Отмена", IDCANCEL, 140, 63, 50, 15, WS_GROUP | WS_TABSTOP
}
IDD_HYPERLINK DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 250, 65
diff --git a/reactos/dll/win32/mshtml/Sv.rc b/reactos/dll/win32/mshtml/Sv.rc
index 1a93f0e4ed7..9f582cc27fe 100644
--- a/reactos/dll/win32/mshtml/Sv.rc
+++ b/reactos/dll/win32/mshtml/Sv.rc
@@ -17,7 +17,7 @@
*/
-LANGUAGE LANG_SWEDISH, SUBLANG_DEFAULT
+LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
STRINGTABLE DISCARDABLE
{
diff --git a/reactos/dll/win32/mshtml/dispex.c b/reactos/dll/win32/mshtml/dispex.c
new file mode 100644
index 00000000000..4e44130e0ac
--- /dev/null
+++ b/reactos/dll/win32/mshtml/dispex.c
@@ -0,0 +1,652 @@
+/*
+ * 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 "mshtml_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
+
+typedef struct {
+ DISPID id;
+ BSTR name;
+ tid_t tid;
+} func_info_t;
+
+struct dispex_data_t {
+ DWORD func_cnt;
+ func_info_t *funcs;
+ func_info_t **name_table;
+
+ struct list entry;
+};
+
+typedef struct {
+ VARIANT var;
+ LPWSTR name;
+} dynamic_prop_t;
+
+struct dispex_dynamic_data_t {
+ DWORD buf_size;
+ DWORD prop_cnt;
+ dynamic_prop_t *props;
+};
+
+#define DISPID_DYNPROP_0 0x50000000
+#define DISPID_DYNPROP_MAX 0x5fffffff
+
+static ITypeLib *typelib;
+static ITypeInfo *typeinfos[LAST_tid];
+static struct list dispex_data_list = LIST_INIT(dispex_data_list);
+
+static REFIID tid_ids[] = {
+ &IID_NULL,
+ &DIID_DispDOMChildrenCollection,
+ &DIID_DispHTMLCommentElement,
+ &DIID_DispHTMLDocument,
+ &DIID_DispHTMLDOMTextNode,
+ &DIID_DispHTMLElementCollection,
+ &DIID_DispHTMLGenericElement,
+ &DIID_DispHTMLImg,
+ &DIID_DispHTMLInputElement,
+ &DIID_DispHTMLOptionElement,
+ &DIID_DispHTMLSelectElement,
+ &DIID_DispHTMLStyle,
+ &DIID_DispHTMLUnknownElement,
+ &DIID_DispHTMLWindow2,
+ &IID_IHTMLCommentElement,
+ &IID_IHTMLDocument2,
+ &IID_IHTMLDocument3,
+ &IID_IHTMLDocument4,
+ &IID_IHTMLDocument5,
+ &IID_IHTMLDOMChildrenCollection,
+ &IID_IHTMLDOMNode,
+ &IID_IHTMLDOMNode2,
+ &IID_IHTMLDOMTextNode,
+ &IID_IHTMLElement,
+ &IID_IHTMLElement2,
+ &IID_IHTMLElementCollection,
+ &IID_IHTMLGenericElement,
+ &IID_IHTMLImgElement,
+ &IID_IHTMLInputElement,
+ &IID_IHTMLOptionElement,
+ &IID_IHTMLSelectElement,
+ &IID_IHTMLStyle,
+ &IID_IHTMLWindow2,
+ &IID_IHTMLWindow3,
+ &IID_IOmNavigator
+};
+
+HRESULT get_typeinfo(tid_t tid, ITypeInfo **typeinfo)
+{
+ HRESULT hres;
+
+ if(!typelib) {
+ ITypeLib *tl;
+
+ hres = LoadRegTypeLib(&LIBID_MSHTML, 4, 0, LOCALE_SYSTEM_DEFAULT, &tl);
+ if(FAILED(hres)) {
+ ERR("LoadRegTypeLib failed: %08x\n", hres);
+ return hres;
+ }
+
+ if(InterlockedCompareExchangePointer((void**)&typelib, tl, NULL))
+ ITypeLib_Release(tl);
+ }
+
+ if(!typeinfos[tid]) {
+ ITypeInfo *typeinfo;
+
+ hres = ITypeLib_GetTypeInfoOfGuid(typelib, tid_ids[tid], &typeinfo);
+ if(FAILED(hres)) {
+ ERR("GetTypeInfoOfGuid(%s) failed: %08x\n", debugstr_guid(tid_ids[tid]), hres);
+ return hres;
+ }
+
+ if(InterlockedCompareExchangePointer((void**)(typeinfos+tid), typeinfo, NULL))
+ ITypeInfo_Release(typeinfo);
+ }
+
+ *typeinfo = typeinfos[tid];
+ return S_OK;
+}
+
+void release_typelib(void)
+{
+ dispex_data_t *iter;
+ unsigned i;
+
+ while(!list_empty(&dispex_data_list)) {
+ iter = LIST_ENTRY(list_head(&dispex_data_list), dispex_data_t, entry);
+ list_remove(&iter->entry);
+
+ for(i=0; i < iter->func_cnt; i++)
+ SysFreeString(iter->funcs[i].name);
+
+ heap_free(iter->funcs);
+ heap_free(iter->name_table);
+ heap_free(iter);
+ }
+
+ if(!typelib)
+ return;
+
+ for(i=0; i < sizeof(typeinfos)/sizeof(*typeinfos); i++)
+ if(typeinfos[i])
+ ITypeInfo_Release(typeinfos[i]);
+
+ ITypeLib_Release(typelib);
+}
+
+static void add_func_info(dispex_data_t *data, DWORD *size, tid_t tid, DISPID id, ITypeInfo *dti)
+{
+ HRESULT hres;
+
+ if(data->func_cnt && data->funcs[data->func_cnt-1].id == id)
+ return;
+
+ if(data->func_cnt == *size)
+ data->funcs = heap_realloc(data->funcs, (*size <<= 1)*sizeof(func_info_t));
+
+ hres = ITypeInfo_GetDocumentation(dti, id, &data->funcs[data->func_cnt].name, NULL, NULL, NULL);
+ if(FAILED(hres))
+ return;
+
+ data->funcs[data->func_cnt].id = id;
+ data->funcs[data->func_cnt].tid = tid;
+
+ data->func_cnt++;
+}
+
+static int dispid_cmp(const void *p1, const void *p2)
+{
+ return ((func_info_t*)p1)->id - ((func_info_t*)p2)->id;
+}
+
+static int func_name_cmp(const void *p1, const void *p2)
+{
+ return strcmpiW((*(func_info_t**)p1)->name, (*(func_info_t**)p2)->name);
+}
+
+static dispex_data_t *preprocess_dispex_data(DispatchEx *This)
+{
+ const tid_t *tid = This->data->iface_tids;
+ FUNCDESC *funcdesc;
+ dispex_data_t *data;
+ DWORD size = 16, i;
+ ITypeInfo *ti, *dti;
+ HRESULT hres;
+
+ TRACE("(%p)\n", This);
+
+ hres = get_typeinfo(This->data->disp_tid, &dti);
+ if(FAILED(hres)) {
+ ERR("Could not get disp type info: %08x\n", hres);
+ return NULL;
+ }
+
+ data = heap_alloc(sizeof(dispex_data_t));
+ data->func_cnt = 0;
+ data->funcs = heap_alloc(size*sizeof(func_info_t));
+ list_add_tail(&dispex_data_list, &data->entry);
+
+ while(*tid) {
+ hres = get_typeinfo(*tid, &ti);
+ if(FAILED(hres))
+ break;
+
+ i=7;
+ while(1) {
+ hres = ITypeInfo_GetFuncDesc(ti, i++, &funcdesc);
+ if(FAILED(hres))
+ break;
+
+ add_func_info(data, &size, *tid, funcdesc->memid, dti);
+ ITypeInfo_ReleaseFuncDesc(ti, funcdesc);
+ }
+
+ tid++;
+ }
+
+ if(!data->func_cnt) {
+ heap_free(data->funcs);
+ data->funcs = NULL;
+ }else if(data->func_cnt != size) {
+ data->funcs = heap_realloc(data->funcs, data->func_cnt * sizeof(func_info_t));
+ }
+
+ qsort(data->funcs, data->func_cnt, sizeof(func_info_t), dispid_cmp);
+
+ if(data->funcs) {
+ data->name_table = heap_alloc(data->func_cnt * sizeof(func_info_t*));
+ for(i=0; i < data->func_cnt; i++)
+ data->name_table[i] = data->funcs+i;
+ qsort(data->name_table, data->func_cnt, sizeof(func_info_t*), func_name_cmp);
+ }else {
+ data->name_table = NULL;
+ }
+
+ return data;
+}
+
+static CRITICAL_SECTION cs_dispex_static_data;
+static CRITICAL_SECTION_DEBUG cs_dispex_static_data_dbg =
+{
+ 0, 0, &cs_dispex_static_data,
+ { &cs_dispex_static_data_dbg.ProcessLocksList, &cs_dispex_static_data_dbg.ProcessLocksList },
+ 0, 0, { (DWORD_PTR)(__FILE__ ": dispex_static_data") }
+};
+static CRITICAL_SECTION cs_dispex_static_data = { &cs_dispex_static_data_dbg, -1, 0, 0, 0, 0 };
+
+
+static dispex_data_t *get_dispex_data(DispatchEx *This)
+{
+ if(This->data->data)
+ return This->data->data;
+
+ EnterCriticalSection(&cs_dispex_static_data);
+
+ if(!This->data->data)
+ This->data->data = preprocess_dispex_data(This);
+
+ LeaveCriticalSection(&cs_dispex_static_data);
+
+ return This->data->data;
+}
+
+void call_disp_func(HTMLDocument *doc, IDispatch *disp)
+{
+ DISPID named_arg = DISPID_THIS;
+ VARIANTARG arg;
+ DISPPARAMS params = {&arg, &named_arg, 1, 1};
+ EXCEPINFO ei;
+ IDispatchEx *dispex;
+ VARIANT res;
+ HRESULT hres;
+
+ hres = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (void**)&dispex);
+ if(FAILED(hres)) {
+ FIXME("Could not get IDispatchEx interface: %08x\n", hres);
+ return;
+ }
+
+ V_VT(&arg) = VT_DISPATCH;
+ V_DISPATCH(&arg) = (IDispatch*)HTMLWINDOW2(doc->window);
+ VariantInit(&res);
+ memset(&ei, 0, sizeof(ei));
+
+ hres = IDispatchEx_InvokeEx(dispex, 0, GetUserDefaultLCID(), DISPATCH_METHOD, ¶ms, &res, &ei, NULL);
+ IDispatchEx_Release(dispex);
+
+ TRACE("%p returned %08x\n", disp, hres);
+
+ VariantClear(&res);
+}
+
+static inline BOOL is_custom_dispid(DISPID id)
+{
+ return MSHTML_DISPID_CUSTOM_MIN <= id && id <= MSHTML_DISPID_CUSTOM_MAX;
+}
+
+static inline BOOL is_dynamic_dispid(DISPID id)
+{
+ return DISPID_DYNPROP_0 <= id && id <= DISPID_DYNPROP_MAX;
+}
+
+#define DISPATCHEX_THIS(iface) DEFINE_THIS(DispatchEx, IDispatchEx, iface)
+
+static HRESULT WINAPI DispatchEx_QueryInterface(IDispatchEx *iface, REFIID riid, void **ppv)
+{
+ DispatchEx *This = DISPATCHEX_THIS(iface);
+
+ return IUnknown_QueryInterface(This->outer, riid, ppv);
+}
+
+static ULONG WINAPI DispatchEx_AddRef(IDispatchEx *iface)
+{
+ DispatchEx *This = DISPATCHEX_THIS(iface);
+
+ return IUnknown_AddRef(This->outer);
+}
+
+static ULONG WINAPI DispatchEx_Release(IDispatchEx *iface)
+{
+ DispatchEx *This = DISPATCHEX_THIS(iface);
+
+ return IUnknown_Release(This->outer);
+}
+
+static HRESULT WINAPI DispatchEx_GetTypeInfoCount(IDispatchEx *iface, UINT *pctinfo)
+{
+ DispatchEx *This = DISPATCHEX_THIS(iface);
+
+ TRACE("(%p)->(%p)\n", This, pctinfo);
+
+ *pctinfo = 1;
+ return S_OK;
+}
+
+static HRESULT WINAPI DispatchEx_GetTypeInfo(IDispatchEx *iface, UINT iTInfo,
+ LCID lcid, ITypeInfo **ppTInfo)
+{
+ DispatchEx *This = DISPATCHEX_THIS(iface);
+ HRESULT hres;
+
+ TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
+
+ hres = get_typeinfo(This->data->disp_tid, ppTInfo);
+ if(FAILED(hres))
+ return hres;
+
+ ITypeInfo_AddRef(*ppTInfo);
+ return S_OK;
+}
+
+static HRESULT WINAPI DispatchEx_GetIDsOfNames(IDispatchEx *iface, REFIID riid,
+ LPOLESTR *rgszNames, UINT cNames,
+ LCID lcid, DISPID *rgDispId)
+{
+ DispatchEx *This = DISPATCHEX_THIS(iface);
+ UINT i;
+ HRESULT hres;
+
+ TRACE("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
+ lcid, rgDispId);
+
+ for(i=0; i < cNames; i++) {
+ hres = IDispatchEx_GetDispID(DISPATCHEX(This), rgszNames[i], 0, rgDispId+i);
+ if(FAILED(hres))
+ return hres;
+ }
+
+ return S_OK;
+}
+
+static HRESULT WINAPI DispatchEx_Invoke(IDispatchEx *iface, DISPID dispIdMember,
+ REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
+ VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
+{
+ DispatchEx *This = DISPATCHEX_THIS(iface);
+
+ TRACE("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
+ lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+
+ return IDispatchEx_InvokeEx(DISPATCHEX(This), dispIdMember, lcid, wFlags,
+ pDispParams, pVarResult, pExcepInfo, NULL);
+}
+
+static HRESULT WINAPI DispatchEx_GetDispID(IDispatchEx *iface, BSTR bstrName, DWORD grfdex, DISPID *pid)
+{
+ DispatchEx *This = DISPATCHEX_THIS(iface);
+ dispex_data_t *data;
+ int min, max, n, c;
+
+ TRACE("(%p)->(%s %x %p)\n", This, debugstr_w(bstrName), grfdex, pid);
+
+ if(grfdex & ~(fdexNameCaseSensitive|fdexNameEnsure|fdexNameImplicit))
+ FIXME("Unsupported grfdex %x\n", grfdex);
+
+ data = get_dispex_data(This);
+ if(!data)
+ return E_FAIL;
+
+ min = 0;
+ max = data->func_cnt-1;
+
+ while(min <= max) {
+ n = (min+max)/2;
+
+ c = strcmpiW(data->name_table[n]->name, bstrName);
+ if(!c) {
+ if((grfdex & fdexNameCaseSensitive) && strcmpW(data->name_table[n]->name, bstrName))
+ break;
+
+ *pid = data->name_table[n]->id;
+ return S_OK;
+ }
+
+ if(c > 0)
+ max = n-1;
+ else
+ min = n+1;
+ }
+
+ if(This->dynamic_data) {
+ unsigned i;
+
+ for(i=0; i < This->dynamic_data->prop_cnt; i++) {
+ if(!strcmpW(This->dynamic_data->props[i].name, bstrName)) {
+ *pid = DISPID_DYNPROP_0 + i;
+ return S_OK;
+ }
+ }
+ }
+
+ if(This->data->vtbl && This->data->vtbl->get_dispid) {
+ HRESULT hres;
+
+ hres = This->data->vtbl->get_dispid(This->outer, bstrName, grfdex, pid);
+ if(hres != DISP_E_UNKNOWNNAME)
+ return hres;
+ }
+
+ if(grfdex & fdexNameEnsure) {
+ TRACE("creating dynamic prop %s\n", debugstr_w(bstrName));
+
+ if(!This->dynamic_data) {
+ This->dynamic_data = heap_alloc_zero(sizeof(dispex_dynamic_data_t));
+ This->dynamic_data->props = heap_alloc(This->dynamic_data->buf_size = 4);
+ }else if(This->dynamic_data->buf_size == This->dynamic_data->prop_cnt) {
+ This->dynamic_data->props = heap_realloc(This->dynamic_data->props, This->dynamic_data->buf_size<<=1);
+ }
+
+ This->dynamic_data->props[This->dynamic_data->prop_cnt].name = heap_strdupW(bstrName);
+ VariantInit(&This->dynamic_data->props[This->dynamic_data->prop_cnt].var);
+ *pid = DISPID_DYNPROP_0 + This->dynamic_data->prop_cnt++;
+
+ return S_OK;
+ }
+
+ TRACE("not found %s\n", debugstr_w(bstrName));
+ return DISP_E_UNKNOWNNAME;
+}
+
+static HRESULT WINAPI DispatchEx_InvokeEx(IDispatchEx *iface, DISPID id, LCID lcid, WORD wFlags, DISPPARAMS *pdp,
+ VARIANT *pvarRes, EXCEPINFO *pei, IServiceProvider *pspCaller)
+{
+ DispatchEx *This = DISPATCHEX_THIS(iface);
+ IUnknown *unk;
+ ITypeInfo *ti;
+ dispex_data_t *data;
+ UINT argerr=0;
+ int min, max, n;
+ HRESULT hres;
+
+ TRACE("(%p)->(%x %x %x %p %p %p %p)\n", This, id, lcid, wFlags, pdp, pvarRes, pei, pspCaller);
+
+ if(is_custom_dispid(id) && This->data->vtbl && This->data->vtbl->invoke)
+ return This->data->vtbl->invoke(This->outer, id, lcid, wFlags, pdp, pvarRes, pei, pspCaller);
+
+ if(wFlags == DISPATCH_CONSTRUCT) {
+ FIXME("DISPATCH_CONSTRUCT not implemented\n");
+ return E_NOTIMPL;
+ }
+
+ if(is_dynamic_dispid(id)) {
+ DWORD idx = id - DISPID_DYNPROP_0;
+ VARIANT *var;
+
+ if(!This->dynamic_data || This->dynamic_data->prop_cnt <= idx)
+ return DISP_E_UNKNOWNNAME;
+
+ var = &This->dynamic_data->props[idx].var;
+
+ switch(wFlags) {
+ case INVOKE_PROPERTYGET:
+ return VariantCopy(pvarRes, var);
+ case INVOKE_PROPERTYPUT:
+ VariantClear(var);
+ return VariantCopy(var, pdp->rgvarg);
+ default:
+ FIXME("unhandled wFlags %x\n", wFlags);
+ return E_NOTIMPL;
+ }
+ }
+
+ data = get_dispex_data(This);
+ if(!data)
+ return E_FAIL;
+
+ min = 0;
+ max = data->func_cnt-1;
+
+ while(min <= max) {
+ n = (min+max)/2;
+
+ if(data->funcs[n].id == id)
+ break;
+
+ if(data->funcs[n].id < id)
+ min = n+1;
+ else
+ max = n-1;
+ }
+
+ if(min > max) {
+ WARN("invalid id %x\n", id);
+ return DISP_E_UNKNOWNNAME;
+ }
+
+ hres = get_typeinfo(data->funcs[n].tid, &ti);
+ if(FAILED(hres)) {
+ ERR("Could not get type info: %08x\n", hres);
+ return hres;
+ }
+
+ hres = IUnknown_QueryInterface(This->outer, tid_ids[data->funcs[n].tid], (void**)&unk);
+ if(FAILED(hres)) {
+ ERR("Could not get iface: %08x\n", hres);
+ return E_FAIL;
+ }
+
+ hres = ITypeInfo_Invoke(ti, unk, id, wFlags, pdp, pvarRes, pei, &argerr);
+
+ IUnknown_Release(unk);
+ return hres;
+}
+
+static HRESULT WINAPI DispatchEx_DeleteMemberByName(IDispatchEx *iface, BSTR bstrName, DWORD grfdex)
+{
+ DispatchEx *This = DISPATCHEX_THIS(iface);
+ FIXME("(%p)->(%s %x)\n", This, debugstr_w(bstrName), grfdex);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI DispatchEx_DeleteMemberByDispID(IDispatchEx *iface, DISPID id)
+{
+ DispatchEx *This = DISPATCHEX_THIS(iface);
+ FIXME("(%p)->(%x)\n", This, id);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI DispatchEx_GetMemberProperties(IDispatchEx *iface, DISPID id, DWORD grfdexFetch, DWORD *pgrfdex)
+{
+ DispatchEx *This = DISPATCHEX_THIS(iface);
+ FIXME("(%p)->(%x %x %p)\n", This, id, grfdexFetch, pgrfdex);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI DispatchEx_GetMemberName(IDispatchEx *iface, DISPID id, BSTR *pbstrName)
+{
+ DispatchEx *This = DISPATCHEX_THIS(iface);
+ FIXME("(%p)->(%x %p)\n", This, id, pbstrName);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI DispatchEx_GetNextDispID(IDispatchEx *iface, DWORD grfdex, DISPID id, DISPID *pid)
+{
+ DispatchEx *This = DISPATCHEX_THIS(iface);
+ FIXME("(%p)->(%x %x %p)\n", This, grfdex, id, pid);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI DispatchEx_GetNameSpaceParent(IDispatchEx *iface, IUnknown **ppunk)
+{
+ DispatchEx *This = DISPATCHEX_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, ppunk);
+ return E_NOTIMPL;
+}
+
+#undef DISPATCHEX_THIS
+
+static IDispatchExVtbl DispatchExVtbl = {
+ DispatchEx_QueryInterface,
+ DispatchEx_AddRef,
+ DispatchEx_Release,
+ DispatchEx_GetTypeInfoCount,
+ DispatchEx_GetTypeInfo,
+ DispatchEx_GetIDsOfNames,
+ DispatchEx_Invoke,
+ DispatchEx_GetDispID,
+ DispatchEx_InvokeEx,
+ DispatchEx_DeleteMemberByName,
+ DispatchEx_DeleteMemberByDispID,
+ DispatchEx_GetMemberProperties,
+ DispatchEx_GetMemberName,
+ DispatchEx_GetNextDispID,
+ DispatchEx_GetNameSpaceParent
+};
+
+BOOL dispex_query_interface(DispatchEx *This, REFIID riid, void **ppv)
+{
+ static const IID IID_UndocumentedScriptIface =
+ {0x719c3050,0xf9d3,0x11cf,{0xa4,0x93,0x00,0x40,0x05,0x23,0xa8,0xa0}};
+
+ if(IsEqualGUID(&IID_IDispatch, riid)) {
+ TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
+ *ppv = DISPATCHEX(This);
+ }else if(IsEqualGUID(&IID_IDispatchEx, riid)) {
+ TRACE("(%p)->(IID_IDispatchEx %p)\n", This, ppv);
+ *ppv = DISPATCHEX(This);
+ }else if(IsEqualGUID(&IID_UndocumentedScriptIface, riid)) {
+ TRACE("(%p)->(IID_UndocumentedScriptIface %p) returning NULL\n", This, ppv);
+ *ppv = NULL;
+ }else {
+ return FALSE;
+ }
+
+ if(*ppv)
+ IUnknown_AddRef((IUnknown*)*ppv);
+ return TRUE;
+}
+
+void init_dispex(DispatchEx *dispex, IUnknown *outer, dispex_static_data_t *data)
+{
+ dispex->lpIDispatchExVtbl = &DispatchExVtbl;
+ dispex->outer = outer;
+ dispex->data = data;
+}
diff --git a/reactos/dll/win32/mshtml/htmlanchor.c b/reactos/dll/win32/mshtml/htmlanchor.c
index d404925a490..866329176eb 100644
--- a/reactos/dll/win32/mshtml/htmlanchor.c
+++ b/reactos/dll/win32/mshtml/htmlanchor.c
@@ -481,7 +481,7 @@ static const NodeImplVtbl HTMLAnchorElementImplVtbl = {
HTMLElement *HTMLAnchorElement_Create(nsIDOMHTMLElement *nselem)
{
- HTMLAnchorElement *ret = heap_alloc(sizeof(HTMLAnchorElement));
+ HTMLAnchorElement *ret = heap_alloc_zero(sizeof(HTMLAnchorElement));
HTMLElement_Init(&ret->element);
diff --git a/reactos/dll/win32/mshtml/htmlbody.c b/reactos/dll/win32/mshtml/htmlbody.c
index 2ca3f28bbc4..8e1f70c7e47 100644
--- a/reactos/dll/win32/mshtml/htmlbody.c
+++ b/reactos/dll/win32/mshtml/htmlbody.c
@@ -598,7 +598,7 @@ static const NodeImplVtbl HTMLBodyElementImplVtbl = {
HTMLElement *HTMLBodyElement_Create(nsIDOMHTMLElement *nselem)
{
- HTMLBodyElement *ret = heap_alloc(sizeof(HTMLBodyElement));
+ HTMLBodyElement *ret = heap_alloc_zero(sizeof(HTMLBodyElement));
nsresult nsres;
TRACE("(%p)->(%p)\n", ret, nselem);
diff --git a/reactos/dll/win32/mshtml/htmlcomment.c b/reactos/dll/win32/mshtml/htmlcomment.c
new file mode 100644
index 00000000000..63db38274be
--- /dev/null
+++ b/reactos/dll/win32/mshtml/htmlcomment.c
@@ -0,0 +1,205 @@
+/*
+ * 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 "mshtml_private.h"
+
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
+
+typedef struct {
+ HTMLElement element;
+ const IHTMLCommentElementVtbl *lpIHTMLCommentElementVtbl;
+} HTMLCommentElement;
+
+#define HTMLCOMMENT(x) ((IHTMLCommentElement*) &(x)->lpIHTMLCommentElementVtbl)
+
+#define HTMLCOMMENT_THIS(iface) DEFINE_THIS(HTMLCommentElement, IHTMLCommentElement, iface)
+
+static HRESULT WINAPI HTMLCommentElement_QueryInterface(IHTMLCommentElement *iface,
+ REFIID riid, void **ppv)
+{
+ HTMLCommentElement *This = HTMLCOMMENT_THIS(iface);
+
+ return IHTMLDOMNode_QueryInterface(HTMLDOMNODE(&This->element.node), riid, ppv);
+}
+
+static ULONG WINAPI HTMLCommentElement_AddRef(IHTMLCommentElement *iface)
+{
+ HTMLCommentElement *This = HTMLCOMMENT_THIS(iface);
+
+ return IHTMLDOMNode_AddRef(HTMLDOMNODE(&This->element.node));
+}
+
+static ULONG WINAPI HTMLCommentElement_Release(IHTMLCommentElement *iface)
+{
+ HTMLCommentElement *This = HTMLCOMMENT_THIS(iface);
+
+ return IHTMLDOMNode_Release(HTMLDOMNODE(&This->element.node));
+}
+
+static HRESULT WINAPI HTMLCommentElement_GetTypeInfoCount(IHTMLCommentElement *iface, UINT *pctinfo)
+{
+ HTMLCommentElement *This = HTMLCOMMENT_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, pctinfo);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLCommentElement_GetTypeInfo(IHTMLCommentElement *iface, UINT iTInfo,
+ LCID lcid, ITypeInfo **ppTInfo)
+{
+ HTMLCommentElement *This = HTMLCOMMENT_THIS(iface);
+ FIXME("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLCommentElement_GetIDsOfNames(IHTMLCommentElement *iface, REFIID riid,
+ LPOLESTR *rgszNames, UINT cNames,
+ LCID lcid, DISPID *rgDispId)
+{
+ HTMLCommentElement *This = HTMLCOMMENT_THIS(iface);
+ FIXME("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
+ lcid, rgDispId);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLCommentElement_Invoke(IHTMLCommentElement *iface, DISPID dispIdMember,
+ REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
+ VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
+{
+ HTMLCommentElement *This = HTMLCOMMENT_THIS(iface);
+ FIXME("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
+ lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLCommentElement_put_text(IHTMLCommentElement *iface, BSTR v)
+{
+ HTMLCommentElement *This = HTMLCOMMENT_THIS(iface);
+ FIXME("(%p)->(%s)\n", This, debugstr_w(v));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLCommentElement_get_text(IHTMLCommentElement *iface, BSTR *p)
+{
+ HTMLCommentElement *This = HTMLCOMMENT_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLCommentElement_put_atomic(IHTMLCommentElement *iface, long v)
+{
+ HTMLCommentElement *This = HTMLCOMMENT_THIS(iface);
+ FIXME("(%p)->(%ld)\n", This, v);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLCommentElement_get_atomic(IHTMLCommentElement *iface, long *p)
+{
+ HTMLCommentElement *This = HTMLCOMMENT_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+#undef HTMLCOMMENT_THIS
+
+static const IHTMLCommentElementVtbl HTMLCommentElementVtbl = {
+ HTMLCommentElement_QueryInterface,
+ HTMLCommentElement_AddRef,
+ HTMLCommentElement_Release,
+ HTMLCommentElement_GetTypeInfoCount,
+ HTMLCommentElement_GetTypeInfo,
+ HTMLCommentElement_GetIDsOfNames,
+ HTMLCommentElement_Invoke,
+ HTMLCommentElement_put_text,
+ HTMLCommentElement_get_text,
+ HTMLCommentElement_put_atomic,
+ HTMLCommentElement_get_atomic
+};
+
+#define HTMLCOMMENT_NODE_THIS(iface) DEFINE_THIS2(HTMLCommentElement, element.node, iface)
+
+HRESULT HTMLCommentElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
+{
+ HTMLCommentElement *This = HTMLCOMMENT_NODE_THIS(iface);
+
+ *ppv = NULL;
+
+ if(IsEqualGUID(&IID_IHTMLCommentElement, riid)) {
+ TRACE("(%p)->(IID_IHTMLCommentElement %p)\n", This, ppv);
+ *ppv = HTMLCOMMENT(This);
+ }else {
+ return HTMLElement_QI(&This->element.node, riid, ppv);
+ }
+
+ IUnknown_AddRef((IUnknown*)*ppv);
+ return S_OK;
+}
+
+void HTMLCommentElement_destructor(HTMLDOMNode *iface)
+{
+ HTMLCommentElement *This = HTMLCOMMENT_NODE_THIS(iface);
+
+ HTMLElement_destructor(&This->element.node);
+}
+
+#undef HTMLCOMMENT_NODE_THIS
+
+static const NodeImplVtbl HTMLCommentElementImplVtbl = {
+ HTMLCommentElement_QI,
+ HTMLCommentElement_destructor
+};
+
+static const tid_t HTMLCommentElement_iface_tids[] = {
+ IHTMLDOMNode_tid,
+ IHTMLDOMNode2_tid,
+ IHTMLElement_tid,
+ IHTMLElement2_tid,
+ IHTMLCommentElement_tid,
+ 0
+};
+static dispex_static_data_t HTMLCommentElement_dispex = {
+ NULL,
+ DispHTMLCommentElement_tid,
+ NULL,
+ HTMLCommentElement_iface_tids
+};
+
+HTMLElement *HTMLCommentElement_Create(HTMLDocument *doc, nsIDOMNode *nsnode)
+{
+ HTMLCommentElement *ret = heap_alloc_zero(sizeof(*ret));
+
+ ret->element.node.vtbl = &HTMLCommentElementImplVtbl;
+ ret->lpIHTMLCommentElementVtbl = &HTMLCommentElementVtbl;
+
+ init_dispex(&ret->element.node.dispex, (IUnknown*)HTMLCOMMENT(ret), &HTMLCommentElement_dispex);
+ HTMLElement_Init(&ret->element);
+ HTMLDOMNode_Init(doc, &ret->element.node, nsnode);
+
+ return &ret->element;
+}
diff --git a/reactos/dll/win32/mshtml/htmldoc.c b/reactos/dll/win32/mshtml/htmldoc.c
index 92a7f9aab78..b77d69e4378 100644
--- a/reactos/dll/win32/mshtml/htmldoc.c
+++ b/reactos/dll/win32/mshtml/htmldoc.c
@@ -46,7 +46,10 @@ static HRESULT WINAPI HTMLDocument_QueryInterface(IHTMLDocument2 *iface, REFIID
*ppvObject = HTMLDOC(This);
}else if(IsEqualGUID(&IID_IDispatch, riid)) {
TRACE("(%p)->(IID_IDispatch, %p)\n", This, ppvObject);
- *ppvObject = HTMLDOC(This);
+ *ppvObject = DISPATCHEX(This);
+ }else if(IsEqualGUID(&IID_IDispatchEx, riid)) {
+ TRACE("(%p)->(IID_IDispatchEx, %p)\n", This, ppvObject);
+ *ppvObject = DISPATCHEX(This);
}else if(IsEqualGUID(&IID_IHTMLDocument, riid)) {
TRACE("(%p)->(IID_IHTMLDocument, %p)\n", This, ppvObject);
*ppvObject = HTMLDOC(This);
@@ -131,6 +134,11 @@ static HRESULT WINAPI HTMLDocument_QueryInterface(IHTMLDocument2 *iface, REFIID
}else if(IsEqualGUID(&IID_IRunnableObject, riid)) {
TRACE("(%p)->(IID_IRunnableObject %p) returning NULL\n", This, ppvObject);
return E_NOINTERFACE;
+ }else if(IsEqualGUID(&IID_IPersistPropertyBag, riid)) {
+ TRACE("(%p)->(IID_IPersistPropertyBag %p) returning NULL\n", This, ppvObject);
+ return E_NOINTERFACE;
+ }else if(dispex_query_interface(&This->dispex, riid, ppvObject)) {
+ return *ppvObject ? S_OK : E_NOINTERFACE;
}
if(*ppvObject) {
@@ -209,24 +217,26 @@ static ULONG WINAPI HTMLDocument_Release(IHTMLDocument2 *iface)
static HRESULT WINAPI HTMLDocument_GetTypeInfoCount(IHTMLDocument2 *iface, UINT *pctinfo)
{
- FIXME("(%p)->(%p)\n", iface, pctinfo);
- return E_NOTIMPL;
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+
+ return IDispatchEx_GetTypeInfoCount(DISPATCHEX(This), pctinfo);
}
static HRESULT WINAPI HTMLDocument_GetTypeInfo(IHTMLDocument2 *iface, UINT iTInfo,
LCID lcid, ITypeInfo **ppTInfo)
{
- FIXME("(%p)->(%u %u %p)\n", iface, iTInfo, lcid, ppTInfo);
- return E_NOTIMPL;
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+
+ return IDispatchEx_GetTypeInfo(DISPATCHEX(This), iTInfo, lcid, ppTInfo);
}
static HRESULT WINAPI HTMLDocument_GetIDsOfNames(IHTMLDocument2 *iface, REFIID riid,
LPOLESTR *rgszNames, UINT cNames,
LCID lcid, DISPID *rgDispId)
{
- FIXME("(%p)->(%s %p %u %u %p)\n", iface, debugstr_guid(riid), rgszNames, cNames,
- lcid, rgDispId);
- return E_NOTIMPL;
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+
+ return IDispatchEx_GetIDsOfNames(DISPATCHEX(This), riid, rgszNames, cNames, lcid, rgDispId);
}
static HRESULT WINAPI HTMLDocument_Invoke(IHTMLDocument2 *iface, DISPID dispIdMember,
@@ -235,28 +245,14 @@ static HRESULT WINAPI HTMLDocument_Invoke(IHTMLDocument2 *iface, DISPID dispIdMe
{
HTMLDocument *This = HTMLDOC_THIS(iface);
- TRACE("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
- lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
-
- switch(dispIdMember) {
- case DISPID_READYSTATE:
- if(!(wFlags & DISPATCH_PROPERTYGET))
- return E_INVALIDARG;
-
- V_VT(pVarResult) = VT_I4;
- V_I4(pVarResult) = This->readystate;
- return S_OK;
-
- default:
- FIXME("Unsupported dispid %d\n", dispIdMember);
- }
-
- return E_NOTIMPL;
+ return IDispatchEx_Invoke(DISPATCHEX(This), dispIdMember, riid, lcid, wFlags, pDispParams,
+ pVarResult, pExcepInfo, puArgErr);
}
static HRESULT WINAPI HTMLDocument_get_Script(IHTMLDocument2 *iface, IDispatch **p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
@@ -289,7 +285,7 @@ static HRESULT WINAPI HTMLDocument_get_all(IHTMLDocument2 *iface, IHTMLElementCo
return S_OK;
}
- *p = create_all_collection(get_node(This, (nsIDOMNode*)nselem));
+ *p = create_all_collection(get_node(This, (nsIDOMNode*)nselem, TRUE));
nsIDOMElement_Release(nselem);
return S_OK;
@@ -331,7 +327,7 @@ static HRESULT WINAPI HTMLDocument_get_body(IHTMLDocument2 *iface, IHTMLElement
return S_OK;
}
- node = get_node(This, (nsIDOMNode*)nsbody);
+ node = get_node(This, (nsIDOMNode*)nsbody, TRUE);
nsIDOMHTMLElement_Release(nsbody);
IHTMLDOMNode_QueryInterface(HTMLDOMNODE(node), &IID_IHTMLElement, (void**)p);
@@ -342,67 +338,78 @@ static HRESULT WINAPI HTMLDocument_get_body(IHTMLDocument2 *iface, IHTMLElement
static HRESULT WINAPI HTMLDocument_get_activeElement(IHTMLDocument2 *iface, IHTMLElement **p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_images(IHTMLDocument2 *iface, IHTMLElementCollection **p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_applets(IHTMLDocument2 *iface, IHTMLElementCollection **p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_links(IHTMLDocument2 *iface, IHTMLElementCollection **p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_forms(IHTMLDocument2 *iface, IHTMLElementCollection **p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_anchors(IHTMLDocument2 *iface, IHTMLElementCollection **p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_title(IHTMLDocument2 *iface, BSTR v)
{
- FIXME("(%p)->(%s)\n", iface, debugstr_w(v));
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%s)\n", This, debugstr_w(v));
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_title(IHTMLDocument2 *iface, BSTR *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_scripts(IHTMLDocument2 *iface, IHTMLElementCollection **p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_designMode(IHTMLDocument2 *iface, BSTR v)
{
- FIXME("(%p)->(%s)\n", iface, debugstr_w(v));
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%s)\n", This, debugstr_w(v));
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_designMode(IHTMLDocument2 *iface, BSTR *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
@@ -456,85 +463,99 @@ static HRESULT WINAPI HTMLDocument_get_readyState(IHTMLDocument2 *iface, BSTR *p
static HRESULT WINAPI HTMLDocument_get_frames(IHTMLDocument2 *iface, IHTMLFramesCollection2 **p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_embeds(IHTMLDocument2 *iface, IHTMLElementCollection **p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_plugins(IHTMLDocument2 *iface, IHTMLElementCollection **p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_alinkColor(IHTMLDocument2 *iface, VARIANT v)
{
- FIXME("(%p)\n", iface);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_alinkColor(IHTMLDocument2 *iface, VARIANT *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_bgColor(IHTMLDocument2 *iface, VARIANT v)
{
- FIXME("(%p)\n", iface);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_bgColor(IHTMLDocument2 *iface, VARIANT *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_fgColor(IHTMLDocument2 *iface, VARIANT v)
{
- FIXME("(%p)\n", iface);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_fgColor(IHTMLDocument2 *iface, VARIANT *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_linkColor(IHTMLDocument2 *iface, VARIANT v)
{
- FIXME("(%p)->()\n", iface);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->()\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_linkColor(IHTMLDocument2 *iface, VARIANT *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_vlinkColor(IHTMLDocument2 *iface, VARIANT v)
{
- FIXME("(%p)\n", iface);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_vlinkColor(IHTMLDocument2 *iface, VARIANT *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_referrer(IHTMLDocument2 *iface, BSTR *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
@@ -555,13 +576,15 @@ static HRESULT WINAPI HTMLDocument_get_location(IHTMLDocument2 *iface, IHTMLLoca
static HRESULT WINAPI HTMLDocument_get_lastModified(IHTMLDocument2 *iface, BSTR *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_URL(IHTMLDocument2 *iface, BSTR v)
{
- FIXME("(%p)->(%s)\n", iface, debugstr_w(v));
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%s)\n", This, debugstr_w(v));
return E_NOTIMPL;
}
@@ -580,109 +603,127 @@ static HRESULT WINAPI HTMLDocument_get_URL(IHTMLDocument2 *iface, BSTR *p)
static HRESULT WINAPI HTMLDocument_put_domain(IHTMLDocument2 *iface, BSTR v)
{
- FIXME("(%p)->(%s)\n", iface, debugstr_w(v));
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%s)\n", This, debugstr_w(v));
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_domain(IHTMLDocument2 *iface, BSTR *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_cookie(IHTMLDocument2 *iface, BSTR v)
{
- FIXME("(%p)->(%s)\n", iface, debugstr_w(v));
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%s)\n", This, debugstr_w(v));
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_cookie(IHTMLDocument2 *iface, BSTR *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_expando(IHTMLDocument2 *iface, VARIANT_BOOL v)
{
- FIXME("(%p)->(%x)\n", iface, v);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%x)\n", This, v);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_expando(IHTMLDocument2 *iface, VARIANT_BOOL *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_charset(IHTMLDocument2 *iface, BSTR v)
{
- FIXME("(%p)->(%s)\n", iface, debugstr_w(v));
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%s)\n", This, debugstr_w(v));
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_charset(IHTMLDocument2 *iface, BSTR *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_defaultCharset(IHTMLDocument2 *iface, BSTR v)
{
- FIXME("(%p)->(%s)\n", iface, debugstr_w(v));
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%s)\n", This, debugstr_w(v));
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_defaultCharset(IHTMLDocument2 *iface, BSTR *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_mimeType(IHTMLDocument2 *iface, BSTR *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_fileSize(IHTMLDocument2 *iface, BSTR *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_fileCreatedDate(IHTMLDocument2 *iface, BSTR *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_fileModifiedDate(IHTMLDocument2 *iface, BSTR *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_fileUpdatedDate(IHTMLDocument2 *iface, BSTR *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_security(IHTMLDocument2 *iface, BSTR *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_protocol(IHTMLDocument2 *iface, BSTR *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_nameProp(IHTMLDocument2 *iface, BSTR *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
@@ -747,300 +788,371 @@ static HRESULT WINAPI HTMLDocument_write(IHTMLDocument2 *iface, SAFEARRAY *psarr
static HRESULT WINAPI HTMLDocument_writeln(IHTMLDocument2 *iface, SAFEARRAY *psarray)
{
- FIXME("(%p)->(%p)\n", iface, psarray);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, psarray);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_open(IHTMLDocument2 *iface, BSTR url, VARIANT name,
VARIANT features, VARIANT replace, IDispatch **pomWindowResult)
{
- FIXME("(%p)->(%s %p)\n", iface, debugstr_w(url), pomWindowResult);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%s %p)\n", This, debugstr_w(url), pomWindowResult);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_close(IHTMLDocument2 *iface)
{
- FIXME("(%p)\n", iface);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_clear(IHTMLDocument2 *iface)
{
- FIXME("(%p)\n", iface);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_queryCommandSupported(IHTMLDocument2 *iface, BSTR cmdID,
VARIANT_BOOL *pfRet)
{
- FIXME("(%p)->(%s %p)\n", iface, debugstr_w(cmdID), pfRet);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%s %p)\n", This, debugstr_w(cmdID), pfRet);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_queryCommandEnabled(IHTMLDocument2 *iface, BSTR cmdID,
VARIANT_BOOL *pfRet)
{
- FIXME("(%p)->(%s %p)\n", iface, debugstr_w(cmdID), pfRet);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%s %p)\n", This, debugstr_w(cmdID), pfRet);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_queryCommandState(IHTMLDocument2 *iface, BSTR cmdID,
VARIANT_BOOL *pfRet)
{
- FIXME("(%p)->(%s %p)\n", iface, debugstr_w(cmdID), pfRet);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%s %p)\n", This, debugstr_w(cmdID), pfRet);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_queryCommandIndeterm(IHTMLDocument2 *iface, BSTR cmdID,
VARIANT_BOOL *pfRet)
{
- FIXME("(%p)->(%s %p)\n", iface, debugstr_w(cmdID), pfRet);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%s %p)\n", This, debugstr_w(cmdID), pfRet);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_queryCommandText(IHTMLDocument2 *iface, BSTR cmdID,
BSTR *pfRet)
{
- FIXME("(%p)->(%s %p)\n", iface, debugstr_w(cmdID), pfRet);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%s %p)\n", This, debugstr_w(cmdID), pfRet);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_queryCommandValue(IHTMLDocument2 *iface, BSTR cmdID,
VARIANT *pfRet)
{
- FIXME("(%p)->(%s %p)\n", iface, debugstr_w(cmdID), pfRet);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%s %p)\n", This, debugstr_w(cmdID), pfRet);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_execCommand(IHTMLDocument2 *iface, BSTR cmdID,
VARIANT_BOOL showUI, VARIANT value, VARIANT_BOOL *pfRet)
{
- FIXME("(%p)->(%s %x %p)\n", iface, debugstr_w(cmdID), showUI, pfRet);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%s %x %p)\n", This, debugstr_w(cmdID), showUI, pfRet);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_execCommandShowHelp(IHTMLDocument2 *iface, BSTR cmdID,
VARIANT_BOOL *pfRet)
{
- FIXME("(%p)->(%s %p)\n", iface, debugstr_w(cmdID), pfRet);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%s %p)\n", This, debugstr_w(cmdID), pfRet);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_createElement(IHTMLDocument2 *iface, BSTR eTag,
IHTMLElement **newElem)
{
- FIXME("(%p)->(%s %p)\n", iface, debugstr_w(eTag), newElem);
- return E_NOTIMPL;
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ nsIDOMDocument *nsdoc;
+ nsIDOMElement *nselem;
+ HTMLElement *elem;
+ nsAString tag_str;
+ nsresult nsres;
+
+ TRACE("(%p)->(%s %p)\n", This, debugstr_w(eTag), newElem);
+
+ nsIWebNavigation_GetDocument(This->nscontainer->navigation, &nsdoc);
+
+ nsAString_Init(&tag_str, eTag);
+ nsres = nsIDOMDocument_CreateElement(nsdoc, &tag_str, &nselem);
+ nsAString_Finish(&tag_str);
+ nsIDOMDocument_Release(nsdoc);
+ if(NS_FAILED(nsres)) {
+ ERR("CreateElement failed: %08x\n", nsres);
+ return E_FAIL;
+ }
+
+ elem = HTMLElement_Create(This, (nsIDOMNode*)nselem, TRUE);
+ nsIDOMElement_Release(nselem);
+
+ *newElem = HTMLELEM(elem);
+ IHTMLElement_AddRef(HTMLELEM(elem));
+ return S_OK;
}
static HRESULT WINAPI HTMLDocument_put_onhelp(IHTMLDocument2 *iface, VARIANT v)
{
- FIXME("(%p)\n", iface);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_onhelp(IHTMLDocument2 *iface, VARIANT *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_onclick(IHTMLDocument2 *iface, VARIANT v)
{
- FIXME("(%p)\n", iface);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_onclick(IHTMLDocument2 *iface, VARIANT *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_ondblclick(IHTMLDocument2 *iface, VARIANT v)
{
- FIXME("(%p)\n", iface);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_ondblclick(IHTMLDocument2 *iface, VARIANT *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_onkeyup(IHTMLDocument2 *iface, VARIANT v)
{
- FIXME("(%p)\n", iface);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_onkeyup(IHTMLDocument2 *iface, VARIANT *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_onkeydown(IHTMLDocument2 *iface, VARIANT v)
{
- FIXME("(%p)\n", iface);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_onkeydown(IHTMLDocument2 *iface, VARIANT *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_onkeypress(IHTMLDocument2 *iface, VARIANT v)
{
- FIXME("(%p)\n", iface);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_onkeypress(IHTMLDocument2 *iface, VARIANT *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_onmouseup(IHTMLDocument2 *iface, VARIANT v)
{
- FIXME("(%p)\n", iface);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_onmouseup(IHTMLDocument2 *iface, VARIANT *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_onmousedown(IHTMLDocument2 *iface, VARIANT v)
{
- FIXME("(%p)\n", iface);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_onmousedown(IHTMLDocument2 *iface, VARIANT *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_onmousemove(IHTMLDocument2 *iface, VARIANT v)
{
- FIXME("(%p)\n", iface);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_onmousemove(IHTMLDocument2 *iface, VARIANT *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_onmouseout(IHTMLDocument2 *iface, VARIANT v)
{
- FIXME("(%p)\n", iface);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_onmouseout(IHTMLDocument2 *iface, VARIANT *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_onmouseover(IHTMLDocument2 *iface, VARIANT v)
{
- FIXME("(%p)\n", iface);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_onmouseover(IHTMLDocument2 *iface, VARIANT *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_onreadystatechange(IHTMLDocument2 *iface, VARIANT v)
{
- FIXME("(%p)\n", iface);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_onreadystatechange(IHTMLDocument2 *iface, VARIANT *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_onafterupdate(IHTMLDocument2 *iface, VARIANT v)
{
- FIXME("(%p)\n", iface);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_onafterupdate(IHTMLDocument2 *iface, VARIANT *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_onrowexit(IHTMLDocument2 *iface, VARIANT v)
{
- FIXME("(%p)\n", iface);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_onrowexit(IHTMLDocument2 *iface, VARIANT *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_onrowenter(IHTMLDocument2 *iface, VARIANT v)
{
- FIXME("(%p)\n", iface);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_onrowenter(IHTMLDocument2 *iface, VARIANT *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_ondragstart(IHTMLDocument2 *iface, VARIANT v)
{
- FIXME("(%p)\n", iface);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_ondragstart(IHTMLDocument2 *iface, VARIANT *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_onselectstart(IHTMLDocument2 *iface, VARIANT v)
{
- FIXME("(%p)\n", iface);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_onselectstart(IHTMLDocument2 *iface, VARIANT *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_elementFromPoint(IHTMLDocument2 *iface, long x, long y,
IHTMLElement **elementHit)
{
- FIXME("(%p)->(%ld %ld %p)\n", iface, x, y, elementHit);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%ld %ld %p)\n", This, x, y, elementHit);
return E_NOTIMPL;
}
@@ -1094,31 +1206,36 @@ static HRESULT WINAPI HTMLDocument_get_styleSheets(IHTMLDocument2 *iface,
static HRESULT WINAPI HTMLDocument_put_onbeforeupdate(IHTMLDocument2 *iface, VARIANT v)
{
- FIXME("(%p)\n", iface);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_onbeforeupdate(IHTMLDocument2 *iface, VARIANT *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_put_onerrorupdate(IHTMLDocument2 *iface, VARIANT v)
{
- FIXME("(%p)\n", iface);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_get_onerrorupdate(IHTMLDocument2 *iface, VARIANT *p)
{
- FIXME("(%p)->(%p)\n", iface, p);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDocument_toString(IHTMLDocument2 *iface, BSTR *String)
{
- FIXME("(%p)->(%p)\n", iface, String);
+ HTMLDocument *This = HTMLDOC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, String);
return E_NOTIMPL;
}
@@ -1252,6 +1369,169 @@ static const IHTMLDocument2Vtbl HTMLDocumentVtbl = {
HTMLDocument_createStyleSheet
};
+#define DISPEX_THIS(iface) DEFINE_THIS(HTMLDocument, IDispatchEx, iface)
+
+static HRESULT WINAPI DocDispatchEx_QueryInterface(IDispatchEx *iface, REFIID riid, void **ppv)
+{
+ HTMLDocument *This = DISPEX_THIS(iface);
+
+ return IHTMLDocument2_QueryInterface(HTMLDOC(This), riid, ppv);
+}
+
+static ULONG WINAPI DocDispatchEx_AddRef(IDispatchEx *iface)
+{
+ HTMLDocument *This = DISPEX_THIS(iface);
+
+ return IHTMLDocument2_AddRef(HTMLDOC(This));
+}
+
+static ULONG WINAPI DocDispatchEx_Release(IDispatchEx *iface)
+{
+ HTMLDocument *This = DISPEX_THIS(iface);
+
+ return IHTMLDocument2_Release(HTMLDOC(This));
+}
+
+static HRESULT WINAPI DocDispatchEx_GetTypeInfoCount(IDispatchEx *iface, UINT *pctinfo)
+{
+ HTMLDocument *This = DISPEX_THIS(iface);
+
+ return IDispatchEx_GetTypeInfoCount(DISPATCHEX(&This->dispex), pctinfo);
+}
+
+static HRESULT WINAPI DocDispatchEx_GetTypeInfo(IDispatchEx *iface, UINT iTInfo,
+ LCID lcid, ITypeInfo **ppTInfo)
+{
+ HTMLDocument *This = DISPEX_THIS(iface);
+
+ return IDispatchEx_GetTypeInfo(DISPATCHEX(&This->dispex), iTInfo, lcid, ppTInfo);
+}
+
+static HRESULT WINAPI DocDispatchEx_GetIDsOfNames(IDispatchEx *iface, REFIID riid,
+ LPOLESTR *rgszNames, UINT cNames,
+ LCID lcid, DISPID *rgDispId)
+{
+ HTMLDocument *This = DISPEX_THIS(iface);
+
+ return IDispatchEx_GetIDsOfNames(DISPATCHEX(&This->dispex), riid, rgszNames, cNames, lcid, rgDispId);
+}
+
+static HRESULT WINAPI DocDispatchEx_Invoke(IDispatchEx *iface, DISPID dispIdMember,
+ REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
+ VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
+{
+ HTMLDocument *This = DISPEX_THIS(iface);
+
+ TRACE("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
+ lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+
+ switch(dispIdMember) {
+ case DISPID_READYSTATE:
+ TRACE("DISPID_READYSTATE\n");
+
+ if(!(wFlags & DISPATCH_PROPERTYGET))
+ return E_INVALIDARG;
+
+ V_VT(pVarResult) = VT_I4;
+ V_I4(pVarResult) = This->readystate;
+ return S_OK;
+ }
+
+ return IDispatchEx_Invoke(DISPATCHEX(&This->dispex), dispIdMember, riid, lcid, wFlags, pDispParams,
+ pVarResult, pExcepInfo, puArgErr);
+}
+
+static HRESULT WINAPI DocDispatchEx_GetDispID(IDispatchEx *iface, BSTR bstrName, DWORD grfdex, DISPID *pid)
+{
+ HTMLDocument *This = DISPEX_THIS(iface);
+
+ return IDispatchEx_GetDispID(DISPATCHEX(&This->dispex), bstrName, grfdex, pid);
+}
+
+static HRESULT WINAPI DocDispatchEx_InvokeEx(IDispatchEx *iface, DISPID id, LCID lcid, WORD wFlags, DISPPARAMS *pdp,
+ VARIANT *pvarRes, EXCEPINFO *pei, IServiceProvider *pspCaller)
+{
+ HTMLDocument *This = DISPEX_THIS(iface);
+
+ return IDispatchEx_InvokeEx(DISPATCHEX(&This->dispex), id, lcid, wFlags, pdp, pvarRes, pei, pspCaller);
+}
+
+static HRESULT WINAPI DocDispatchEx_DeleteMemberByName(IDispatchEx *iface, BSTR bstrName, DWORD grfdex)
+{
+ HTMLDocument *This = DISPEX_THIS(iface);
+
+ return IDispatchEx_DeleteMemberByName(DISPATCHEX(&This->dispex), bstrName, grfdex);
+}
+
+static HRESULT WINAPI DocDispatchEx_DeleteMemberByDispID(IDispatchEx *iface, DISPID id)
+{
+ HTMLDocument *This = DISPEX_THIS(iface);
+
+ return IDispatchEx_DeleteMemberByDispID(DISPATCHEX(&This->dispex), id);
+}
+
+static HRESULT WINAPI DocDispatchEx_GetMemberProperties(IDispatchEx *iface, DISPID id, DWORD grfdexFetch, DWORD *pgrfdex)
+{
+ HTMLDocument *This = DISPEX_THIS(iface);
+
+ return IDispatchEx_GetMemberProperties(DISPATCHEX(&This->dispex), id, grfdexFetch, pgrfdex);
+}
+
+static HRESULT WINAPI DocDispatchEx_GetMemberName(IDispatchEx *iface, DISPID id, BSTR *pbstrName)
+{
+ HTMLDocument *This = DISPEX_THIS(iface);
+
+ return IDispatchEx_GetMemberName(DISPATCHEX(&This->dispex), id, pbstrName);
+}
+
+static HRESULT WINAPI DocDispatchEx_GetNextDispID(IDispatchEx *iface, DWORD grfdex, DISPID id, DISPID *pid)
+{
+ HTMLDocument *This = DISPEX_THIS(iface);
+
+ return IDispatchEx_GetNextDispID(DISPATCHEX(&This->dispex), grfdex, id, pid);
+}
+
+static HRESULT WINAPI DocDispatchEx_GetNameSpaceParent(IDispatchEx *iface, IUnknown **ppunk)
+{
+ HTMLDocument *This = DISPEX_THIS(iface);
+
+ return IDispatchEx_GetNameSpaceParent(DISPATCHEX(&This->dispex), ppunk);
+}
+
+#undef DISPEX_THIS
+
+static const IDispatchExVtbl DocDispatchExVtbl = {
+ DocDispatchEx_QueryInterface,
+ DocDispatchEx_AddRef,
+ DocDispatchEx_Release,
+ DocDispatchEx_GetTypeInfoCount,
+ DocDispatchEx_GetTypeInfo,
+ DocDispatchEx_GetIDsOfNames,
+ DocDispatchEx_Invoke,
+ DocDispatchEx_GetDispID,
+ DocDispatchEx_InvokeEx,
+ DocDispatchEx_DeleteMemberByName,
+ DocDispatchEx_DeleteMemberByDispID,
+ DocDispatchEx_GetMemberProperties,
+ DocDispatchEx_GetMemberName,
+ DocDispatchEx_GetNextDispID,
+ DocDispatchEx_GetNameSpaceParent
+};
+
+static const tid_t HTMLDocument_iface_tids[] = {
+ IHTMLDocument2_tid,
+ IHTMLDocument3_tid,
+ IHTMLDocument4_tid,
+ IHTMLDocument5_tid,
+ 0
+};
+static dispex_static_data_t HTMLDocument_dispex = {
+ NULL,
+ DispHTMLDocument_tid,
+ NULL,
+ HTMLDocument_iface_tids
+};
+
HRESULT HTMLDocument_Create(IUnknown *pUnkOuter, REFIID riid, void** ppvObject)
{
HTMLDocument *ret;
@@ -1261,6 +1541,7 @@ HRESULT HTMLDocument_Create(IUnknown *pUnkOuter, REFIID riid, void** ppvObject)
ret = heap_alloc_zero(sizeof(HTMLDocument));
ret->lpHTMLDocument2Vtbl = &HTMLDocumentVtbl;
+ ret->lpIDispatchExVtbl = &DocDispatchExVtbl;
ret->ref = 0;
ret->readystate = READYSTATE_UNINITIALIZED;
@@ -1292,6 +1573,8 @@ HRESULT HTMLDocument_Create(IUnknown *pUnkOuter, REFIID riid, void** ppvObject)
ConnectionPoint_Init(&ret->cp_htmldocevents, &ret->cp_container, &DIID_HTMLDocumentEvents);
ConnectionPoint_Init(&ret->cp_htmldocevents2, &ret->cp_container, &DIID_HTMLDocumentEvents2);
+ init_dispex(&ret->dispex, (IUnknown*)HTMLDOC(ret), &HTMLDocument_dispex);
+
ret->nscontainer = NSContainer_Create(ret, NULL);
ret->window = HTMLWindow_Create(ret);
diff --git a/reactos/dll/win32/mshtml/htmldoc3.c b/reactos/dll/win32/mshtml/htmldoc3.c
index 43880008280..92ed1cc3247 100644
--- a/reactos/dll/win32/mshtml/htmldoc3.c
+++ b/reactos/dll/win32/mshtml/htmldoc3.c
@@ -108,8 +108,31 @@ static HRESULT WINAPI HTMLDocument3_createTextNode(IHTMLDocument3 *iface, BSTR t
IHTMLDOMNode **newTextNode)
{
HTMLDocument *This = HTMLDOC3_THIS(iface);
- FIXME("(%p)->(%s %p)\n", This, debugstr_w(text), newTextNode);
- return E_NOTIMPL;
+ nsIDOMDocument *nsdoc;
+ nsIDOMText *nstext;
+ HTMLDOMNode *node;
+ nsAString text_str;
+ nsresult nsres;
+
+ TRACE("(%p)->(%s %p)\n", This, debugstr_w(text), newTextNode);
+
+ nsIWebNavigation_GetDocument(This->nscontainer->navigation, &nsdoc);
+
+ nsAString_Init(&text_str, text);
+ nsres = nsIDOMDocument_CreateTextNode(nsdoc, &text_str, &nstext);
+ nsAString_Finish(&text_str);
+ nsIDOMDocument_Release(nsdoc);
+ if(NS_FAILED(nsres)) {
+ ERR("CreateTextNode failed: %08x\n", nsres);
+ return E_FAIL;
+ }
+
+ node = HTMLDOMTextNode_Create(This, (nsIDOMNode*)nstext);
+ nsIDOMElement_Release(nstext);
+
+ *newTextNode = HTMLDOMNODE(node);
+ IHTMLDOMNode_AddRef(HTMLDOMNODE(node));
+ return S_OK;
}
static HRESULT WINAPI HTMLDocument3_get_documentElement(IHTMLDocument3 *iface, IHTMLElement **p)
@@ -137,7 +160,7 @@ static HRESULT WINAPI HTMLDocument3_get_documentElement(IHTMLDocument3 *iface, I
ERR("GetDocumentElement failed: %08x\n", nsres);
}
if(nselem) {
- node = get_node(This, (nsIDOMNode *)nselem);
+ node = get_node(This, (nsIDOMNode *)nselem, TRUE);
nsIDOMDocument_Release(nsdoc);
IHTMLDOMNode_QueryInterface(HTMLDOMNODE(node), &IID_IHTMLElement, (void**)p);
@@ -407,8 +430,37 @@ static HRESULT WINAPI HTMLDocument3_getElementById(IHTMLDocument3 *iface, BSTR v
IHTMLElement **pel)
{
HTMLDocument *This = HTMLDOC3_THIS(iface);
- FIXME("(%p)->(%s %p)\n", This, debugstr_w(v), pel);
- return E_NOTIMPL;
+ nsIDOMDocument *nsdoc = NULL;
+ nsIDOMElement *nselem = NULL;
+ HTMLDOMNode *node;
+ nsAString id_str;
+ nsresult nsres;
+
+ TRACE("(%p)->(%s %p)\n", This, debugstr_w(v), pel);
+
+ *pel = NULL;
+
+ if(!This->nscontainer)
+ return S_OK;
+
+ nsres = nsIWebNavigation_GetDocument(This->nscontainer->navigation, &nsdoc);
+ if(NS_FAILED(nsres) || !nsdoc)
+ return S_OK;
+
+ nsAString_Init(&id_str, v);
+ nsIDOMDocument_GetElementById(nsdoc, &id_str, &nselem);
+ nsIDOMDocument_Release(nsdoc);
+ nsAString_Finish(&id_str);
+
+ if(!nselem) {
+ *pel = NULL;
+ return S_OK;
+ }
+
+ node = get_node(This, (nsIDOMNode*)nselem, TRUE);
+ nsIDOMElement_Release(nselem);
+
+ return IHTMLDOMNode_QueryInterface(HTMLDOMNODE(node), &IID_IHTMLElement, (void**)pel);
}
diff --git a/reactos/dll/win32/mshtml/htmlelem.c b/reactos/dll/win32/mshtml/htmlelem.c
index b7fac23ea91..5f67356338b 100644
--- a/reactos/dll/win32/mshtml/htmlelem.c
+++ b/reactos/dll/win32/mshtml/htmlelem.c
@@ -65,6 +65,15 @@ static void elem_vector_normalize(elem_vector *buf)
buf->size = buf->len;
}
+static BOOL is_elem_node(nsIDOMNode *node)
+{
+ PRUint16 type=0;
+
+ nsIDOMNode_GetNodeType(node, &type);
+
+ return type == ELEMENT_NODE || type == COMMENT_NODE;
+}
+
#define HTMLELEM_THIS(iface) DEFINE_THIS(HTMLElement, HTMLElement, iface)
#define HTMLELEM_NODE_THIS(iface) DEFINE_THIS2(HTMLElement, node, iface)
@@ -138,6 +147,11 @@ static HRESULT WINAPI HTMLElement_setAttribute(IHTMLElement *iface, BSTR strAttr
WARN("(%p)->(%s . %08x)\n", This, debugstr_w(strAttributeName), lFlags);
+ if(!This->nselem) {
+ FIXME("NULL nselem\n");
+ return E_NOTIMPL;
+ }
+
VariantInit(&AttributeValueChanged);
hres = VariantChangeType(&AttributeValueChanged, &AttributeValue, 0, VT_BSTR);
@@ -178,7 +192,13 @@ static HRESULT WINAPI HTMLElement_getAttribute(IHTMLElement *iface, BSTR strAttr
WARN("(%p)->(%s %08x %p)\n", This, debugstr_w(strAttributeName), lFlags, AttributeValue);
- VariantInit(AttributeValue);
+ if(!This->nselem) {
+ FIXME("NULL nselem\n");
+ V_VT(AttributeValue) = VT_NULL;
+ return S_OK;
+ }
+
+ V_VT(AttributeValue) = VT_NULL;
nsAString_Init(&attr_str, strAttributeName);
nsAString_Init(&value_str, NULL);
@@ -206,7 +226,7 @@ static HRESULT WINAPI HTMLElement_getAttribute(IHTMLElement *iface, BSTR strAttr
TRACE("attr_value=%s\n", debugstr_w(V_BSTR(AttributeValue)));
}
}
- }else {
+ }else if(*value) {
V_VT(AttributeValue) = VT_BSTR;
V_BSTR(AttributeValue) = SysAllocString(value);
TRACE("attr_value=%s\n", debugstr_w(V_BSTR(AttributeValue)));
@@ -232,8 +252,23 @@ static HRESULT WINAPI HTMLElement_removeAttribute(IHTMLElement *iface, BSTR strA
static HRESULT WINAPI HTMLElement_put_className(IHTMLElement *iface, BSTR v)
{
HTMLElement *This = HTMLELEM_THIS(iface);
- FIXME("(%p)->(%s)\n", This, debugstr_w(v));
- return E_NOTIMPL;
+ nsAString classname_str;
+ nsresult nsres;
+
+ TRACE("(%p)->(%s)\n", This, debugstr_w(v));
+
+ if(!This->nselem) {
+ FIXME("NULL nselem\n");
+ return E_NOTIMPL;
+ }
+
+ nsAString_Init(&classname_str, v);
+ nsres = nsIDOMHTMLElement_SetClassName(This->nselem, &classname_str);
+ nsAString_Finish(&classname_str);
+ if(NS_FAILED(nsres))
+ ERR("SetClassName failed: %08x\n", nsres);
+
+ return S_OK;
}
static HRESULT WINAPI HTMLElement_get_className(IHTMLElement *iface, BSTR *p)
@@ -245,13 +280,18 @@ static HRESULT WINAPI HTMLElement_get_className(IHTMLElement *iface, BSTR *p)
TRACE("(%p)->(%p)\n", This, p);
+ if(!This->nselem) {
+ FIXME("NULL nselem\n");
+ return E_NOTIMPL;
+ }
+
nsAString_Init(&class_str, NULL);
nsres = nsIDOMHTMLElement_GetClassName(This->nselem, &class_str);
if(NS_SUCCEEDED(nsres)) {
const PRUnichar *class;
nsAString_GetData(&class_str, &class);
- *p = SysAllocString(class);
+ *p = *class ? SysAllocString(class) : NULL;
}else {
ERR("GetClassName failed: %08x\n", nsres);
hres = E_FAIL;
@@ -266,15 +306,50 @@ static HRESULT WINAPI HTMLElement_get_className(IHTMLElement *iface, BSTR *p)
static HRESULT WINAPI HTMLElement_put_id(IHTMLElement *iface, BSTR v)
{
HTMLElement *This = HTMLELEM_THIS(iface);
- FIXME("(%p)->(%s)\n", This, debugstr_w(v));
- return E_NOTIMPL;
+ nsAString id_str;
+ nsresult nsres;
+
+ TRACE("(%p)->(%s)\n", This, debugstr_w(v));
+
+ if(!This->nselem) {
+ FIXME("nselem == NULL\n");
+ return S_OK;
+ }
+
+ nsAString_Init(&id_str, v);
+ nsres = nsIDOMHTMLElement_SetId(This->nselem, &id_str);
+ nsAString_Finish(&id_str);
+ if(NS_FAILED(nsres))
+ ERR("SetId failed: %08x\n", nsres);
+
+ return S_OK;
}
static HRESULT WINAPI HTMLElement_get_id(IHTMLElement *iface, BSTR *p)
{
HTMLElement *This = HTMLELEM_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+ const PRUnichar *id;
+ nsAString id_str;
+ nsresult nsres;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ *p = NULL;
+
+ if(!This->nselem)
+ return S_OK;
+
+ nsAString_Init(&id_str, NULL);
+ nsres = nsIDOMHTMLElement_GetId(This->nselem, &id_str);
+ nsAString_GetData(&id_str, &id);
+
+ if(NS_FAILED(nsres))
+ ERR("GetId failed: %08x\n", nsres);
+ else if(*id)
+ *p = SysAllocString(id);
+
+ nsAString_Finish(&id_str);
+ return S_OK;
}
static HRESULT WINAPI HTMLElement_get_tagName(IHTMLElement *iface, BSTR *p)
@@ -286,6 +361,15 @@ static HRESULT WINAPI HTMLElement_get_tagName(IHTMLElement *iface, BSTR *p)
TRACE("(%p)->(%p)\n", This, p);
+ if(!This->nselem) {
+ static const WCHAR comment_tagW[] = {'!',0};
+
+ WARN("NULL nselem, assuming comment\n");
+
+ *p = SysAllocString(comment_tagW);
+ return S_OK;
+ }
+
nsAString_Init(&tag_str, NULL);
nsres = nsIDOMHTMLElement_GetTagName(This->nselem, &tag_str);
if(NS_SUCCEEDED(nsres)) {
@@ -316,6 +400,11 @@ static HRESULT WINAPI HTMLElement_get_style(IHTMLElement *iface, IHTMLStyle **p)
TRACE("(%p)->(%p)\n", This, p);
+ if(!This->nselem) {
+ FIXME("NULL nselem\n");
+ return E_NOTIMPL;
+ }
+
nsres = nsIDOMHTMLElement_QueryInterface(This->nselem, &IID_nsIDOMElementCSSInlineStyle,
(void**)&nselemstyle);
if(NS_FAILED(nsres)) {
@@ -354,8 +443,10 @@ static HRESULT WINAPI HTMLElement_get_onhelp(IHTMLElement *iface, VARIANT *p)
static HRESULT WINAPI HTMLElement_put_onclick(IHTMLElement *iface, VARIANT v)
{
HTMLElement *This = HTMLELEM_THIS(iface);
- FIXME("(%p)->()\n", This);
- return E_NOTIMPL;
+
+ TRACE("(%p)->()\n", This);
+
+ return set_node_event(&This->node, EVENTID_CLICK, &v);
}
static HRESULT WINAPI HTMLElement_get_onclick(IHTMLElement *iface, VARIANT *p)
@@ -396,8 +487,10 @@ static HRESULT WINAPI HTMLElement_get_onkeydown(IHTMLElement *iface, VARIANT *p)
static HRESULT WINAPI HTMLElement_put_onkeyup(IHTMLElement *iface, VARIANT v)
{
HTMLElement *This = HTMLELEM_THIS(iface);
- FIXME("(%p)->()\n", This);
- return E_NOTIMPL;
+
+ TRACE("(%p)->()\n", This);
+
+ return set_node_event(&This->node, EVENTID_KEYUP, &v);
}
static HRESULT WINAPI HTMLElement_get_onkeyup(IHTMLElement *iface, VARIANT *p)
@@ -501,15 +594,41 @@ static HRESULT WINAPI HTMLElement_get_document(IHTMLElement *iface, IDispatch **
static HRESULT WINAPI HTMLElement_put_title(IHTMLElement *iface, BSTR v)
{
HTMLElement *This = HTMLELEM_THIS(iface);
- FIXME("(%p)->(%s)\n", This, debugstr_w(v));
- return E_NOTIMPL;
+ nsAString title_str;
+ nsresult nsres;
+
+ TRACE("(%p)->(%s)\n", This, debugstr_w(v));
+
+ nsAString_Init(&title_str, v);
+ nsres = nsIDOMHTMLElement_SetTitle(This->nselem, &title_str);
+ nsAString_Finish(&title_str);
+ if(NS_FAILED(nsres))
+ ERR("SetTitle failed: %08x\n", nsres);
+
+ return S_OK;
}
static HRESULT WINAPI HTMLElement_get_title(IHTMLElement *iface, BSTR *p)
{
HTMLElement *This = HTMLELEM_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+ nsAString title_str;
+ nsresult nsres;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ nsAString_Init(&title_str, NULL);
+ nsres = nsIDOMHTMLElement_GetTitle(This->nselem, &title_str);
+ if(NS_SUCCEEDED(nsres)) {
+ const PRUnichar *title;
+
+ nsAString_GetData(&title_str, &title);
+ *p = *title ? SysAllocString(title) : NULL;
+ }else {
+ ERR("GetTitle failed: %08x\n", nsres);
+ return E_FAIL;
+ }
+
+ return S_OK;
}
static HRESULT WINAPI HTMLElement_put_language(IHTMLElement *iface, BSTR v)
@@ -593,8 +712,27 @@ static HRESULT WINAPI HTMLElement_get_offsetLeft(IHTMLElement *iface, long *p)
static HRESULT WINAPI HTMLElement_get_offsetTop(IHTMLElement *iface, long *p)
{
HTMLElement *This = HTMLELEM_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+ nsIDOMNSHTMLElement *nselem;
+ PRInt32 top = 0;
+ nsresult nsres;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ nsres = nsIDOMHTMLElement_QueryInterface(This->nselem, &IID_nsIDOMNSHTMLElement, (void**)&nselem);
+ if(NS_FAILED(nsres)) {
+ ERR("Could not get nsIDOMNSHTMLElement: %08x\n", nsres);
+ return E_FAIL;
+ }
+
+ nsres = nsIDOMNSHTMLElement_GetOffsetTop(nselem, &top);
+ nsIDOMNSHTMLElement_Release(nselem);
+ if(NS_FAILED(nsres)) {
+ ERR("GetOffsetTop failed: %08x\n", nsres);
+ return E_FAIL;
+ }
+
+ *p = top;
+ return S_OK;
}
static HRESULT WINAPI HTMLElement_get_offsetWidth(IHTMLElement *iface, long *p)
@@ -627,6 +765,11 @@ static HRESULT WINAPI HTMLElement_put_innerHTML(IHTMLElement *iface, BSTR v)
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
+ if(!This->nselem) {
+ FIXME("NULL nselem\n");
+ return E_NOTIMPL;
+ }
+
nsres = nsIDOMHTMLElement_QueryInterface(This->nselem, &IID_nsIDOMNSHTMLElement, (void**)&nselem);
if(NS_FAILED(nsres)) {
ERR("Could not get nsIDOMNSHTMLElement: %08x\n", nsres);
@@ -702,6 +845,11 @@ static HRESULT HTMLElement_InsertAdjacentNode(HTMLElement *This, BSTR where, nsI
static const WCHAR wszAfterEnd[] = {'a','f','t','e','r','E','n','d',0};
nsresult nsres;
+ if(!This->nselem) {
+ FIXME("NULL nselem\n");
+ return E_NOTIMPL;
+ }
+
if (!strcmpiW(where, wszBeforeBegin))
{
nsIDOMNode *unused;
@@ -1042,7 +1190,6 @@ static void create_child_list(HTMLDocument *doc, HTMLElement *elem, elem_vector
nsIDOMNodeList *nsnode_list;
nsIDOMNode *iter;
PRUint32 list_len = 0, i;
- PRUint16 node_type;
nsresult nsres;
nsres = nsIDOMNode_GetChildNodes(elem->node.nsnode, &nsnode_list);
@@ -1065,9 +1212,8 @@ static void create_child_list(HTMLDocument *doc, HTMLElement *elem, elem_vector
continue;
}
- nsres = nsIDOMNode_GetNodeType(iter, &node_type);
- if(NS_SUCCEEDED(nsres) && node_type == ELEMENT_NODE)
- elem_vector_add(buf, HTMLELEM_NODE_THIS(get_node(doc, iter)));
+ if(is_elem_node(iter))
+ elem_vector_add(buf, HTMLELEM_NODE_THIS(get_node(doc, iter, TRUE)));
}
}
@@ -1089,7 +1235,6 @@ static void create_all_list(HTMLDocument *doc, HTMLDOMNode *elem, elem_vector *b
nsIDOMNodeList *nsnode_list;
nsIDOMNode *iter;
PRUint32 list_len = 0, i;
- PRUint16 node_type;
nsresult nsres;
nsres = nsIDOMNode_GetChildNodes(elem->nsnode, &nsnode_list);
@@ -1109,9 +1254,8 @@ static void create_all_list(HTMLDocument *doc, HTMLDOMNode *elem, elem_vector *b
continue;
}
- nsres = nsIDOMNode_GetNodeType(iter, &node_type);
- if(NS_SUCCEEDED(nsres) && node_type == ELEMENT_NODE) {
- HTMLDOMNode *node = get_node(doc, iter);
+ if(is_elem_node(iter)) {
+ HTMLDOMNode *node = get_node(doc, iter, TRUE);
elem_vector_add(buf, HTMLELEM_NODE_THIS(node));
create_all_list(doc, node, buf);
@@ -1282,17 +1426,34 @@ static const NodeImplVtbl HTMLElementImplVtbl = {
HTMLElement_destructor
};
+static const tid_t HTMLElement_iface_tids[] = {
+ IHTMLDOMNode_tid,
+ IHTMLDOMNode2_tid,
+ IHTMLElement_tid,
+ IHTMLElement2_tid,
+ 0
+};
+
+static dispex_static_data_t HTMLElement_dispex = {
+ NULL,
+ DispHTMLUnknownElement_tid,
+ NULL,
+ HTMLElement_iface_tids
+};
+
void HTMLElement_Init(HTMLElement *This)
{
- This->node.vtbl = &HTMLElementImplVtbl;
This->lpHTMLElementVtbl = &HTMLElementVtbl;
ConnectionPointContainer_Init(&This->cp_container, (IUnknown*)HTMLELEM(This));
HTMLElement2_Init(This);
+
+ if(!This->node.dispex.data)
+ init_dispex(&This->node.dispex, (IUnknown*)HTMLELEM(This), &HTMLElement_dispex);
}
-HTMLElement *HTMLElement_Create(nsIDOMNode *nsnode)
+HTMLElement *HTMLElement_Create(HTMLDocument *doc, nsIDOMNode *nsnode, BOOL use_generic)
{
nsIDOMHTMLElement *nselem;
HTMLElement *ret = NULL;
@@ -1302,6 +1463,7 @@ HTMLElement *HTMLElement_Create(nsIDOMNode *nsnode)
static const WCHAR wszA[] = {'A',0};
static const WCHAR wszBODY[] = {'B','O','D','Y',0};
+ static const WCHAR wszIMG[] = {'I','M','G',0};
static const WCHAR wszINPUT[] = {'I','N','P','U','T',0};
static const WCHAR wszOPTION[] = {'O','P','T','I','O','N',0};
static const WCHAR wszSCRIPT[] = {'S','C','R','I','P','T',0};
@@ -1322,6 +1484,8 @@ HTMLElement *HTMLElement_Create(nsIDOMNode *nsnode)
ret = HTMLAnchorElement_Create(nselem);
else if(!strcmpW(class_name, wszBODY))
ret = HTMLBodyElement_Create(nselem);
+ else if(!strcmpW(class_name, wszIMG))
+ ret = HTMLImgElement_Create(nselem);
else if(!strcmpW(class_name, wszINPUT))
ret = HTMLInputElement_Create(nselem);
else if(!strcmpW(class_name, wszOPTION))
@@ -1334,20 +1498,27 @@ HTMLElement *HTMLElement_Create(nsIDOMNode *nsnode)
ret = HTMLTable_Create(nselem);
else if(!strcmpW(class_name, wszTEXTAREA))
ret = HTMLTextAreaElement_Create(nselem);
+ else if(use_generic)
+ ret = HTMLGenericElement_Create(nselem);
if(!ret) {
- ret = heap_alloc(sizeof(HTMLElement));
+ ret = heap_alloc_zero(sizeof(HTMLElement));
HTMLElement_Init(ret);
+ ret->node.vtbl = &HTMLElementImplVtbl;
}
+ TRACE("%s ret %p\n", debugstr_w(class_name), ret);
+
nsAString_Finish(&class_name_str);
ret->nselem = nselem;
+ HTMLDOMNode_Init(doc, &ret->node, (nsIDOMNode*)nselem);
return ret;
}
typedef struct {
+ DispatchEx dispex;
const IHTMLElementCollectionVtbl *lpHTMLElementCollectionVtbl;
IUnknown *ref_unk;
@@ -1371,12 +1542,11 @@ static HRESULT WINAPI HTMLElementCollection_QueryInterface(IHTMLElementCollectio
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = HTMLELEMCOL(This);
- }else if(IsEqualGUID(&IID_IDispatch, riid)) {
- TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
- *ppv = HTMLELEMCOL(This);
}else if(IsEqualGUID(&IID_IHTMLElementCollection, riid)) {
TRACE("(%p)->(IID_IHTMLElementCollection %p)\n", This, ppv);
*ppv = HTMLELEMCOL(This);
+ }else if(dispex_query_interface(&This->dispex, riid, ppv)) {
+ return *ppv ? S_OK : E_NOINTERFACE;
}
if(*ppv) {
@@ -1493,6 +1663,9 @@ static BOOL is_elem_name(HTMLElement *elem, LPCWSTR name)
static const PRUnichar nameW[] = {'n','a','m','e',0};
+ if(!elem->nselem)
+ return FALSE;
+
nsAString_Init(&nsstr, NULL);
nsIDOMHTMLElement_GetId(elem->nselem, &nsstr);
nsAString_GetData(&nsstr, &str);
@@ -1631,6 +1804,51 @@ static HRESULT WINAPI HTMLElementCollection_tags(IHTMLElementCollection *iface,
return S_OK;
}
+#define DISPID_ELEMCOL_0 MSHTML_DISPID_CUSTOM_MIN
+
+static HRESULT HTMLElementCollection_get_dispid(IUnknown *iface, BSTR name, DWORD flags, DISPID *dispid)
+{
+ HTMLElementCollection *This = ELEMCOL_THIS(iface);
+ WCHAR *ptr;
+ DWORD idx=0;
+
+ for(ptr = name; *ptr && isdigitW(*ptr); ptr++)
+ idx = idx*10 + (*ptr-'0');
+
+ if(*ptr || idx >= This->len)
+ return DISP_E_UNKNOWNNAME;
+
+ *dispid = DISPID_ELEMCOL_0 + idx;
+ TRACE("ret %x\n", *dispid);
+ return S_OK;
+}
+
+static HRESULT HTMLElementCollection_invoke(IUnknown *iface, DISPID id, LCID lcid, WORD flags, DISPPARAMS *params,
+ VARIANT *res, EXCEPINFO *ei, IServiceProvider *caller)
+{
+ HTMLElementCollection *This = ELEMCOL_THIS(iface);
+ DWORD idx;
+
+ TRACE("(%p)->(%x %x %x %p %p %p %p)\n", This, id, lcid, flags, params, res, ei, caller);
+
+ idx = id - DISPID_ELEMCOL_0;
+ if(idx >= This->len)
+ return DISP_E_UNKNOWNNAME;
+
+ switch(flags) {
+ case INVOKE_PROPERTYGET:
+ V_VT(res) = VT_DISPATCH;
+ V_DISPATCH(res) = (IDispatch*)HTMLELEM(This->elems[idx]);
+ IHTMLElement_AddRef(HTMLELEM(This->elems[idx]));
+ break;
+ default:
+ FIXME("unimplemented flags %x\n", flags);
+ return E_NOTIMPL;
+ }
+
+ return S_OK;
+}
+
#undef ELEMCOL_THIS
static const IHTMLElementCollectionVtbl HTMLElementCollectionVtbl = {
@@ -1649,6 +1867,22 @@ static const IHTMLElementCollectionVtbl HTMLElementCollectionVtbl = {
HTMLElementCollection_tags
};
+static const dispex_static_data_vtbl_t HTMLElementColection_dispex_vtbl = {
+ HTMLElementCollection_get_dispid,
+ HTMLElementCollection_invoke
+};
+
+static const tid_t HTMLElementCollection_iface_tids[] = {
+ IHTMLElementCollection_tid,
+ 0
+};
+static dispex_static_data_t HTMLElementCollection_dispex = {
+ &HTMLElementColection_dispex_vtbl,
+ DispHTMLElementCollection_tid,
+ NULL,
+ HTMLElementCollection_iface_tids
+};
+
IHTMLElementCollection *create_all_collection(HTMLDOMNode *node)
{
elem_vector buf = {NULL, 0, 8};
@@ -1665,13 +1899,15 @@ IHTMLElementCollection *create_all_collection(HTMLDOMNode *node)
static IHTMLElementCollection *HTMLElementCollection_Create(IUnknown *ref_unk,
HTMLElement **elems, DWORD len)
{
- HTMLElementCollection *ret = heap_alloc(sizeof(HTMLElementCollection));
+ HTMLElementCollection *ret = heap_alloc_zero(sizeof(HTMLElementCollection));
ret->lpHTMLElementCollectionVtbl = &HTMLElementCollectionVtbl;
ret->ref = 1;
ret->elems = elems;
ret->len = len;
+ init_dispex(&ret->dispex, (IUnknown*)HTMLELEMCOL(ret), &HTMLElementCollection_dispex);
+
IUnknown_AddRef(ref_unk);
ret->ref_unk = ref_unk;
diff --git a/reactos/dll/win32/mshtml/htmlelem2.c b/reactos/dll/win32/mshtml/htmlelem2.c
index 01c88fa0e93..d12c60c9b6b 100644
--- a/reactos/dll/win32/mshtml/htmlelem2.c
+++ b/reactos/dll/win32/mshtml/htmlelem2.c
@@ -383,29 +383,82 @@ static HRESULT WINAPI HTMLElement2_removeExpression(IHTMLElement2 *iface, BSTR p
static HRESULT WINAPI HTMLElement2_put_tabIndex(IHTMLElement2 *iface, short v)
{
HTMLElement *This = HTMLELEM2_THIS(iface);
- FIXME("(%p)->(%d)\n", This, v);
- return E_NOTIMPL;
+ nsIDOMNSHTMLElement *nselem;
+ nsresult nsres;
+
+ TRACE("(%p)->(%d)\n", This, v);
+
+ nsres = nsIDOMHTMLElement_QueryInterface(This->nselem, &IID_nsIDOMNSHTMLElement, (void**)&nselem);
+ if(NS_FAILED(nsres)) {
+ ERR("Could not get nsIDOMHTMLNSElement: %08x\n", nsres);
+ return S_OK;
+ }
+
+ nsres = nsIDOMNSHTMLElement_SetTabIndex(nselem, v);
+ nsIDOMNSHTMLElement_Release(nselem);
+ if(NS_FAILED(nsres))
+ ERR("GetTabIndex failed: %08x\n", nsres);
+
+ return S_OK;
}
static HRESULT WINAPI HTMLElement2_get_tabIndex(IHTMLElement2 *iface, short *p)
{
HTMLElement *This = HTMLELEM2_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+ nsIDOMNSHTMLElement *nselem;
+ PRInt32 index = 0;
+ nsresult nsres;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ nsres = nsIDOMHTMLElement_QueryInterface(This->nselem, &IID_nsIDOMNSHTMLElement, (void**)&nselem);
+ if(NS_FAILED(nsres)) {
+ ERR("Could not get nsIDOMHTMLNSElement: %08x\n", nsres);
+ return E_FAIL;
+ }
+
+ nsres = nsIDOMNSHTMLElement_GetTabIndex(nselem, &index);
+ nsIDOMNSHTMLElement_Release(nselem);
+ if(NS_FAILED(nsres)) {
+ ERR("GetTabIndex failed: %08x\n", nsres);
+ return E_FAIL;
+ }
+
+ *p = index;
+ return S_OK;
}
static HRESULT WINAPI HTMLElement2_focus(IHTMLElement2 *iface)
{
HTMLElement *This = HTMLELEM2_THIS(iface);
- FIXME("(%p)\n", This);
- return E_NOTIMPL;
+ nsIDOMNSHTMLElement *nselem;
+ nsresult nsres;
+
+ TRACE("(%p)\n", This);
+
+ nsres = nsIDOMHTMLElement_QueryInterface(This->nselem, &IID_nsIDOMNSHTMLElement, (void**)&nselem);
+ if(NS_SUCCEEDED(nsres)) {
+ nsIDOMNSHTMLElement_focus(nselem);
+ nsIDOMNSHTMLElement_Release(nselem);
+ }else {
+ ERR("Could not get nsIDOMHTMLNSElement: %08x\n", nsres);
+ }
+
+ return S_OK;
}
static HRESULT WINAPI HTMLElement2_put_accessKey(IHTMLElement2 *iface, BSTR v)
{
HTMLElement *This = HTMLELEM2_THIS(iface);
- FIXME("(%p)->(%s)\n", This, debugstr_w(v));
- return E_NOTIMPL;
+ VARIANT var;
+
+ static WCHAR accessKeyW[] = {'a','c','c','e','s','s','K','e','y',0};
+
+ TRACE("(%p)->(%s)\n", This, debugstr_w(v));
+
+ V_VT(&var) = VT_BSTR;
+ V_BSTR(&var) = v;
+ return IHTMLElement_setAttribute(HTMLELEM(This), accessKeyW, var, 0);
}
static HRESULT WINAPI HTMLElement2_get_accessKey(IHTMLElement2 *iface, BSTR *p)
@@ -481,15 +534,43 @@ static HRESULT WINAPI HTMLElement2_removeFilter(IHTMLElement2 *iface, IUnknown *
static HRESULT WINAPI HTMLElement2_get_clientHeight(IHTMLElement2 *iface, long *p)
{
HTMLElement *This = HTMLELEM2_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+ nsIDOMNSHTMLElement *nselem;
+ PRInt32 height=0;
+ nsresult nsres;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ nsres = nsIDOMHTMLElement_QueryInterface(This->nselem, &IID_nsIDOMNSHTMLElement, (void**)&nselem);
+ if(NS_SUCCEEDED(nsres)) {
+ nsIDOMNSHTMLElement_GetClientHeight(nselem, &height);
+ nsIDOMNSHTMLElement_Release(nselem);
+ }else {
+ ERR("Could not get nsIDOMHTMLNSElement: %08x\n", nsres);
+ }
+
+ *p = height;
+ return S_OK;
}
static HRESULT WINAPI HTMLElement2_get_clientWidth(IHTMLElement2 *iface, long *p)
{
HTMLElement *This = HTMLELEM2_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+ nsIDOMNSHTMLElement *nselem;
+ PRInt32 width=0;
+ nsresult nsres;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ nsres = nsIDOMHTMLElement_QueryInterface(This->nselem, &IID_nsIDOMNSHTMLElement, (void**)&nselem);
+ if(NS_SUCCEEDED(nsres)) {
+ nsIDOMNSHTMLElement_GetClientWidth(nselem, &width);
+ nsIDOMNSHTMLElement_Release(nselem);
+ }else {
+ ERR("Could not get nsIDOMHTMLNSElement: %08x\n", nsres);
+ }
+
+ *p = width;
+ return S_OK;
}
static HRESULT WINAPI HTMLElement2_get_clientTop(IHTMLElement2 *iface, long *p)
@@ -651,6 +732,11 @@ static HRESULT WINAPI HTMLElement2_put_scrollTop(IHTMLElement2 *iface, long v)
TRACE("(%p)->(%ld)\n", This, v);
+ if(!This->nselem) {
+ FIXME("NULL nselem\n");
+ return E_NOTIMPL;
+ }
+
nsres = nsIDOMHTMLElement_QueryInterface(This->nselem, &IID_nsIDOMNSHTMLElement, (void**)&nselem);
if(NS_SUCCEEDED(nsres)) {
nsIDOMNSHTMLElement_SetScrollTop(nselem, v);
@@ -677,6 +763,11 @@ static HRESULT WINAPI HTMLElement2_put_scrollLeft(IHTMLElement2 *iface, long v)
TRACE("(%p)->(%ld)\n", This, v);
+ if(!This->nselem) {
+ FIXME("NULL nselem\n");
+ return E_NOTIMPL;
+ }
+
nsres = nsIDOMHTMLElement_QueryInterface(This->nselem, &IID_nsIDOMNSHTMLElement, (void**)&nselem);
if(NS_SUCCEEDED(nsres)) {
nsIDOMNSHTMLElement_SetScrollLeft(nselem, v);
diff --git a/reactos/dll/win32/mshtml/htmlevent.c b/reactos/dll/win32/mshtml/htmlevent.c
new file mode 100644
index 00000000000..f98e3a15c53
--- /dev/null
+++ b/reactos/dll/win32/mshtml/htmlevent.c
@@ -0,0 +1,490 @@
+/*
+ * 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 "mshtml_private.h"
+
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
+
+struct event_target_t {
+ IDispatch *event_table[EVENTID_LAST];
+};
+
+static const WCHAR changeW[] = {'c','h','a','n','g','e',0};
+static const WCHAR onchangeW[] = {'o','n','c','h','a','n','g','e',0};
+
+static const WCHAR clickW[] = {'c','l','i','c','k',0};
+static const WCHAR onclickW[] = {'o','n','c','l','i','c','k',0};
+
+static const WCHAR keyupW[] = {'k','e','y','u','p',0};
+static const WCHAR onkeyupW[] = {'o','n','k','e','y','u','p',0};
+
+static const WCHAR loadW[] = {'l','o','a','d',0};
+static const WCHAR onloadW[] = {'o','n','l','o','a','d',0};
+
+typedef struct {
+ LPCWSTR name;
+ LPCWSTR attr_name;
+ DWORD flags;
+} event_info_t;
+
+#define EVENT_DEFAULTLISTENER 0x0001
+
+static const event_info_t event_info[] = {
+ {changeW, onchangeW, EVENT_DEFAULTLISTENER},
+ {clickW, onclickW, EVENT_DEFAULTLISTENER},
+ {keyupW, onkeyupW, EVENT_DEFAULTLISTENER},
+ {loadW, onloadW, 0}
+};
+
+eventid_t str_to_eid(LPCWSTR str)
+{
+ int i;
+
+ for(i=0; i < sizeof(event_info)/sizeof(event_info[0]); i++) {
+ if(!strcmpW(event_info[i].name, str))
+ return i;
+ }
+
+ ERR("unknown type %s\n", debugstr_w(str));
+ return EVENTID_LAST;
+}
+
+typedef struct {
+ const IHTMLEventObjVtbl *lpIHTMLEventObjVtbl;
+ LONG ref;
+} HTMLEventObj;
+
+#define HTMLEVENTOBJ(x) ((IHTMLEventObj*) &(x)->lpIHTMLEventObjVtbl)
+
+#define HTMLEVENTOBJ_THIS(iface) DEFINE_THIS(HTMLEventObj, IHTMLEventObj, iface)
+
+static HRESULT WINAPI HTMLEventObj_QueryInterface(IHTMLEventObj *iface, REFIID riid, void **ppv)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+
+ *ppv = NULL;
+
+ if(IsEqualGUID(&IID_IUnknown, riid)) {
+ TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
+ *ppv = HTMLEVENTOBJ(This);
+ }else if(IsEqualGUID(&IID_IDispatch, riid)) {
+ TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
+ *ppv = HTMLEVENTOBJ(This);
+ }else if(IsEqualGUID(&IID_IHTMLEventObj, riid)) {
+ TRACE("(%p)->(IID_IHTMLEventObj %p)\n", This, ppv);
+ *ppv = HTMLEVENTOBJ(This);
+ }
+
+ if(*ppv) {
+ IUnknown_AddRef((IUnknown*)*ppv);
+ return S_OK;
+ }
+
+ WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
+ return E_NOINTERFACE;
+}
+
+static ULONG WINAPI HTMLEventObj_AddRef(IHTMLEventObj *iface)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ LONG ref = InterlockedIncrement(&This->ref);
+
+ TRACE("(%p) ref=%d\n", This, ref);
+
+ return ref;
+}
+
+static ULONG WINAPI HTMLEventObj_Release(IHTMLEventObj *iface)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ LONG ref = InterlockedDecrement(&This->ref);
+
+ TRACE("(%p) ref=%d\n", This, ref);
+
+ if(!ref)
+ heap_free(This);
+
+ return ref;
+}
+
+static HRESULT WINAPI HTMLEventObj_GetTypeInfoCount(IHTMLEventObj *iface, UINT *pctinfo)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, pctinfo);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLEventObj_GetTypeInfo(IHTMLEventObj *iface, UINT iTInfo,
+ LCID lcid, ITypeInfo **ppTInfo)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLEventObj_GetIDsOfNames(IHTMLEventObj *iface, REFIID riid,
+ LPOLESTR *rgszNames, UINT cNames,
+ LCID lcid, DISPID *rgDispId)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
+ lcid, rgDispId);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLEventObj_Invoke(IHTMLEventObj *iface, DISPID dispIdMember,
+ REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
+ VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
+ lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLEventObj_get_srcElement(IHTMLEventObj *iface, IHTMLElement **p)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLEventObj_get_altKey(IHTMLEventObj *iface, VARIANT_BOOL *p)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLEventObj_get_ctrlKey(IHTMLEventObj *iface, VARIANT_BOOL *p)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLEventObj_get_shiftKey(IHTMLEventObj *iface, VARIANT_BOOL *p)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLEventObj_put_returnValue(IHTMLEventObj *iface, VARIANT v)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->()\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLEventObj_get_returnValue(IHTMLEventObj *iface, VARIANT *p)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLEventObj_put_cancelBubble(IHTMLEventObj *iface, VARIANT_BOOL v)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->(%x)\n", This, v);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLEventObj_get_cancelBubble(IHTMLEventObj *iface, VARIANT_BOOL *p)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLEventObj_get_fromElement(IHTMLEventObj *iface, IHTMLElement **p)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLEventObj_get_toElement(IHTMLEventObj *iface, IHTMLElement **p)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLEventObj_put_keyCode(IHTMLEventObj *iface, long v)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->(%ld)\n", This, v);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLEventObj_get_keyCode(IHTMLEventObj *iface, long *p)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLEventObj_get_button(IHTMLEventObj *iface, long *p)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLEventObj_get_type(IHTMLEventObj *iface, BSTR *p)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLEventObj_get_qualifier(IHTMLEventObj *iface, BSTR *p)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLEventObj_get_reason(IHTMLEventObj *iface, long *p)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLEventObj_get_x(IHTMLEventObj *iface, long *p)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLEventObj_get_y(IHTMLEventObj *iface, long *p)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLEventObj_get_clientX(IHTMLEventObj *iface, long *p)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLEventObj_get_clientY(IHTMLEventObj *iface, long *p)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLEventObj_get_offsetX(IHTMLEventObj *iface, long *p)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLEventObj_get_offsetY(IHTMLEventObj *iface, long *p)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLEventObj_get_screenX(IHTMLEventObj *iface, long *p)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLEventObj_get_screenY(IHTMLEventObj *iface, long *p)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLEventObj_get_srcFilter(IHTMLEventObj *iface, IDispatch **p)
+{
+ HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+#undef HTMLEVENTOBJ_THIS
+
+static const IHTMLEventObjVtbl HTMLEventObjVtbl = {
+ HTMLEventObj_QueryInterface,
+ HTMLEventObj_AddRef,
+ HTMLEventObj_Release,
+ HTMLEventObj_GetTypeInfoCount,
+ HTMLEventObj_GetTypeInfo,
+ HTMLEventObj_GetIDsOfNames,
+ HTMLEventObj_Invoke,
+ HTMLEventObj_get_srcElement,
+ HTMLEventObj_get_altKey,
+ HTMLEventObj_get_ctrlKey,
+ HTMLEventObj_get_shiftKey,
+ HTMLEventObj_put_returnValue,
+ HTMLEventObj_get_returnValue,
+ HTMLEventObj_put_cancelBubble,
+ HTMLEventObj_get_cancelBubble,
+ HTMLEventObj_get_fromElement,
+ HTMLEventObj_get_toElement,
+ HTMLEventObj_put_keyCode,
+ HTMLEventObj_get_keyCode,
+ HTMLEventObj_get_button,
+ HTMLEventObj_get_type,
+ HTMLEventObj_get_qualifier,
+ HTMLEventObj_get_reason,
+ HTMLEventObj_get_x,
+ HTMLEventObj_get_y,
+ HTMLEventObj_get_clientX,
+ HTMLEventObj_get_clientY,
+ HTMLEventObj_get_offsetX,
+ HTMLEventObj_get_offsetY,
+ HTMLEventObj_get_screenX,
+ HTMLEventObj_get_screenY,
+ HTMLEventObj_get_srcFilter
+};
+
+static IHTMLEventObj *create_event(void)
+{
+ HTMLEventObj *ret;
+
+ ret = heap_alloc(sizeof(*ret));
+ ret->lpIHTMLEventObjVtbl = &HTMLEventObjVtbl;
+ ret->ref = 1;
+
+ return HTMLEVENTOBJ(ret);
+}
+
+void fire_event(HTMLDocument *doc, eventid_t eid, nsIDOMNode *target)
+{
+ HTMLDOMNode *node;
+
+ node = get_node(doc, target, FALSE);
+ if(!node)
+ return;
+
+ if(node->event_target && node->event_target->event_table[eid]) {
+ doc->window->event = create_event();
+
+ TRACE("%s >>>\n", debugstr_w(event_info[eid].name));
+ call_disp_func(doc, node->event_target->event_table[eid]);
+ TRACE("%s <<<\n", debugstr_w(event_info[eid].name));
+
+ IHTMLEventObj_Release(doc->window->event);
+ doc->window->event = NULL;
+ }
+}
+
+static HRESULT set_node_event_disp(HTMLDOMNode *node, eventid_t eid, IDispatch *disp)
+{
+ if(!node->event_target)
+ node->event_target = heap_alloc_zero(sizeof(event_target_t));
+ else if(node->event_target->event_table[eid])
+ IDispatch_Release(node->event_target->event_table[eid]);
+
+ IDispatch_AddRef(disp);
+ node->event_target->event_table[eid] = disp;
+
+ if((event_info[eid].flags & EVENT_DEFAULTLISTENER) && !node->doc->nscontainer->event_vector[eid]) {
+ node->doc->nscontainer->event_vector[eid] = TRUE;
+ add_nsevent_listener(node->doc->nscontainer, event_info[eid].name);
+ }
+
+ return S_OK;
+}
+
+HRESULT set_node_event(HTMLDOMNode *node, eventid_t eid, VARIANT *var)
+{
+ switch(V_VT(var)) {
+ case VT_DISPATCH:
+ return set_node_event_disp(node, eid, V_DISPATCH(var));
+
+ default:
+ FIXME("not supported vt=%d\n", V_VT(var));
+ }
+
+ return E_NOTIMPL;
+}
+
+void check_event_attr(HTMLDocument *doc, nsIDOMElement *nselem)
+{
+ const PRUnichar *attr_value;
+ nsAString attr_name_str, attr_value_str;
+ IDispatch *disp;
+ HTMLDOMNode *node;
+ int i;
+ nsresult nsres;
+
+ nsAString_Init(&attr_value_str, NULL);
+ nsAString_Init(&attr_name_str, NULL);
+
+ for(i=0; i < EVENTID_LAST; i++) {
+ nsAString_SetData(&attr_name_str, event_info[i].attr_name);
+ nsres = nsIDOMElement_GetAttribute(nselem, &attr_name_str, &attr_value_str);
+ if(NS_SUCCEEDED(nsres)) {
+ nsAString_GetData(&attr_value_str, &attr_value);
+ if(!*attr_value)
+ continue;
+
+ TRACE("%p.%s = %s\n", nselem, debugstr_w(event_info[i].attr_name), debugstr_w(attr_value));
+
+ disp = script_parse_event(doc, attr_value);
+ if(disp) {
+ node = get_node(doc, (nsIDOMNode*)nselem, TRUE);
+ set_node_event_disp(node, i, disp);
+ IDispatch_Release(disp);
+ }
+ }
+ }
+
+ nsAString_Finish(&attr_value_str);
+ nsAString_Finish(&attr_name_str);
+}
+
+void release_event_target(event_target_t *event_target)
+{
+ int i;
+
+ for(i=0; i < EVENTID_LAST; i++) {
+ if(event_target->event_table[i])
+ IDispatch_Release(event_target->event_table[i]);
+ }
+
+ heap_free(event_target);
+}
diff --git a/reactos/dll/win32/mshtml/htmlgeneric.c b/reactos/dll/win32/mshtml/htmlgeneric.c
new file mode 100644
index 00000000000..816c4aec0f6
--- /dev/null
+++ b/reactos/dll/win32/mshtml/htmlgeneric.c
@@ -0,0 +1,190 @@
+/*
+ * 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 "mshtml_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
+
+typedef struct {
+ HTMLElement element;
+
+ const IHTMLGenericElementVtbl *lpHTMLGenericElementVtbl;
+} HTMLGenericElement;
+
+#define HTMLGENERIC(x) ((IHTMLGenericElement*) &(x)->lpHTMLGenericElementVtbl)
+
+#define HTMLGENERIC_THIS(iface) DEFINE_THIS(HTMLGenericElement, HTMLGenericElement, iface)
+
+static HRESULT WINAPI HTMLGenericElement_QueryInterface(IHTMLGenericElement *iface, REFIID riid, void **ppv)
+{
+ HTMLGenericElement *This = HTMLGENERIC_THIS(iface);
+
+ return IHTMLDOMNode_QueryInterface(HTMLDOMNODE(&This->element.node), riid, ppv);
+}
+
+static ULONG WINAPI HTMLGenericElement_AddRef(IHTMLGenericElement *iface)
+{
+ HTMLGenericElement *This = HTMLGENERIC_THIS(iface);
+
+ return IHTMLDOMNode_AddRef(HTMLDOMNODE(&This->element.node));
+}
+
+static ULONG WINAPI HTMLGenericElement_Release(IHTMLGenericElement *iface)
+{
+ HTMLGenericElement *This = HTMLGENERIC_THIS(iface);
+
+ return IHTMLDOMNode_Release(HTMLDOMNODE(&This->element.node));
+}
+
+static HRESULT WINAPI HTMLGenericElement_GetTypeInfoCount(IHTMLGenericElement *iface, UINT *pctinfo)
+{
+ HTMLGenericElement *This = HTMLGENERIC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, pctinfo);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLGenericElement_GetTypeInfo(IHTMLGenericElement *iface, UINT iTInfo,
+ LCID lcid, ITypeInfo **ppTInfo)
+{
+ HTMLGenericElement *This = HTMLGENERIC_THIS(iface);
+ FIXME("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLGenericElement_GetIDsOfNames(IHTMLGenericElement *iface, REFIID riid,
+ LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
+{
+ HTMLGenericElement *This = HTMLGENERIC_THIS(iface);
+ FIXME("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
+ lcid, rgDispId);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLGenericElement_Invoke(IHTMLGenericElement *iface, DISPID dispIdMember,
+ REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
+ VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
+{
+ HTMLGenericElement *This = HTMLGENERIC_THIS(iface);
+ FIXME("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
+ lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLGenericElement_get_recordset(IHTMLGenericElement *iface, IDispatch **p)
+{
+ HTMLGenericElement *This = HTMLGENERIC_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLGenericElement_namedRecordset(IHTMLGenericElement *iface,
+ BSTR dataMember, VARIANT *hierarchy, IDispatch **ppRecordset)
+{
+ HTMLGenericElement *This = HTMLGENERIC_THIS(iface);
+ FIXME("(%p)->(%s %p %p)\n", This, debugstr_w(dataMember), hierarchy, ppRecordset);
+ return E_NOTIMPL;
+}
+
+static const IHTMLGenericElementVtbl HTMLGenericElementVtbl = {
+ HTMLGenericElement_QueryInterface,
+ HTMLGenericElement_AddRef,
+ HTMLGenericElement_Release,
+ HTMLGenericElement_GetTypeInfoCount,
+ HTMLGenericElement_GetTypeInfo,
+ HTMLGenericElement_GetIDsOfNames,
+ HTMLGenericElement_Invoke,
+ HTMLGenericElement_get_recordset,
+ HTMLGenericElement_namedRecordset
+};
+
+#define HTMLGENERIC_NODE_THIS(iface) DEFINE_THIS2(HTMLGenericElement, element.node, iface)
+
+static HRESULT HTMLGenericElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
+{
+ HTMLGenericElement *This = HTMLGENERIC_NODE_THIS(iface);
+
+ *ppv = NULL;
+
+ if(IsEqualGUID(&IID_IHTMLGenericElement, riid)) {
+ TRACE("(%p)->(IID_IHTMLGenericElement %p)\n", This, ppv);
+ *ppv = HTMLGENERIC(This);
+ }else {
+ return HTMLElement_QI(&This->element.node, riid, ppv);
+ }
+
+ IUnknown_AddRef((IUnknown*)*ppv);
+ return S_OK;
+}
+
+static void HTMLGenericElement_destructor(HTMLDOMNode *iface)
+{
+ HTMLGenericElement *This = HTMLGENERIC_NODE_THIS(iface);
+
+ HTMLElement_destructor(&This->element.node);
+}
+
+#undef HTMLGENERIC_NODE_THIS
+
+static const NodeImplVtbl HTMLGenericElementImplVtbl = {
+ HTMLGenericElement_QI,
+ HTMLGenericElement_destructor
+};
+
+static const tid_t HTMLGenericElement_iface_tids[] = {
+ IHTMLDOMNode_tid,
+ IHTMLDOMNode2_tid,
+ IHTMLElement_tid,
+ IHTMLElement2_tid,
+ IHTMLElement2_tid,
+ IHTMLGenericElement_tid,
+ 0
+};
+
+static dispex_static_data_t HTMLGenericElement_dispex = {
+ NULL,
+ DispHTMLGenericElement_tid,
+ NULL,
+ HTMLGenericElement_iface_tids
+};
+
+HTMLElement *HTMLGenericElement_Create(nsIDOMHTMLElement *nselem)
+{
+ HTMLGenericElement *ret;
+
+ ret = heap_alloc_zero(sizeof(HTMLGenericElement));
+
+ ret->lpHTMLGenericElementVtbl = &HTMLGenericElementVtbl;
+ ret->element.node.vtbl = &HTMLGenericElementImplVtbl;
+
+ init_dispex(&ret->element.node.dispex, (IUnknown*)HTMLGENERIC(ret), &HTMLGenericElement_dispex);
+ HTMLElement_Init(&ret->element);
+
+ return &ret->element;
+}
diff --git a/reactos/dll/win32/mshtml/htmlimg.c b/reactos/dll/win32/mshtml/htmlimg.c
new file mode 100644
index 00000000000..e0c06194b97
--- /dev/null
+++ b/reactos/dll/win32/mshtml/htmlimg.c
@@ -0,0 +1,601 @@
+/*
+ * 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 "mshtml_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
+
+typedef struct {
+ HTMLElement element;
+
+ const IHTMLImgElementVtbl *lpHTMLImgElementVtbl;
+
+ nsIDOMHTMLImageElement *nsimg;
+} HTMLImgElement;
+
+#define HTMLIMG(x) ((IHTMLImgElement*) &(x)->lpHTMLImgElementVtbl)
+
+#define HTMLIMG_THIS(iface) DEFINE_THIS(HTMLImgElement, HTMLImgElement, iface)
+
+static HRESULT WINAPI HTMLImgElement_QueryInterface(IHTMLImgElement *iface, REFIID riid, void **ppv)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+
+ return IHTMLDOMNode_QueryInterface(HTMLDOMNODE(&This->element.node), riid, ppv);
+}
+
+static ULONG WINAPI HTMLImgElement_AddRef(IHTMLImgElement *iface)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+
+ return IHTMLDOMNode_AddRef(HTMLDOMNODE(&This->element.node));
+}
+
+static ULONG WINAPI HTMLImgElement_Release(IHTMLImgElement *iface)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+
+ return IHTMLDOMNode_Release(HTMLDOMNODE(&This->element.node));
+}
+
+static HRESULT WINAPI HTMLImgElement_GetTypeInfoCount(IHTMLImgElement *iface, UINT *pctinfo)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, pctinfo);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_GetTypeInfo(IHTMLImgElement *iface, UINT iTInfo,
+ LCID lcid, ITypeInfo **ppTInfo)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_GetIDsOfNames(IHTMLImgElement *iface, REFIID riid,
+ LPOLESTR *rgszNames, UINT cNames,
+ LCID lcid, DISPID *rgDispId)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
+ lcid, rgDispId);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_Invoke(IHTMLImgElement *iface, DISPID dispIdMember,
+ REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
+ VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
+ lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_put_isMap(IHTMLImgElement *iface, VARIANT_BOOL v)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%x)\n", This, v);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_isMap(IHTMLImgElement *iface, VARIANT_BOOL *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_put_useMap(IHTMLImgElement *iface, BSTR v)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%s)\n", This, debugstr_w(v));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_useMap(IHTMLImgElement *iface, BSTR *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_mimeType(IHTMLImgElement *iface, BSTR *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_fileSize(IHTMLImgElement *iface, BSTR *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_fileCreatedDate(IHTMLImgElement *iface, BSTR *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_fileModifiedDate(IHTMLImgElement *iface, BSTR *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_fileUpdatedDate(IHTMLImgElement *iface, BSTR *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_protocol(IHTMLImgElement *iface, BSTR *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_href(IHTMLImgElement *iface, BSTR *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_nameProp(IHTMLImgElement *iface, BSTR *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_put_border(IHTMLImgElement *iface, VARIANT v)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->()\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_border(IHTMLImgElement *iface, VARIANT *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_put_vspace(IHTMLImgElement *iface, long v)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%ld)\n", This, v);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_vspace(IHTMLImgElement *iface, long *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_put_hspace(IHTMLImgElement *iface, long v)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%ld)\n", This, v);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_hspace(IHTMLImgElement *iface, long *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_put_alt(IHTMLImgElement *iface, BSTR v)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ nsAString alt_str;
+ nsresult nsres;
+
+ TRACE("(%p)->(%s)\n", This, debugstr_w(v));
+
+ nsAString_Init(&alt_str, v);
+ nsres = nsIDOMHTMLImageElement_SetAlt(This->nsimg, &alt_str);
+ nsAString_Finish(&alt_str);
+ if(NS_FAILED(nsres))
+ ERR("SetAlt failed: %08x\n", nsres);
+
+ return S_OK;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_alt(IHTMLImgElement *iface, BSTR *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ nsAString alt_str;
+ nsresult nsres;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ nsAString_Init(&alt_str, NULL);
+ nsres = nsIDOMHTMLImageElement_GetAlt(This->nsimg, &alt_str);
+ if(NS_SUCCEEDED(nsres)) {
+ const PRUnichar *alt;
+
+ nsAString_GetData(&alt_str, &alt);
+ *p = *alt ? SysAllocString(alt) : NULL;
+ }else {
+ ERR("GetAlt failed: %08x\n", nsres);
+ }
+ nsAString_Finish(&alt_str);
+
+ return NS_SUCCEEDED(nsres) ? S_OK : E_FAIL;
+}
+
+static HRESULT WINAPI HTMLImgElement_put_src(IHTMLImgElement *iface, BSTR v)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ nsAString src_str;
+ nsresult nsres;
+
+ TRACE("(%p)->(%s)\n", This, debugstr_w(v));
+
+ nsAString_Init(&src_str, v);
+ nsres = nsIDOMHTMLImageElement_SetSrc(This->nsimg, &src_str);
+ nsAString_Finish(&src_str);
+ if(NS_FAILED(nsres))
+ ERR("SetSrc failed: %08x\n", nsres);
+
+ return NS_OK;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_src(IHTMLImgElement *iface, BSTR *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_put_lowsrc(IHTMLImgElement *iface, BSTR v)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%s)\n", This, debugstr_w(v));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_lowsrc(IHTMLImgElement *iface, BSTR *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_put_vrml(IHTMLImgElement *iface, BSTR v)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%s)\n", This, debugstr_w(v));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_vrml(IHTMLImgElement *iface, BSTR *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_put_dynsrc(IHTMLImgElement *iface, BSTR v)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%s)\n", This, debugstr_w(v));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_dynsrc(IHTMLImgElement *iface, BSTR *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_readyState(IHTMLImgElement *iface, BSTR *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_complete(IHTMLImgElement *iface, VARIANT_BOOL *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_put_loop(IHTMLImgElement *iface, VARIANT v)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->()\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_loop(IHTMLImgElement *iface, VARIANT *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_put_align(IHTMLImgElement *iface, BSTR v)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%s)\n", This, debugstr_w(v));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_align(IHTMLImgElement *iface, BSTR *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_put_onload(IHTMLImgElement *iface, VARIANT v)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->()\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_onload(IHTMLImgElement *iface, VARIANT *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_put_onerror(IHTMLImgElement *iface, VARIANT v)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->()\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_onerror(IHTMLImgElement *iface, VARIANT *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_put_onabort(IHTMLImgElement *iface, VARIANT v)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->()\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_onabort(IHTMLImgElement *iface, VARIANT *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_put_name(IHTMLImgElement *iface, BSTR v)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%s)\n", This, debugstr_w(v));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_name(IHTMLImgElement *iface, BSTR *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_put_width(IHTMLImgElement *iface, long v)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%ld)\n", This, v);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_width(IHTMLImgElement *iface, long *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_put_height(IHTMLImgElement *iface, long v)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%ld)\n", This, v);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_height(IHTMLImgElement *iface, long *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_put_start(IHTMLImgElement *iface, BSTR v)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->()\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLImgElement_get_start(IHTMLImgElement *iface, BSTR *p)
+{
+ HTMLImgElement *This = HTMLIMG_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+#undef HTMLIMG_THIS
+
+static const IHTMLImgElementVtbl HTMLImgElementVtbl = {
+ HTMLImgElement_QueryInterface,
+ HTMLImgElement_AddRef,
+ HTMLImgElement_Release,
+ HTMLImgElement_GetTypeInfoCount,
+ HTMLImgElement_GetTypeInfo,
+ HTMLImgElement_GetIDsOfNames,
+ HTMLImgElement_Invoke,
+ HTMLImgElement_put_isMap,
+ HTMLImgElement_get_isMap,
+ HTMLImgElement_put_useMap,
+ HTMLImgElement_get_useMap,
+ HTMLImgElement_get_mimeType,
+ HTMLImgElement_get_fileSize,
+ HTMLImgElement_get_fileCreatedDate,
+ HTMLImgElement_get_fileModifiedDate,
+ HTMLImgElement_get_fileUpdatedDate,
+ HTMLImgElement_get_protocol,
+ HTMLImgElement_get_href,
+ HTMLImgElement_get_nameProp,
+ HTMLImgElement_put_border,
+ HTMLImgElement_get_border,
+ HTMLImgElement_put_vspace,
+ HTMLImgElement_get_vspace,
+ HTMLImgElement_put_hspace,
+ HTMLImgElement_get_hspace,
+ HTMLImgElement_put_alt,
+ HTMLImgElement_get_alt,
+ HTMLImgElement_put_src,
+ HTMLImgElement_get_src,
+ HTMLImgElement_put_lowsrc,
+ HTMLImgElement_get_lowsrc,
+ HTMLImgElement_put_vrml,
+ HTMLImgElement_get_vrml,
+ HTMLImgElement_put_dynsrc,
+ HTMLImgElement_get_dynsrc,
+ HTMLImgElement_get_readyState,
+ HTMLImgElement_get_complete,
+ HTMLImgElement_put_loop,
+ HTMLImgElement_get_loop,
+ HTMLImgElement_put_align,
+ HTMLImgElement_get_align,
+ HTMLImgElement_put_onload,
+ HTMLImgElement_get_onload,
+ HTMLImgElement_put_onerror,
+ HTMLImgElement_get_onerror,
+ HTMLImgElement_put_onabort,
+ HTMLImgElement_get_onabort,
+ HTMLImgElement_put_name,
+ HTMLImgElement_get_name,
+ HTMLImgElement_put_width,
+ HTMLImgElement_get_width,
+ HTMLImgElement_put_height,
+ HTMLImgElement_get_height,
+ HTMLImgElement_put_start,
+ HTMLImgElement_get_start
+};
+
+#define HTMLIMG_NODE_THIS(iface) DEFINE_THIS2(HTMLImgElement, element.node, iface)
+
+static HRESULT HTMLImgElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
+{
+ HTMLImgElement *This = HTMLIMG_NODE_THIS(iface);
+
+ *ppv = NULL;
+
+ if(IsEqualGUID(&IID_IHTMLImgElement, riid)) {
+ TRACE("(%p)->(IID_IHTMLImgElement %p)\n", This, ppv);
+ *ppv = HTMLIMG(This);
+ }else {
+ return HTMLElement_QI(&This->element.node, riid, ppv);
+ }
+
+ IUnknown_AddRef((IUnknown*)*ppv);
+ return S_OK;
+}
+
+static void HTMLImgElement_destructor(HTMLDOMNode *iface)
+{
+ HTMLImgElement *This = HTMLIMG_NODE_THIS(iface);
+
+ if(This->nsimg)
+ nsIDOMHTMLImageElement_Release(This->nsimg);
+
+ HTMLElement_destructor(&This->element.node);
+}
+
+#undef HTMLIMG_NODE_THIS
+
+static const NodeImplVtbl HTMLImgElementImplVtbl = {
+ HTMLImgElement_QI,
+ HTMLImgElement_destructor
+};
+
+static const tid_t HTMLImgElement_iface_tids[] = {
+ IHTMLDOMNode_tid,
+ IHTMLDOMNode2_tid,
+ IHTMLElement_tid,
+ IHTMLElement2_tid,
+ IHTMLImgElement_tid,
+ 0
+};
+static dispex_static_data_t HTMLImgElement_dispex = {
+ NULL,
+ DispHTMLImg_tid,
+ NULL,
+ HTMLImgElement_iface_tids
+};
+
+HTMLElement *HTMLImgElement_Create(nsIDOMHTMLElement *nselem)
+{
+ HTMLImgElement *ret = heap_alloc_zero(sizeof(HTMLImgElement));
+ nsresult nsres;
+
+ ret->lpHTMLImgElementVtbl = &HTMLImgElementVtbl;
+ ret->element.node.vtbl = &HTMLImgElementImplVtbl;
+
+ nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLImageElement, (void**)&ret->nsimg);
+ if(NS_FAILED(nsres))
+ ERR("Could not get nsIDOMHTMLImageElement: %08x\n", nsres);
+
+ init_dispex(&ret->element.node.dispex, (IUnknown*)HTMLIMG(ret), &HTMLImgElement_dispex);
+ HTMLElement_Init(&ret->element);
+
+ return &ret->element;
+}
diff --git a/reactos/dll/win32/mshtml/htmlinput.c b/reactos/dll/win32/mshtml/htmlinput.c
index 9c390c85c50..f8a646650ac 100644
--- a/reactos/dll/win32/mshtml/htmlinput.c
+++ b/reactos/dll/win32/mshtml/htmlinput.c
@@ -70,16 +70,16 @@ static ULONG WINAPI HTMLInputElement_Release(IHTMLInputElement *iface)
static HRESULT WINAPI HTMLInputElement_GetTypeInfoCount(IHTMLInputElement *iface, UINT *pctinfo)
{
HTMLInputElement *This = HTMLINPUT_THIS(iface);
- FIXME("(%p)->(%p)\n", This, pctinfo);
- return E_NOTIMPL;
+
+ return IDispatchEx_GetTypeInfoCount(DISPATCHEX(&This->element.node.dispex), pctinfo);
}
static HRESULT WINAPI HTMLInputElement_GetTypeInfo(IHTMLInputElement *iface, UINT iTInfo,
LCID lcid, ITypeInfo **ppTInfo)
{
HTMLInputElement *This = HTMLINPUT_THIS(iface);
- FIXME("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
- return E_NOTIMPL;
+
+ return IDispatchEx_GetTypeInfo(DISPATCHEX(&This->element.node.dispex), iTInfo, lcid, ppTInfo);
}
static HRESULT WINAPI HTMLInputElement_GetIDsOfNames(IHTMLInputElement *iface, REFIID riid,
@@ -87,9 +87,9 @@ static HRESULT WINAPI HTMLInputElement_GetIDsOfNames(IHTMLInputElement *iface, R
LCID lcid, DISPID *rgDispId)
{
HTMLInputElement *This = HTMLINPUT_THIS(iface);
- FIXME("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
- lcid, rgDispId);
- return E_NOTIMPL;
+
+ return IDispatchEx_GetIDsOfNames(DISPATCHEX(&This->element.node.dispex), riid, rgszNames,
+ cNames, lcid, rgDispId);
}
static HRESULT WINAPI HTMLInputElement_Invoke(IHTMLInputElement *iface, DISPID dispIdMember,
@@ -97,9 +97,9 @@ static HRESULT WINAPI HTMLInputElement_Invoke(IHTMLInputElement *iface, DISPID d
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
{
HTMLInputElement *This = HTMLINPUT_THIS(iface);
- FIXME("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
- lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
- return E_NOTIMPL;
+
+ return IDispatchEx_Invoke(DISPATCHEX(&This->element.node.dispex), dispIdMember, riid, lcid, wFlags,
+ pDispParams, pVarResult, pExcepInfo, puArgErr);
}
static HRESULT WINAPI HTMLInputElement_put_type(IHTMLInputElement *iface, BSTR v)
@@ -137,8 +137,18 @@ static HRESULT WINAPI HTMLInputElement_get_type(IHTMLInputElement *iface, BSTR *
static HRESULT WINAPI HTMLInputElement_put_value(IHTMLInputElement *iface, BSTR v)
{
HTMLInputElement *This = HTMLINPUT_THIS(iface);
- FIXME("(%p)->(%s)\n", This, debugstr_w(v));
- return E_NOTIMPL;
+ nsAString val_str;
+ nsresult nsres;
+
+ TRACE("(%p)->(%s)\n", This, debugstr_w(v));
+
+ nsAString_Init(&val_str, v);
+ nsres = nsIDOMHTMLInputElement_SetValue(This->nsinput, &val_str);
+ nsAString_Finish(&val_str);
+ if(NS_FAILED(nsres))
+ ERR("SetValue failed: %08x\n", nsres);
+
+ return S_OK;
}
static HRESULT WINAPI HTMLInputElement_get_value(IHTMLInputElement *iface, BSTR *p)
@@ -216,15 +226,28 @@ static HRESULT WINAPI HTMLInputElement_get_status(IHTMLInputElement *iface, VARI
static HRESULT WINAPI HTMLInputElement_put_disabled(IHTMLInputElement *iface, VARIANT_BOOL v)
{
HTMLInputElement *This = HTMLINPUT_THIS(iface);
- FIXME("(%p)->(%x)\n", This, v);
- return E_NOTIMPL;
+ nsresult nsres;
+
+ TRACE("(%p)->(%x)\n", This, v);
+
+ nsres = nsIDOMHTMLInputElement_SetDisabled(This->nsinput, v != VARIANT_FALSE);
+ if(NS_FAILED(nsres))
+ ERR("SetDisabled failed: %08x\n", nsres);
+
+ return S_OK;
}
static HRESULT WINAPI HTMLInputElement_get_disabled(IHTMLInputElement *iface, VARIANT_BOOL *p)
{
HTMLInputElement *This = HTMLINPUT_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+ PRBool disabled = FALSE;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ nsIDOMHTMLInputElement_GetDisabled(This->nsinput, &disabled);
+
+ *p = disabled ? VARIANT_TRUE : VARIANT_FALSE;
+ return S_OK;
}
static HRESULT WINAPI HTMLInputElement_get_form(IHTMLInputElement *iface, IHTMLFormElement **p)
@@ -1053,16 +1076,32 @@ static const NodeImplVtbl HTMLInputElementImplVtbl = {
HTMLInputElement_destructor
};
+static const tid_t HTMLInputElement_iface_tids[] = {
+ IHTMLDOMNode_tid,
+ IHTMLDOMNode2_tid,
+ IHTMLElement_tid,
+ IHTMLElement2_tid,
+ IHTMLInputElement_tid,
+ 0
+};
+static dispex_static_data_t HTMLInputElement_dispex = {
+ NULL,
+ DispHTMLInputElement_tid,
+ NULL,
+ HTMLInputElement_iface_tids
+};
+
HTMLElement *HTMLInputElement_Create(nsIDOMHTMLElement *nselem)
{
- HTMLInputElement *ret = heap_alloc(sizeof(HTMLInputElement));
+ HTMLInputElement *ret = heap_alloc_zero(sizeof(HTMLInputElement));
nsresult nsres;
- HTMLElement_Init(&ret->element);
-
ret->lpHTMLInputElementVtbl = &HTMLInputElementVtbl;
ret->element.node.vtbl = &HTMLInputElementImplVtbl;
+ init_dispex(&ret->element.node.dispex, (IUnknown*)HTMLINPUT(ret), &HTMLInputElement_dispex);
+ HTMLElement_Init(&ret->element);
+
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLInputElement,
(void**)&ret->nsinput);
if(NS_FAILED(nsres))
diff --git a/reactos/dll/win32/mshtml/htmlnode.c b/reactos/dll/win32/mshtml/htmlnode.c
index e098a83df1e..7c03a9647fa 100644
--- a/reactos/dll/win32/mshtml/htmlnode.c
+++ b/reactos/dll/win32/mshtml/htmlnode.c
@@ -31,7 +31,251 @@
WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
-#define NSSUPPORTS(x) ((nsISupports*) &(x)->lpSupportsVtbl)
+static HTMLDOMNode *get_node_obj(HTMLDocument*,IUnknown*);
+
+typedef struct {
+ DispatchEx dispex;
+ const IHTMLDOMChildrenCollectionVtbl *lpIHTMLDOMChildrenCollectionVtbl;
+
+ LONG ref;
+
+ /* FIXME: implement weak reference */
+ HTMLDocument *doc;
+
+ nsIDOMNodeList *nslist;
+} HTMLDOMChildrenCollection;
+
+#define HTMLCHILDCOL(x) ((IHTMLDOMChildrenCollection*) &(x)->lpIHTMLDOMChildrenCollectionVtbl)
+
+#define HTMLCHILDCOL_THIS(iface) DEFINE_THIS(HTMLDOMChildrenCollection, IHTMLDOMChildrenCollection, iface)
+
+static HRESULT WINAPI HTMLDOMChildrenCollection_QueryInterface(IHTMLDOMChildrenCollection *iface, REFIID riid, void **ppv)
+{
+ HTMLDOMChildrenCollection *This = HTMLCHILDCOL_THIS(iface);
+
+ *ppv = NULL;
+
+ if(IsEqualGUID(&IID_IUnknown, riid)) {
+ TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
+ *ppv = HTMLCHILDCOL(This);
+ }else if(IsEqualGUID(&IID_IHTMLDOMChildrenCollection, riid)) {
+ TRACE("(%p)->(IID_IHTMLDOMChildrenCollection %p)\n", This, ppv);
+ *ppv = HTMLCHILDCOL(This);
+ }else if(dispex_query_interface(&This->dispex, riid, ppv)) {
+ return *ppv ? S_OK : E_NOINTERFACE;
+ }
+
+ if(*ppv) {
+ IUnknown_AddRef((IUnknown*)*ppv);
+ return S_OK;
+ }
+
+ WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
+ return E_NOINTERFACE;
+}
+
+static ULONG WINAPI HTMLDOMChildrenCollection_AddRef(IHTMLDOMChildrenCollection *iface)
+{
+ HTMLDOMChildrenCollection *This = HTMLCHILDCOL_THIS(iface);
+ LONG ref = InterlockedIncrement(&This->ref);
+
+ TRACE("(%p) ref=%d\n", This, ref);
+
+ return ref;
+}
+
+static ULONG WINAPI HTMLDOMChildrenCollection_Release(IHTMLDOMChildrenCollection *iface)
+{
+ HTMLDOMChildrenCollection *This = HTMLCHILDCOL_THIS(iface);
+ LONG ref = InterlockedDecrement(&This->ref);
+
+ TRACE("(%p) ref=%d\n", This, ref);
+
+ if(!ref) {
+ nsIDOMNodeList_Release(This->nslist);
+ heap_free(This);
+ }
+
+ return ref;
+}
+
+static HRESULT WINAPI HTMLDOMChildrenCollection_GetTypeInfoCount(IHTMLDOMChildrenCollection *iface, UINT *pctinfo)
+{
+ HTMLDOMChildrenCollection *This = HTMLCHILDCOL_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, pctinfo);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLDOMChildrenCollection_GetTypeInfo(IHTMLDOMChildrenCollection *iface, UINT iTInfo,
+ LCID lcid, ITypeInfo **ppTInfo)
+{
+ HTMLDOMChildrenCollection *This = HTMLCHILDCOL_THIS(iface);
+ FIXME("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLDOMChildrenCollection_GetIDsOfNames(IHTMLDOMChildrenCollection *iface, REFIID riid,
+ LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
+{
+ HTMLDOMChildrenCollection *This = HTMLCHILDCOL_THIS(iface);
+ FIXME("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
+ lcid, rgDispId);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLDOMChildrenCollection_Invoke(IHTMLDOMChildrenCollection *iface, DISPID dispIdMember,
+ REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
+ VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
+{
+ HTMLDOMChildrenCollection *This = HTMLCHILDCOL_THIS(iface);
+ FIXME("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
+ lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLDOMChildrenCollection_get_length(IHTMLDOMChildrenCollection *iface, long *p)
+{
+ HTMLDOMChildrenCollection *This = HTMLCHILDCOL_THIS(iface);
+ PRUint32 length=0;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ nsIDOMNodeList_GetLength(This->nslist, &length);
+ *p = length;
+ return S_OK;
+}
+
+static HRESULT WINAPI HTMLDOMChildrenCollection__newEnum(IHTMLDOMChildrenCollection *iface, IUnknown **p)
+{
+ HTMLDOMChildrenCollection *This = HTMLCHILDCOL_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLDOMChildrenCollection_item(IHTMLDOMChildrenCollection *iface, long index, IDispatch **ppItem)
+{
+ HTMLDOMChildrenCollection *This = HTMLCHILDCOL_THIS(iface);
+ nsIDOMNode *nsnode = NULL;
+ PRUint32 length=0;
+ nsresult nsres;
+
+ TRACE("(%p)->(%ld %p)\n", This, index, ppItem);
+
+ nsIDOMNodeList_GetLength(This->nslist, &length);
+ if(index < 0 || index >= length)
+ return E_INVALIDARG;
+
+ nsres = nsIDOMNodeList_Item(This->nslist, index, &nsnode);
+ if(NS_FAILED(nsres) || !nsnode) {
+ ERR("Item failed: %08x\n", nsres);
+ return E_FAIL;
+ }
+
+ *ppItem = (IDispatch*)get_node(This->doc, nsnode, TRUE);
+ IDispatch_AddRef(*ppItem);
+ return S_OK;
+}
+
+#define DISPID_CHILDCOL_0 MSHTML_DISPID_CUSTOM_MIN
+
+static HRESULT HTMLDOMChildrenCollection_get_dispid(IUnknown *iface, BSTR name, DWORD flags, DISPID *dispid)
+{
+ HTMLDOMChildrenCollection *This = HTMLCHILDCOL_THIS(iface);
+ WCHAR *ptr;
+ DWORD idx=0;
+ PRUint32 len = 0;
+
+ for(ptr = name; *ptr && isdigitW(*ptr); ptr++)
+ idx = idx*10 + (*ptr-'0');
+ if(*ptr)
+ return DISP_E_UNKNOWNNAME;
+
+ nsIDOMNodeList_GetLength(This->nslist, &len);
+ if(idx >= len)
+ return DISP_E_UNKNOWNNAME;
+
+ *dispid = DISPID_CHILDCOL_0 + idx;
+ TRACE("ret %x\n", *dispid);
+ return S_OK;
+}
+
+static HRESULT HTMLDOMChildrenCollection_invoke(IUnknown *iface, DISPID id, LCID lcid, WORD flags, DISPPARAMS *params,
+ VARIANT *res, EXCEPINFO *ei, IServiceProvider *caller)
+{
+ HTMLDOMChildrenCollection *This = HTMLCHILDCOL_THIS(iface);
+
+ TRACE("(%p)->(%x %x %x %p %p %p %p)\n", This, id, lcid, flags, params, res, ei, caller);
+
+ switch(flags) {
+ case INVOKE_PROPERTYGET: {
+ IDispatch *disp = NULL;
+ HRESULT hres;
+
+ hres = IHTMLDOMChildrenCollection_item(HTMLCHILDCOL(This), id - DISPID_CHILDCOL_0, &disp);
+ if(0&&FAILED(hres))
+ return hres;
+
+ V_VT(res) = VT_DISPATCH;
+ V_DISPATCH(res) = disp;
+ break;
+ }
+
+ default:
+ FIXME("unimplemented flags %x\n", flags);
+ return E_NOTIMPL;
+ }
+
+ return S_OK;
+}
+
+#undef HTMLCHILDCOL_THIS
+
+static const IHTMLDOMChildrenCollectionVtbl HTMLDOMChildrenCollectionVtbl = {
+ HTMLDOMChildrenCollection_QueryInterface,
+ HTMLDOMChildrenCollection_AddRef,
+ HTMLDOMChildrenCollection_Release,
+ HTMLDOMChildrenCollection_GetTypeInfoCount,
+ HTMLDOMChildrenCollection_GetTypeInfo,
+ HTMLDOMChildrenCollection_GetIDsOfNames,
+ HTMLDOMChildrenCollection_Invoke,
+ HTMLDOMChildrenCollection_get_length,
+ HTMLDOMChildrenCollection__newEnum,
+ HTMLDOMChildrenCollection_item
+};
+
+static const tid_t HTMLDOMChildrenCollection_iface_tids[] = {
+ IHTMLDOMChildrenCollection_tid,
+ 0
+};
+
+static const dispex_static_data_vtbl_t HTMLDOMChildrenCollection_dispex_vtbl = {
+ HTMLDOMChildrenCollection_get_dispid,
+ HTMLDOMChildrenCollection_invoke
+};
+
+static dispex_static_data_t HTMLDOMChildrenCollection_dispex = {
+ &HTMLDOMChildrenCollection_dispex_vtbl,
+ DispDOMChildrenCollection_tid,
+ NULL,
+ HTMLDOMChildrenCollection_iface_tids
+};
+
+static IHTMLDOMChildrenCollection *create_child_collection(HTMLDocument *doc, nsIDOMNodeList *nslist)
+{
+ HTMLDOMChildrenCollection *ret;
+
+ ret = heap_alloc_zero(sizeof(*ret));
+ ret->lpIHTMLDOMChildrenCollectionVtbl = &HTMLDOMChildrenCollectionVtbl;
+ ret->ref = 1;
+
+ nsIDOMNodeList_AddRef(nslist);
+ ret->nslist = nslist;
+ ret->doc = doc;
+
+ init_dispex(&ret->dispex, (IUnknown*)HTMLCHILDCOL(ret), &HTMLDOMChildrenCollection_dispex);
+
+ return HTMLCHILDCOL(ret);
+}
#define HTMLDOMNODE_THIS(iface) DEFINE_THIS(HTMLDOMNode, HTMLDOMNode, iface)
@@ -106,29 +350,98 @@ static HRESULT WINAPI HTMLDOMNode_Invoke(IHTMLDOMNode *iface, DISPID dispIdMembe
static HRESULT WINAPI HTMLDOMNode_get_nodeType(IHTMLDOMNode *iface, long *p)
{
HTMLDOMNode *This = HTMLDOMNODE_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+ PRUint16 type = -1;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ nsIDOMNode_GetNodeType(This->nsnode, &type);
+
+ switch(type) {
+ case ELEMENT_NODE:
+ *p = 1;
+ break;
+ case TEXT_NODE:
+ *p = 3;
+ break;
+ case COMMENT_NODE:
+ *p = 8;
+ break;
+ case DOCUMENT_NODE:
+ *p = 9;
+ break;
+ default:
+ /*
+ * FIXME:
+ * According to MSDN only ELEMENT_NODE and TEXT_NODE are supported.
+ * It needs more tests.
+ */
+ FIXME("type %u\n", type);
+ *p = 0;
+ }
+
+ return S_OK;
}
static HRESULT WINAPI HTMLDOMNode_get_parentNode(IHTMLDOMNode *iface, IHTMLDOMNode **p)
{
HTMLDOMNode *This = HTMLDOMNODE_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+ HTMLDOMNode *node;
+ nsIDOMNode *nsnode;
+ nsresult nsres;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ nsres = nsIDOMNode_GetParentNode(This->nsnode, &nsnode);
+ if(NS_FAILED(nsres)) {
+ ERR("GetParentNode failed: %08x\n", nsres);
+ return E_FAIL;
+ }
+
+ if(!nsnode) {
+ *p = NULL;
+ return S_OK;
+ }
+
+ node = get_node(This->doc, nsnode, TRUE);
+ *p = HTMLDOMNODE(node);
+ IHTMLDOMNode_AddRef(*p);
+ return S_OK;
}
static HRESULT WINAPI HTMLDOMNode_hasChildNodes(IHTMLDOMNode *iface, VARIANT_BOOL *fChildren)
{
HTMLDOMNode *This = HTMLDOMNODE_THIS(iface);
- FIXME("(%p)->(%p)\n", This, fChildren);
- return E_NOTIMPL;
+ PRBool has_child = FALSE;
+ nsresult nsres;
+
+ TRACE("(%p)->(%p)\n", This, fChildren);
+
+ nsres = nsIDOMNode_HasChildNodes(This->nsnode, &has_child);
+ if(NS_FAILED(nsres))
+ ERR("HasChildNodes failed: %08x\n", nsres);
+
+ *fChildren = has_child ? VARIANT_TRUE : VARIANT_FALSE;
+ return S_OK;
}
static HRESULT WINAPI HTMLDOMNode_get_childNodes(IHTMLDOMNode *iface, IDispatch **p)
{
HTMLDOMNode *This = HTMLDOMNODE_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+ nsIDOMNodeList *nslist;
+ nsresult nsres;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ nsres = nsIDOMNode_GetChildNodes(This->nsnode, &nslist);
+ if(NS_FAILED(nsres)) {
+ ERR("GetChildNodes failed: %08x\n", nsres);
+ return E_FAIL;
+ }
+
+ *p = (IDispatch*)create_child_collection(This->doc, nslist);
+ nsIDOMNodeList_Release(nslist);
+
+ return S_OK;
}
static HRESULT WINAPI HTMLDOMNode_get_attributes(IHTMLDOMNode *iface, IDispatch **p)
@@ -146,12 +459,30 @@ static HRESULT WINAPI HTMLDOMNode_insertBefore(IHTMLDOMNode *iface, IHTMLDOMNode
return E_NOTIMPL;
}
-static HRESULT WINAPI HTMLDOMNode_removeChild(IHTMLDOMNode *iface, IHTMLDOMNode *newChild,
+static HRESULT WINAPI HTMLDOMNode_removeChild(IHTMLDOMNode *iface, IHTMLDOMNode *oldChild,
IHTMLDOMNode **node)
{
HTMLDOMNode *This = HTMLDOMNODE_THIS(iface);
- FIXME("(%p)->(%p %p)\n", This, newChild, node);
- return E_NOTIMPL;
+ HTMLDOMNode *node_obj;
+ nsIDOMNode *nsnode;
+ nsresult nsres;
+
+ TRACE("(%p)->(%p %p)\n", This, oldChild, node);
+
+ node_obj = get_node_obj(This->doc, (IUnknown*)oldChild);
+ if(!node_obj)
+ return E_FAIL;
+
+ nsres = nsIDOMNode_RemoveChild(This->nsnode, node_obj->nsnode, &nsnode);
+ if(NS_FAILED(nsres)) {
+ ERR("RemoveChild failed: %08x\n", nsres);
+ return E_FAIL;
+ }
+
+ /* FIXME: Make sure that node != newChild */
+ *node = HTMLDOMNODE(get_node(This->doc, nsnode, TRUE));
+ IHTMLDOMNode_AddRef(*node);
+ return S_OK;
}
static HRESULT WINAPI HTMLDOMNode_replaceChild(IHTMLDOMNode *iface, IHTMLDOMNode *newChild,
@@ -198,8 +529,26 @@ static HRESULT WINAPI HTMLDOMNode_appendChild(IHTMLDOMNode *iface, IHTMLDOMNode
IHTMLDOMNode **node)
{
HTMLDOMNode *This = HTMLDOMNODE_THIS(iface);
- FIXME("(%p)->(%p %p)\n", This, newChild, node);
- return E_NOTIMPL;
+ HTMLDOMNode *node_obj;
+ nsIDOMNode *nsnode;
+ nsresult nsres;
+
+ TRACE("(%p)->(%p %p)\n", This, newChild, node);
+
+ node_obj = get_node_obj(This->doc, (IUnknown*)newChild);
+ if(!node_obj)
+ return E_FAIL;
+
+ nsres = nsIDOMNode_AppendChild(This->nsnode, node_obj->nsnode, &nsnode);
+ if(NS_FAILED(nsres)) {
+ ERR("AppendChild failed: %08x\n", nsres);
+ return E_FAIL;
+ }
+
+ /* FIXME: Make sure that node != newChild */
+ *node = HTMLDOMNODE(get_node(This->doc, nsnode, TRUE));
+ IHTMLDOMNode_AddRef(*node);
+ return S_OK;
}
static HRESULT WINAPI HTMLDOMNode_get_nodeName(IHTMLDOMNode *iface, BSTR *p)
@@ -234,29 +583,87 @@ static HRESULT WINAPI HTMLDOMNode_get_nodeName(IHTMLDOMNode *iface, BSTR *p)
static HRESULT WINAPI HTMLDOMNode_put_nodeValue(IHTMLDOMNode *iface, VARIANT v)
{
HTMLDOMNode *This = HTMLDOMNODE_THIS(iface);
- FIXME("(%p)->()\n", This);
+
+ TRACE("(%p)->()\n", This);
+
+ switch(V_VT(&v)) {
+ case VT_BSTR: {
+ nsAString val_str;
+
+ TRACE("bstr %s\n", debugstr_w(V_BSTR(&v)));
+
+ nsAString_Init(&val_str, V_BSTR(&v));
+ nsIDOMNode_SetNodeValue(This->nsnode, &val_str);
+ nsAString_Finish(&val_str);
+
+ return S_OK;
+ }
+
+ default:
+ FIXME("unsupported vt %d\n", V_VT(&v));
+ }
+
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLDOMNode_get_nodeValue(IHTMLDOMNode *iface, VARIANT *p)
{
HTMLDOMNode *This = HTMLDOMNODE_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+ const PRUnichar *val;
+ nsAString val_str;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ nsAString_Init(&val_str, NULL);
+ nsIDOMNode_GetNodeValue(This->nsnode, &val_str);
+ nsAString_GetData(&val_str, &val);
+
+ if(*val) {
+ V_VT(p) = VT_BSTR;
+ V_BSTR(p) = SysAllocString(val);
+ }else {
+ V_VT(p) = VT_NULL;
+ }
+
+ nsAString_Finish(&val_str);
+
+ return S_OK;
}
static HRESULT WINAPI HTMLDOMNode_get_firstChild(IHTMLDOMNode *iface, IHTMLDOMNode **p)
{
HTMLDOMNode *This = HTMLDOMNODE_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+ nsIDOMNode *nschild = NULL;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ nsIDOMNode_GetFirstChild(This->nsnode, &nschild);
+ if(nschild) {
+ *p = HTMLDOMNODE(get_node(This->doc, nschild, TRUE));
+ IHTMLDOMNode_AddRef(*p);
+ }else {
+ *p = NULL;
+ }
+
+ return S_OK;
}
static HRESULT WINAPI HTMLDOMNode_get_lastChild(IHTMLDOMNode *iface, IHTMLDOMNode **p)
{
HTMLDOMNode *This = HTMLDOMNODE_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+ nsIDOMNode *nschild = NULL;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ nsIDOMNode_GetLastChild(This->nsnode, &nschild);
+ if(nschild) {
+ *p = HTMLDOMNODE(get_node(This->doc, nschild, TRUE));
+ IHTMLDOMNode_AddRef(*p);
+ }else {
+ *p = NULL;
+ }
+
+ return S_OK;
}
static HRESULT WINAPI HTMLDOMNode_get_previousSibling(IHTMLDOMNode *iface, IHTMLDOMNode **p)
@@ -273,6 +680,8 @@ static HRESULT WINAPI HTMLDOMNode_get_nextSibling(IHTMLDOMNode *iface, IHTMLDOMN
return E_NOTIMPL;
}
+#undef HTMLDOMNODE_THIS
+
static const IHTMLDOMNodeVtbl HTMLDOMNodeVtbl = {
HTMLDOMNode_QueryInterface,
HTMLDOMNode_AddRef,
@@ -303,6 +712,85 @@ static const IHTMLDOMNodeVtbl HTMLDOMNodeVtbl = {
HTMLDOMNode_get_nextSibling
};
+#define HTMLDOMNODE2_THIS(iface) DEFINE_THIS(HTMLDOMNode, HTMLDOMNode2, iface)
+
+static HRESULT WINAPI HTMLDOMNode2_QueryInterface(IHTMLDOMNode2 *iface,
+ REFIID riid, void **ppv)
+{
+ HTMLDOMNode *This = HTMLDOMNODE2_THIS(iface);
+
+ return IHTMLDOMNode_QueryInterface(HTMLDOMNODE(This), riid, ppv);
+}
+
+static ULONG WINAPI HTMLDOMNode2_AddRef(IHTMLDOMNode2 *iface)
+{
+ HTMLDOMNode *This = HTMLDOMNODE2_THIS(iface);
+
+ return IHTMLDOMNode_AddRef(HTMLDOMNODE(This));
+}
+
+static ULONG WINAPI HTMLDOMNode2_Release(IHTMLDOMNode2 *iface)
+{
+ HTMLDOMNode *This = HTMLDOMNODE2_THIS(iface);
+
+ return IHTMLDOMNode_Release(HTMLDOMNODE(This));
+}
+
+static HRESULT WINAPI HTMLDOMNode2_GetTypeInfoCount(IHTMLDOMNode2 *iface, UINT *pctinfo)
+{
+ HTMLDOMNode *This = HTMLDOMNODE2_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, pctinfo);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLDOMNode2_GetTypeInfo(IHTMLDOMNode2 *iface, UINT iTInfo,
+ LCID lcid, ITypeInfo **ppTInfo)
+{
+ HTMLDOMNode *This = HTMLDOMNODE2_THIS(iface);
+ FIXME("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLDOMNode2_GetIDsOfNames(IHTMLDOMNode2 *iface, REFIID riid,
+ LPOLESTR *rgszNames, UINT cNames,
+ LCID lcid, DISPID *rgDispId)
+{
+ HTMLDOMNode *This = HTMLDOMNODE2_THIS(iface);
+ FIXME("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
+ lcid, rgDispId);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLDOMNode2_Invoke(IHTMLDOMNode2 *iface, DISPID dispIdMember,
+ REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
+ VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
+{
+ HTMLDOMNode *This = HTMLDOMNODE2_THIS(iface);
+ FIXME("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
+ lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLDOMNode2_get_ownerDocument(IHTMLDOMNode2 *iface, IDispatch **p)
+{
+ HTMLDOMNode *This = HTMLDOMNODE2_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+#undef HTMLDOMNODE2_THIS
+
+static const IHTMLDOMNode2Vtbl HTMLDOMNode2Vtbl = {
+ HTMLDOMNode2_QueryInterface,
+ HTMLDOMNode2_AddRef,
+ HTMLDOMNode2_Release,
+ HTMLDOMNode2_GetTypeInfoCount,
+ HTMLDOMNode2_GetTypeInfo,
+ HTMLDOMNode2_GetIDsOfNames,
+ HTMLDOMNode2_Invoke,
+ HTMLDOMNode2_get_ownerDocument
+};
+
HRESULT HTMLDOMNode_QI(HTMLDOMNode *This, REFIID riid, void **ppv)
{
*ppv = NULL;
@@ -313,9 +801,22 @@ HRESULT HTMLDOMNode_QI(HTMLDOMNode *This, REFIID riid, void **ppv)
}else if(IsEqualGUID(&IID_IDispatch, riid)) {
TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
*ppv = HTMLDOMNODE(This);
+ }else if(IsEqualGUID(&IID_IDispatchEx, riid)) {
+ if(This->dispex.data) {
+ TRACE("(%p)->(IID_IDispatchEx %p)\n", This, ppv);
+ *ppv = DISPATCHEX(&This->dispex);
+ }else {
+ FIXME("(%p)->(IID_IDispatchEx %p)\n", This, ppv);
+ return E_NOINTERFACE;
+ }
}else if(IsEqualGUID(&IID_IHTMLDOMNode, riid)) {
TRACE("(%p)->(IID_IHTMLDOMNode %p)\n", This, ppv);
*ppv = HTMLDOMNODE(This);
+ }else if(IsEqualGUID(&IID_IHTMLDOMNode2, riid)) {
+ TRACE("(%p)->(IID_IHTMLDOMNode2 %p)\n", This, ppv);
+ *ppv = HTMLDOMNODE2(This);
+ }else if(dispex_query_interface(&This->dispex, riid, ppv)) {
+ return *ppv ? S_OK : E_NOINTERFACE;
}
if(*ppv) {
@@ -331,6 +832,8 @@ void HTMLDOMNode_destructor(HTMLDOMNode *This)
{
if(This->nsnode)
nsIDOMNode_Release(This->nsnode);
+ if(This->event_target)
+ release_event_target(This->event_target);
}
static const NodeImplVtbl HTMLDOMNodeImplVtbl = {
@@ -338,6 +841,20 @@ static const NodeImplVtbl HTMLDOMNodeImplVtbl = {
HTMLDOMNode_destructor
};
+void HTMLDOMNode_Init(HTMLDocument *doc, HTMLDOMNode *node, nsIDOMNode *nsnode)
+{
+ node->lpHTMLDOMNodeVtbl = &HTMLDOMNodeVtbl;
+ node->lpHTMLDOMNode2Vtbl = &HTMLDOMNode2Vtbl;
+ node->ref = 1;
+ node->doc = doc;
+
+ nsIDOMNode_AddRef(nsnode);
+ node->nsnode = nsnode;
+
+ node->next = doc->nodes;
+ doc->nodes = node;
+}
+
static HTMLDOMNode *create_node(HTMLDocument *doc, nsIDOMNode *nsnode)
{
HTMLDOMNode *ret;
@@ -347,19 +864,21 @@ static HTMLDOMNode *create_node(HTMLDocument *doc, nsIDOMNode *nsnode)
switch(node_type) {
case ELEMENT_NODE:
- ret = &HTMLElement_Create(nsnode)->node;
+ ret = &HTMLElement_Create(doc, nsnode, FALSE)->node;
+ break;
+ case TEXT_NODE:
+ ret = HTMLDOMTextNode_Create(doc, nsnode);
+ break;
+ case COMMENT_NODE:
+ ret = &HTMLCommentElement_Create(doc, nsnode)->node;
break;
default:
- ret = heap_alloc(sizeof(HTMLDOMNode));
+ ret = heap_alloc_zero(sizeof(HTMLDOMNode));
ret->vtbl = &HTMLDOMNodeImplVtbl;
+ HTMLDOMNode_Init(doc, ret, nsnode);
}
- ret->lpHTMLDOMNodeVtbl = &HTMLDOMNodeVtbl;
- ret->ref = 1;
- ret->doc = doc;
-
- nsIDOMNode_AddRef(nsnode);
- ret->nsnode = nsnode;
+ TRACE("type %d ret %p\n", node_type, ret);
return ret;
}
@@ -370,9 +889,9 @@ static HTMLDOMNode *create_node(HTMLDocument *doc, nsIDOMNode *nsnode)
* (better) find a way to store HTMLDOMelement pointer in nsIDOMNode.
*/
-HTMLDOMNode *get_node(HTMLDocument *This, nsIDOMNode *nsnode)
+HTMLDOMNode *get_node(HTMLDocument *This, nsIDOMNode *nsnode, BOOL create)
{
- HTMLDOMNode *iter = This->nodes, *ret;
+ HTMLDOMNode *iter = This->nodes;
while(iter) {
if(iter->nsnode == nsnode)
@@ -380,15 +899,33 @@ HTMLDOMNode *get_node(HTMLDocument *This, nsIDOMNode *nsnode)
iter = iter->next;
}
- if(iter)
+ if(iter || !create)
return iter;
- ret = create_node(This, nsnode);
+ return create_node(This, nsnode);
+}
- ret->next = This->nodes;
- This->nodes = ret;
+/*
+ * FIXME
+ * We should use better way for getting node object (like private interface)
+ * or avoid it at all.
+ */
+static HTMLDOMNode *get_node_obj(HTMLDocument *This, IUnknown *iface)
+{
+ HTMLDOMNode *iter = This->nodes;
+ IHTMLDOMNode *node;
- return ret;
+ IUnknown_QueryInterface(iface, &IID_IHTMLDOMNode, (void**)&node);
+ IHTMLDOMNode_Release(node);
+
+ while(iter) {
+ if(HTMLDOMNODE(iter) == node)
+ return iter;
+ iter = iter->next;
+ }
+
+ FIXME("Not found %p\n", iface);
+ return NULL;
}
void release_nodes(HTMLDocument *This)
diff --git a/reactos/dll/win32/mshtml/htmloption.c b/reactos/dll/win32/mshtml/htmloption.c
index 73af3b0cfbf..efb983031c2 100644
--- a/reactos/dll/win32/mshtml/htmloption.c
+++ b/reactos/dll/win32/mshtml/htmloption.c
@@ -331,16 +331,32 @@ static const NodeImplVtbl HTMLOptionElementImplVtbl = {
HTMLOptionElement_destructor
};
+static const tid_t HTMLOptionElement_iface_tids[] = {
+ IHTMLDOMNode_tid,
+ IHTMLDOMNode2_tid,
+ IHTMLElement_tid,
+ IHTMLElement2_tid,
+ IHTMLOptionElement_tid,
+ 0
+};
+static dispex_static_data_t HTMLOptionElement_dispex = {
+ NULL,
+ DispHTMLOptionElement_tid,
+ NULL,
+ HTMLOptionElement_iface_tids
+};
+
HTMLElement *HTMLOptionElement_Create(nsIDOMHTMLElement *nselem)
{
- HTMLOptionElement *ret = heap_alloc(sizeof(HTMLOptionElement));
+ HTMLOptionElement *ret = heap_alloc_zero(sizeof(HTMLOptionElement));
nsresult nsres;
- HTMLElement_Init(&ret->element);
-
ret->lpHTMLOptionElementVtbl = &HTMLOptionElementVtbl;
ret->element.node.vtbl = &HTMLOptionElementImplVtbl;
+ HTMLElement_Init(&ret->element);
+ init_dispex(&ret->element.node.dispex, (IUnknown*)HTMLOPTION(ret), &HTMLOptionElement_dispex);
+
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLOptionElement, (void**)&ret->nsoption);
if(NS_FAILED(nsres))
ERR("Could not get nsIDOMHTMLOptionElement interface: %08x\n", nsres);
@@ -469,7 +485,7 @@ static HRESULT WINAPI HTMLOptionElementFactory_create(IHTMLOptionElementFactory
return E_FAIL;
}
- hres = IHTMLDOMNode_QueryInterface(HTMLDOMNODE(get_node(This->doc, (nsIDOMNode*)nselem)),
+ hres = IHTMLDOMNode_QueryInterface(HTMLDOMNODE(get_node(This->doc, (nsIDOMNode*)nselem, TRUE)),
&IID_IHTMLOptionElement, (void**)optelem);
nsIDOMElement_Release(nselem);
diff --git a/reactos/dll/win32/mshtml/htmlscript.c b/reactos/dll/win32/mshtml/htmlscript.c
index 6c49af559be..36512adc98c 100644
--- a/reactos/dll/win32/mshtml/htmlscript.c
+++ b/reactos/dll/win32/mshtml/htmlscript.c
@@ -288,7 +288,7 @@ static const NodeImplVtbl HTMLScriptElementImplVtbl = {
HTMLElement *HTMLScriptElement_Create(nsIDOMHTMLElement *nselem)
{
- HTMLScriptElement *ret = heap_alloc(sizeof(HTMLScriptElement));
+ HTMLScriptElement *ret = heap_alloc_zero(sizeof(HTMLScriptElement));
nsresult nsres;
HTMLElement_Init(&ret->element);
diff --git a/reactos/dll/win32/mshtml/htmlselect.c b/reactos/dll/win32/mshtml/htmlselect.c
index 3718e8a8961..9c7cf71dcea 100644
--- a/reactos/dll/win32/mshtml/htmlselect.c
+++ b/reactos/dll/win32/mshtml/htmlselect.c
@@ -68,16 +68,16 @@ static ULONG WINAPI HTMLSelectElement_Release(IHTMLSelectElement *iface)
static HRESULT WINAPI HTMLSelectElement_GetTypeInfoCount(IHTMLSelectElement *iface, UINT *pctinfo)
{
HTMLSelectElement *This = HTMLSELECT_THIS(iface);
- FIXME("(%p)->(%p)\n", This, pctinfo);
- return E_NOTIMPL;
+
+ return IDispatchEx_GetTypeInfoCount(DISPATCHEX(&This->element.node.dispex), pctinfo);
}
static HRESULT WINAPI HTMLSelectElement_GetTypeInfo(IHTMLSelectElement *iface, UINT iTInfo,
LCID lcid, ITypeInfo **ppTInfo)
{
HTMLSelectElement *This = HTMLSELECT_THIS(iface);
- FIXME("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
- return E_NOTIMPL;
+
+ return IDispatchEx_GetTypeInfo(DISPATCHEX(&This->element.node.dispex), iTInfo, lcid, ppTInfo);
}
static HRESULT WINAPI HTMLSelectElement_GetIDsOfNames(IHTMLSelectElement *iface, REFIID riid,
@@ -85,9 +85,8 @@ static HRESULT WINAPI HTMLSelectElement_GetIDsOfNames(IHTMLSelectElement *iface,
LCID lcid, DISPID *rgDispId)
{
HTMLSelectElement *This = HTMLSELECT_THIS(iface);
- FIXME("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
- lcid, rgDispId);
- return E_NOTIMPL;
+
+ return IDispatchEx_GetIDsOfNames(DISPATCHEX(&This->element.node.dispex), riid, rgszNames, cNames, lcid, rgDispId);
}
static HRESULT WINAPI HTMLSelectElement_Invoke(IHTMLSelectElement *iface, DISPID dispIdMember,
@@ -95,9 +94,9 @@ static HRESULT WINAPI HTMLSelectElement_Invoke(IHTMLSelectElement *iface, DISPID
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
{
HTMLSelectElement *This = HTMLSELECT_THIS(iface);
- FIXME("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
- lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
- return E_NOTIMPL;
+
+ return IDispatchEx_Invoke(DISPATCHEX(&This->element.node.dispex), dispIdMember, riid, lcid,
+ wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
}
static HRESULT WINAPI HTMLSelectElement_put_size(IHTMLSelectElement *iface, long v)
@@ -177,8 +176,10 @@ static HRESULT WINAPI HTMLSelectElement_get_options(IHTMLSelectElement *iface, I
static HRESULT WINAPI HTMLSelectElement_put_onchange(IHTMLSelectElement *iface, VARIANT v)
{
HTMLSelectElement *This = HTMLSELECT_THIS(iface);
- FIXME("(%p)->()\n", This);
- return E_NOTIMPL;
+
+ TRACE("(%p)->()\n", This);
+
+ return set_node_event(&This->element.node, EVENTID_CHANGE, &v);
}
static HRESULT WINAPI HTMLSelectElement_get_onchange(IHTMLSelectElement *iface, VARIANT *p)
@@ -221,15 +222,43 @@ static HRESULT WINAPI HTMLSelectElement_get_selectedIndex(IHTMLSelectElement *if
static HRESULT WINAPI HTMLSelectElement_get_type(IHTMLSelectElement *iface, BSTR *p)
{
HTMLSelectElement *This = HTMLSELECT_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+ const PRUnichar *type;
+ nsAString type_str;
+ nsresult nsres;
+ HRESULT hres = S_OK;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ nsAString_Init(&type_str, NULL);
+ nsres = nsIDOMHTMLSelectElement_GetType(This->nsselect, &type_str);
+ if(NS_SUCCEEDED(nsres)) {
+ nsAString_GetData(&type_str, &type);
+ *p = *type ? SysAllocString(type) : NULL;
+ }else {
+ ERR("GetType failed: %08x\n", nsres);
+ hres = E_FAIL;
+ }
+
+ nsAString_Finish(&type_str);
+
+ return hres;
}
static HRESULT WINAPI HTMLSelectElement_put_value(IHTMLSelectElement *iface, BSTR v)
{
HTMLSelectElement *This = HTMLSELECT_THIS(iface);
- FIXME("(%p)->(%s)\n", This, debugstr_w(v));
- return E_NOTIMPL;
+ nsAString value_str;
+ nsresult nsres;
+
+ TRACE("(%p)->(%s)\n", This, debugstr_w(v));
+
+ nsAString_Init(&value_str, v);
+ nsres = nsIDOMHTMLSelectElement_SetValue(This->nsselect, &value_str);
+ nsAString_Finish(&value_str);
+ if(NS_FAILED(nsres))
+ ERR("SetValue failed: %08x\n", nsres);
+
+ return S_OK;
}
static HRESULT WINAPI HTMLSelectElement_get_value(IHTMLSelectElement *iface, BSTR *p)
@@ -246,7 +275,7 @@ static HRESULT WINAPI HTMLSelectElement_get_value(IHTMLSelectElement *iface, BST
nsres = nsIDOMHTMLSelectElement_GetValue(This->nsselect, &value_str);
if(NS_SUCCEEDED(nsres)) {
nsAString_GetData(&value_str, &value);
- *p = SysAllocString(value);
+ *p = *value ? SysAllocString(value) : NULL;
}else {
ERR("GetValue failed: %08x\n", nsres);
}
@@ -420,16 +449,33 @@ static const NodeImplVtbl HTMLSelectElementImplVtbl = {
HTMLSelectElement_destructor
};
+static const tid_t HTMLSelectElement_tids[] = {
+ IHTMLDOMNode_tid,
+ IHTMLDOMNode2_tid,
+ IHTMLElement_tid,
+ IHTMLElement2_tid,
+ IHTMLSelectElement_tid,
+ 0
+};
+
+static dispex_static_data_t HTMLSelectElement_dispex = {
+ NULL,
+ DispHTMLSelectElement_tid,
+ NULL,
+ HTMLSelectElement_tids
+};
+
HTMLElement *HTMLSelectElement_Create(nsIDOMHTMLElement *nselem)
{
- HTMLSelectElement *ret = heap_alloc(sizeof(HTMLSelectElement));
+ HTMLSelectElement *ret = heap_alloc_zero(sizeof(HTMLSelectElement));
nsresult nsres;
- HTMLElement_Init(&ret->element);
-
ret->lpHTMLSelectElementVtbl = &HTMLSelectElementVtbl;
ret->element.node.vtbl = &HTMLSelectElementImplVtbl;
-
+
+ init_dispex(&ret->element.node.dispex, (IUnknown*)HTMLSELECT(ret), &HTMLSelectElement_dispex);
+ HTMLElement_Init(&ret->element);
+
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLSelectElement,
(void**)&ret->nsselect);
if(NS_FAILED(nsres))
diff --git a/reactos/dll/win32/mshtml/htmlstyle.c b/reactos/dll/win32/mshtml/htmlstyle.c
index cb248315b5c..e4bc48329e3 100644
--- a/reactos/dll/win32/mshtml/htmlstyle.c
+++ b/reactos/dll/win32/mshtml/htmlstyle.c
@@ -33,6 +33,7 @@
WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
typedef struct {
+ DispatchEx dispex;
const IHTMLStyleVtbl *lpHTMLStyleVtbl;
LONG ref;
@@ -40,10 +41,14 @@ typedef struct {
nsIDOMCSSStyleDeclaration *nsstyle;
} HTMLStyle;
-#define HTMLSTYLE(x) ((IHTMLStyle*) &(x)->lpHTMLStyleVtbl);
+#define HTMLSTYLE(x) ((IHTMLStyle*) &(x)->lpHTMLStyleVtbl)
+static const WCHAR attrBackground[] =
+ {'b','a','c','k','g','r','o','u','n','d',0};
static const WCHAR attrBackgroundColor[] =
{'b','a','c','k','g','r','o','u','n','d','-','c','o','l','o','r',0};
+static const WCHAR attrBackgroundImage[] =
+ {'b','a','c','k','g','r','o','u','n','d','-','i','m','a','g','e',0};
static const WCHAR attrBorderLeft[] =
{'b','o','r','d','e','r','-','l','e','f','t',0};
static const WCHAR attrColor[] =
@@ -68,6 +73,8 @@ static const WCHAR attrTextDecoration[] =
{'t','e','x','t','-','d','e','c','o','r','a','t','i','o','n',0};
static const WCHAR attrVisibility[] =
{'v','i','s','i','b','i','l','i','t','y',0};
+static const WCHAR attrWidth[] =
+ {'w','i','d','t','h',0};
static const WCHAR valLineThrough[] =
{'l','i','n','e','-','t','h','r','o','u','g','h',0};
@@ -113,7 +120,27 @@ static LPWSTR fix_px_value(LPCWSTR val)
return NULL;
}
+static LPWSTR fix_url_value(LPCWSTR val)
+{
+ WCHAR *ret, *ptr;
+
+ static const WCHAR urlW[] = {'u','r','l','('};
+
+ if(strncmpW(val, urlW, sizeof(urlW)/sizeof(WCHAR)) || !strchrW(val, '\\'))
+ return NULL;
+
+ ret = heap_strdupW(val);
+
+ for(ptr = ret; *ptr; ptr++) {
+ if(*ptr == '\\')
+ *ptr = '/';
+ }
+
+ return ret;
+}
+
#define ATTR_FIX_PX 1
+#define ATTR_FIX_URL 2
static HRESULT set_style_attr(HTMLStyle *This, LPCWSTR name, LPCWSTR value, DWORD flags)
{
@@ -127,6 +154,8 @@ static HRESULT set_style_attr(HTMLStyle *This, LPCWSTR name, LPCWSTR value, DWOR
if(flags & ATTR_FIX_PX)
val = fix_px_value(value);
+ if(flags & ATTR_FIX_URL)
+ val = fix_url_value(value);
nsAString_Init(&str_name, name);
nsAString_Init(&str_value, val ? val : value);
@@ -208,12 +237,11 @@ static HRESULT WINAPI HTMLStyle_QueryInterface(IHTMLStyle *iface, REFIID riid, v
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = HTMLSTYLE(This);
- }else if(IsEqualGUID(&IID_IDispatch, riid)) {
- TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
- *ppv = HTMLSTYLE(This);
}else if(IsEqualGUID(&IID_IHTMLStyle, riid)) {
TRACE("(%p)->(IID_IHTMLStyle %p)\n", This, ppv);
*ppv = HTMLSTYLE(This);
+ }else if(dispex_query_interface(&This->dispex, riid, ppv)) {
+ return *ppv ? S_OK : E_NOINTERFACE;
}
if(*ppv) {
@@ -390,7 +418,18 @@ static HRESULT WINAPI HTMLStyle_get_font(IHTMLStyle *iface, BSTR *p)
static HRESULT WINAPI HTMLStyle_put_color(IHTMLStyle *iface, VARIANT v)
{
HTMLStyle *This = HTMLSTYLE_THIS(iface);
- FIXME("(%p)->(v%d)\n", This, V_VT(&v));
+
+ TRACE("(%p)->(v%d)\n", This, V_VT(&v));
+
+ switch(V_VT(&v)) {
+ case VT_BSTR:
+ TRACE("%s\n", debugstr_w(V_BSTR(&v)));
+ return set_style_attr(This, attrColor, V_BSTR(&v), 0);
+
+ default:
+ FIXME("unsupported vt=%d\n", V_VT(&v));
+ }
+
return E_NOTIMPL;
}
@@ -407,8 +446,10 @@ static HRESULT WINAPI HTMLStyle_get_color(IHTMLStyle *iface, VARIANT *p)
static HRESULT WINAPI HTMLStyle_put_background(IHTMLStyle *iface, BSTR v)
{
HTMLStyle *This = HTMLSTYLE_THIS(iface);
- FIXME("(%p)->(%s)\n", This, debugstr_w(v));
- return E_NOTIMPL;
+
+ TRACE("(%p)->(%s)\n", This, debugstr_w(v));
+
+ return set_style_attr(This, attrBackground, v, 0);
}
static HRESULT WINAPI HTMLStyle_get_background(IHTMLStyle *iface, BSTR *p)
@@ -451,8 +492,10 @@ static HRESULT WINAPI HTMLStyle_get_backgroundColor(IHTMLStyle *iface, VARIANT *
static HRESULT WINAPI HTMLStyle_put_backgroundImage(IHTMLStyle *iface, BSTR v)
{
HTMLStyle *This = HTMLSTYLE_THIS(iface);
- FIXME("(%p)->(%s)\n", This, debugstr_w(v));
- return E_NOTIMPL;
+
+ TRACE("(%p)->(%s)\n", This, debugstr_w(v));
+
+ return set_style_attr(This, attrBackgroundImage, v, ATTR_FIX_URL);
}
static HRESULT WINAPI HTMLStyle_get_backgroundImage(IHTMLStyle *iface, BSTR *p)
@@ -1196,15 +1239,28 @@ static HRESULT WINAPI HTMLStyle_get_borderLeftStyle(IHTMLStyle *iface, BSTR *p)
static HRESULT WINAPI HTMLStyle_put_width(IHTMLStyle *iface, VARIANT v)
{
HTMLStyle *This = HTMLSTYLE_THIS(iface);
- FIXME("(%p)->(v%d)\n", This, V_VT(&v));
+
+ TRACE("(%p)->(v%d)\n", This, V_VT(&v));
+
+ switch(V_VT(&v)) {
+ case VT_BSTR:
+ TRACE("%s\n", debugstr_w(V_BSTR(&v)));
+ return set_style_attr(This, attrWidth, V_BSTR(&v), 0);
+ default:
+ FIXME("unsupported vt %d\n", V_VT(&v));
+ }
+
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLStyle_get_width(IHTMLStyle *iface, VARIANT *p)
{
HTMLStyle *This = HTMLSTYLE_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ V_VT(p) = VT_BSTR;
+ return get_style_attr(This, attrWidth, &V_BSTR(p));
}
static HRESULT WINAPI HTMLStyle_put_height(IHTMLStyle *iface, VARIANT v)
@@ -1837,6 +1893,17 @@ static const IHTMLStyleVtbl HTMLStyleVtbl = {
HTMLStyle_toString
};
+static const tid_t HTMLStyle_iface_tids[] = {
+ IHTMLStyle_tid,
+ 0
+};
+static dispex_static_data_t HTMLStyle_dispex = {
+ NULL,
+ DispHTMLStyle_tid,
+ NULL,
+ HTMLStyle_iface_tids
+};
+
IHTMLStyle *HTMLStyle_Create(nsIDOMCSSStyleDeclaration *nsstyle)
{
HTMLStyle *ret = heap_alloc(sizeof(HTMLStyle));
@@ -1847,5 +1914,7 @@ IHTMLStyle *HTMLStyle_Create(nsIDOMCSSStyleDeclaration *nsstyle)
nsIDOMCSSStyleDeclaration_AddRef(nsstyle);
+ init_dispex(&ret->dispex, (IUnknown*)HTMLSTYLE(ret), &HTMLStyle_dispex);
+
return HTMLSTYLE(ret);
}
diff --git a/reactos/dll/win32/mshtml/htmltable.c b/reactos/dll/win32/mshtml/htmltable.c
index 66d55d06cfe..88f6e75cdf9 100644
--- a/reactos/dll/win32/mshtml/htmltable.c
+++ b/reactos/dll/win32/mshtml/htmltable.c
@@ -546,7 +546,7 @@ static const NodeImplVtbl HTMLTableImplVtbl = {
HTMLElement *HTMLTable_Create(nsIDOMHTMLElement *nselem)
{
- HTMLTable *ret = heap_alloc(sizeof(HTMLTable));
+ HTMLTable *ret = heap_alloc_zero(sizeof(HTMLTable));
HTMLElement_Init(&ret->element);
diff --git a/reactos/dll/win32/mshtml/htmltextarea.c b/reactos/dll/win32/mshtml/htmltextarea.c
index 64245e72430..6e94174c98e 100644
--- a/reactos/dll/win32/mshtml/htmltextarea.c
+++ b/reactos/dll/win32/mshtml/htmltextarea.c
@@ -402,7 +402,7 @@ static const NodeImplVtbl HTMLTextAreaElementImplVtbl = {
HTMLElement *HTMLTextAreaElement_Create(nsIDOMHTMLElement *nselem)
{
- HTMLTextAreaElement *ret = heap_alloc(sizeof(HTMLTextAreaElement));
+ HTMLTextAreaElement *ret = heap_alloc_zero(sizeof(HTMLTextAreaElement));
nsresult nsres;
HTMLElement_Init(&ret->element);
diff --git a/reactos/dll/win32/mshtml/htmltextnode.c b/reactos/dll/win32/mshtml/htmltextnode.c
new file mode 100644
index 00000000000..69c287d02be
--- /dev/null
+++ b/reactos/dll/win32/mshtml/htmltextnode.c
@@ -0,0 +1,213 @@
+/*
+ * 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 "mshtml_private.h"
+
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
+
+typedef struct {
+ HTMLDOMNode node;
+ const IHTMLDOMTextNodeVtbl *lpIHTMLDOMTextNodeVtbl;
+} HTMLDOMTextNode;
+
+#define HTMLTEXT(x) ((IHTMLDOMTextNode*) &(x)->lpIHTMLDOMTextNodeVtbl)
+
+#define HTMLTEXT_THIS(iface) DEFINE_THIS(HTMLDOMTextNode, IHTMLDOMTextNode, iface)
+
+#define HTMLTEXT_NODE_THIS(iface) DEFINE_THIS2(HTMLDOMTextNode, node, iface)
+
+static HRESULT WINAPI HTMLDOMTextNode_QueryInterface(IHTMLDOMTextNode *iface,
+ REFIID riid, void **ppv)
+{
+ HTMLDOMTextNode *This = HTMLTEXT_THIS(iface);
+
+ return IHTMLDOMNode_QueryInterface(HTMLDOMNODE(&This->node), riid, ppv);
+}
+
+static ULONG WINAPI HTMLDOMTextNode_AddRef(IHTMLDOMTextNode *iface)
+{
+ HTMLDOMTextNode *This = HTMLTEXT_THIS(iface);
+
+ return IHTMLDOMNode_AddRef(HTMLDOMNODE(&This->node));
+}
+
+static ULONG WINAPI HTMLDOMTextNode_Release(IHTMLDOMTextNode *iface)
+{
+ HTMLDOMTextNode *This = HTMLTEXT_THIS(iface);
+
+ return IHTMLDOMNode_Release(HTMLDOMNODE(&This->node));
+}
+
+static HRESULT WINAPI HTMLDOMTextNode_GetTypeInfoCount(IHTMLDOMTextNode *iface, UINT *pctinfo)
+{
+ HTMLDOMTextNode *This = HTMLTEXT_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, pctinfo);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLDOMTextNode_GetTypeInfo(IHTMLDOMTextNode *iface, UINT iTInfo,
+ LCID lcid, ITypeInfo **ppTInfo)
+{
+ HTMLDOMTextNode *This = HTMLTEXT_THIS(iface);
+ FIXME("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLDOMTextNode_GetIDsOfNames(IHTMLDOMTextNode *iface, REFIID riid,
+ LPOLESTR *rgszNames, UINT cNames,
+ LCID lcid, DISPID *rgDispId)
+{
+ HTMLDOMTextNode *This = HTMLTEXT_THIS(iface);
+ FIXME("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
+ lcid, rgDispId);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLDOMTextNode_Invoke(IHTMLDOMTextNode *iface, DISPID dispIdMember,
+ REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
+ VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
+{
+ HTMLDOMTextNode *This = HTMLTEXT_THIS(iface);
+ FIXME("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
+ lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLDOMTextNode_put_data(IHTMLDOMTextNode *iface, BSTR v)
+{
+ HTMLDOMTextNode *This = HTMLTEXT_THIS(iface);
+ FIXME("(%p)->(%s)\n", This, debugstr_w(v));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLDOMTextNode_get_data(IHTMLDOMTextNode *iface, BSTR *p)
+{
+ HTMLDOMTextNode *This = HTMLTEXT_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLDOMTextNode_toString(IHTMLDOMTextNode *iface, BSTR *String)
+{
+ HTMLDOMTextNode *This = HTMLTEXT_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, String);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLDOMTextNode_get_length(IHTMLDOMTextNode *iface, long *p)
+{
+ HTMLDOMTextNode *This = HTMLTEXT_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLDOMTextNode_splitText(IHTMLDOMTextNode *iface, long offset, IHTMLDOMNode **pRetNode)
+{
+ HTMLDOMTextNode *This = HTMLTEXT_THIS(iface);
+ FIXME("(%p)->(%ld %p)\n", This, offset, pRetNode);
+ return E_NOTIMPL;
+}
+
+#undef HTMLTEXT_THIS
+
+static const IHTMLDOMTextNodeVtbl HTMLDOMTextNodeVtbl = {
+ HTMLDOMTextNode_QueryInterface,
+ HTMLDOMTextNode_AddRef,
+ HTMLDOMTextNode_Release,
+ HTMLDOMTextNode_GetTypeInfoCount,
+ HTMLDOMTextNode_GetTypeInfo,
+ HTMLDOMTextNode_GetIDsOfNames,
+ HTMLDOMTextNode_Invoke,
+ HTMLDOMTextNode_put_data,
+ HTMLDOMTextNode_get_data,
+ HTMLDOMTextNode_toString,
+ HTMLDOMTextNode_get_length,
+ HTMLDOMTextNode_splitText
+};
+
+#define HTMLTEXT_NODE_THIS(iface) DEFINE_THIS2(HTMLDOMTextNode, node, iface)
+
+HRESULT HTMLDOMTextNode_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
+{
+ HTMLDOMTextNode *This = HTMLTEXT_NODE_THIS(iface);
+
+ *ppv = NULL;
+
+ if(IsEqualGUID(&IID_IHTMLDOMTextNode, riid)) {
+ TRACE("(%p)->(IID_IHTMLDOMTextNode %p)\n", This, ppv);
+ *ppv = HTMLTEXT(This);
+ }else {
+ return HTMLDOMNode_QI(&This->node, riid, ppv);
+ }
+
+ IUnknown_AddRef((IUnknown*)*ppv);
+ return S_OK;
+}
+
+void HTMLDOMTextNode_destructor(HTMLDOMNode *iface)
+{
+ HTMLDOMTextNode *This = HTMLTEXT_NODE_THIS(iface);
+
+ HTMLDOMNode_destructor(&This->node);
+}
+
+#undef HTMLTEXT_NODE_THIS
+
+static const NodeImplVtbl HTMLDOMTextNodeImplVtbl = {
+ HTMLDOMTextNode_QI,
+ HTMLDOMTextNode_destructor
+};
+
+static const tid_t HTMLDOMTextNode_iface_tids[] = {
+ IHTMLDOMNode_tid,
+ IHTMLDOMNode2_tid,
+ IHTMLDOMTextNode_tid,
+ 0
+};
+static dispex_static_data_t HTMLDOMTextNode_dispex = {
+ NULL,
+ DispHTMLDOMTextNode_tid,
+ 0,
+ HTMLDOMTextNode_iface_tids
+};
+
+HTMLDOMNode *HTMLDOMTextNode_Create(HTMLDocument *doc, nsIDOMNode *nsnode)
+{
+ HTMLDOMTextNode *ret ;
+
+ ret = heap_alloc_zero(sizeof(*ret));
+ ret->node.vtbl = &HTMLDOMTextNodeImplVtbl;
+ ret->lpIHTMLDOMTextNodeVtbl = &HTMLDOMTextNodeVtbl;
+
+ init_dispex(&ret->node.dispex, (IUnknown*)HTMLTEXT(ret), &HTMLDOMTextNode_dispex);
+ HTMLDOMNode_Init(doc, &ret->node, nsnode);
+
+ return &ret->node;
+}
diff --git a/reactos/dll/win32/mshtml/htmlwindow.c b/reactos/dll/win32/mshtml/htmlwindow.c
index 0f57069cf3b..043e4e979ec 100644
--- a/reactos/dll/win32/mshtml/htmlwindow.c
+++ b/reactos/dll/win32/mshtml/htmlwindow.c
@@ -33,10 +33,10 @@
WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
-#define HTMLWINDOW2_THIS(iface) DEFINE_THIS(HTMLWindow, HTMLWindow2, iface)
-
static struct list window_list = LIST_INIT(window_list);
+#define HTMLWINDOW2_THIS(iface) DEFINE_THIS(HTMLWindow, HTMLWindow2, iface)
+
static HRESULT WINAPI HTMLWindow2_QueryInterface(IHTMLWindow2 *iface, REFIID riid, void **ppv)
{
HTMLWindow *This = HTMLWINDOW2_THIS(iface);
@@ -49,12 +49,20 @@ static HRESULT WINAPI HTMLWindow2_QueryInterface(IHTMLWindow2 *iface, REFIID rii
}else if(IsEqualGUID(&IID_IDispatch, riid)) {
TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
*ppv = HTMLWINDOW2(This);
+ }else if(IsEqualGUID(&IID_IDispatchEx, riid)) {
+ TRACE("(%p)->(IID_IDispatchEx %p)\n", This, ppv);
+ *ppv = DISPATCHEX(This);
}else if(IsEqualGUID(&IID_IHTMLFramesCollection2, riid)) {
TRACE("(%p)->(IID_IHTMLFramesCollection2 %p)\n", This, ppv);
*ppv = HTMLWINDOW2(This);
}else if(IsEqualGUID(&IID_IHTMLWindow2, riid)) {
TRACE("(%p)->(IID_IHTMLWindow2 %p)\n", This, ppv);
*ppv = HTMLWINDOW2(This);
+ }else if(IsEqualGUID(&IID_IHTMLWindow3, riid)) {
+ TRACE("(%p)->(IID_IHTMLWindow2 %p)\n", This, ppv);
+ *ppv = HTMLWINDOW3(This);
+ }else if(dispex_query_interface(&This->dispex, riid, ppv)) {
+ return *ppv ? S_OK : E_NOINTERFACE;
}
if(*ppv) {
@@ -95,25 +103,15 @@ static HRESULT WINAPI HTMLWindow2_GetTypeInfoCount(IHTMLWindow2 *iface, UINT *pc
{
HTMLWindow *This = HTMLWINDOW2_THIS(iface);
- TRACE("(%p)->(%p)\n", This, pctinfo);
-
- *pctinfo = 1;
- return S_OK;
+ return IDispatchEx_GetTypeInfoCount(DISPATCHEX(This), pctinfo);
}
static HRESULT WINAPI HTMLWindow2_GetTypeInfo(IHTMLWindow2 *iface, UINT iTInfo,
LCID lcid, ITypeInfo **ppTInfo)
{
HTMLWindow *This = HTMLWINDOW2_THIS(iface);
- HRESULT hres;
- TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
-
- hres = get_typeinfo(IHTMLWindow2_tid, ppTInfo);
- if(SUCCEEDED(hres))
- ITypeInfo_AddRef(*ppTInfo);
-
- return hres;
+ return IDispatchEx_GetTypeInfo(DISPATCHEX(This), iTInfo, lcid, ppTInfo);
}
static HRESULT WINAPI HTMLWindow2_GetIDsOfNames(IHTMLWindow2 *iface, REFIID riid,
@@ -121,17 +119,8 @@ static HRESULT WINAPI HTMLWindow2_GetIDsOfNames(IHTMLWindow2 *iface, REFIID riid
LCID lcid, DISPID *rgDispId)
{
HTMLWindow *This = HTMLWINDOW2_THIS(iface);
- ITypeInfo *typeinfo;
- HRESULT hres;
- TRACE("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
- lcid, rgDispId);
-
- hres = get_typeinfo(IHTMLWindow2_tid, &typeinfo);
- if(SUCCEEDED(hres))
- hres = ITypeInfo_GetIDsOfNames(typeinfo, rgszNames, cNames, rgDispId);
-
- return hres;
+ return IDispatchEx_GetIDsOfNames(DISPATCHEX(This), riid, rgszNames, cNames, lcid, rgDispId);
}
static HRESULT WINAPI HTMLWindow2_Invoke(IHTMLWindow2 *iface, DISPID dispIdMember,
@@ -139,18 +128,9 @@ static HRESULT WINAPI HTMLWindow2_Invoke(IHTMLWindow2 *iface, DISPID dispIdMembe
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
{
HTMLWindow *This = HTMLWINDOW2_THIS(iface);
- ITypeInfo *typeinfo;
- HRESULT hres;
- TRACE("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
- lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
-
- hres = get_typeinfo(IHTMLWindow2_tid, &typeinfo);
- if(SUCCEEDED(hres))
- hres = ITypeInfo_Invoke(typeinfo, HTMLWINDOW2(This), dispIdMember, wFlags, pDispParams,
- pVarResult, pExcepInfo, puArgErr);
-
- return hres;
+ return IDispatchEx_Invoke(DISPATCHEX(This), dispIdMember, riid, lcid, wFlags, pDispParams,
+ pVarResult, pExcepInfo, puArgErr);
}
static HRESULT WINAPI HTMLWindow2_item(IHTMLWindow2 *iface, VARIANT *pvarIndex, VARIANT *pvarResult)
@@ -206,15 +186,23 @@ static HRESULT WINAPI HTMLWindow2_setTimeout(IHTMLWindow2 *iface, BSTR expressio
long msec, VARIANT *language, long *timerID)
{
HTMLWindow *This = HTMLWINDOW2_THIS(iface);
- FIXME("(%p)->(%s %ld %p %p)\n", This, debugstr_w(expression), msec, language, timerID);
- return E_NOTIMPL;
+ VARIANT expr_var;
+
+ TRACE("(%p)->(%s %ld %p %p)\n", This, debugstr_w(expression), msec, language, timerID);
+
+ V_VT(&expr_var) = VT_BSTR;
+ V_BSTR(&expr_var) = expression;
+
+ return IHTMLWindow3_setTimeout(HTMLWINDOW3(This), &expr_var, msec, language, timerID);
}
static HRESULT WINAPI HTMLWindow2_clearTimeout(IHTMLWindow2 *iface, long timerID)
{
HTMLWindow *This = HTMLWINDOW2_THIS(iface);
- FIXME("(%p)->(%ld)\n", This, timerID);
- return E_NOTIMPL;
+
+ TRACE("(%p)->(%ld)\n", This, timerID);
+
+ return clear_task_timer(This->doc, FALSE, timerID);
}
static HRESULT WINAPI HTMLWindow2_alert(IHTMLWindow2 *iface, BSTR message)
@@ -335,8 +323,13 @@ static HRESULT WINAPI HTMLWindow2_open(IHTMLWindow2 *iface, BSTR url, BSTR name,
static HRESULT WINAPI HTMLWindow2_get_self(IHTMLWindow2 *iface, IHTMLWindow2 **p)
{
HTMLWindow *This = HTMLWINDOW2_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ /* FIXME: We should return kind of proxy window here. */
+ IHTMLWindow2_AddRef(HTMLWINDOW2(This));
+ *p = HTMLWINDOW2(This);
+ return S_OK;
}
static HRESULT WINAPI HTMLWindow2_get_top(IHTMLWindow2 *iface, IHTMLWindow2 **p)
@@ -349,8 +342,13 @@ static HRESULT WINAPI HTMLWindow2_get_top(IHTMLWindow2 *iface, IHTMLWindow2 **p)
static HRESULT WINAPI HTMLWindow2_get_window(IHTMLWindow2 *iface, IHTMLWindow2 **p)
{
HTMLWindow *This = HTMLWINDOW2_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ /* FIXME: We should return kind of proxy window here. */
+ IHTMLWindow2_AddRef(HTMLWINDOW2(This));
+ *p = HTMLWINDOW2(This);
+ return S_OK;
}
static HRESULT WINAPI HTMLWindow2_navigate(IHTMLWindow2 *iface, BSTR url)
@@ -489,8 +487,18 @@ static HRESULT WINAPI HTMLWindow2_get_onscroll(IHTMLWindow2 *iface, VARIANT *p)
static HRESULT WINAPI HTMLWindow2_get_document(IHTMLWindow2 *iface, IHTMLDocument2 **p)
{
HTMLWindow *This = HTMLWINDOW2_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ if(This->doc) {
+ /* FIXME: We should return a wrapper object here */
+ *p = HTMLDOC(This->doc);
+ IHTMLDocument2_AddRef(*p);
+ }else {
+ *p = NULL;
+ }
+
+ return S_OK;
}
static HRESULT WINAPI HTMLWindow2_get_event(IHTMLWindow2 *iface, IHTMLEventObj **p)
@@ -584,15 +592,22 @@ static HRESULT WINAPI HTMLWindow2_setInterval(IHTMLWindow2 *iface, BSTR expressi
long msec, VARIANT *language, long *timerID)
{
HTMLWindow *This = HTMLWINDOW2_THIS(iface);
- FIXME("(%p)->(%s %ld %p %p)\n", This, debugstr_w(expression), msec, language, timerID);
- return E_NOTIMPL;
+ VARIANT expr;
+
+ TRACE("(%p)->(%s %ld %p %p)\n", This, debugstr_w(expression), msec, language, timerID);
+
+ V_VT(&expr) = VT_BSTR;
+ V_BSTR(&expr) = expression;
+ return IHTMLWindow3_setInterval(HTMLWINDOW3(This), &expr, msec, language, timerID);
}
static HRESULT WINAPI HTMLWindow2_clearInterval(IHTMLWindow2 *iface, long timerID)
{
HTMLWindow *This = HTMLWINDOW2_THIS(iface);
- FIXME("(%p)->(%ld)\n", This, timerID);
- return E_NOTIMPL;
+
+ TRACE("(%p)->(%ld)\n", This, timerID);
+
+ return clear_task_timer(This->doc, TRUE, timerID);
}
static HRESULT WINAPI HTMLWindow2_put_offscreenBuffering(IHTMLWindow2 *iface, VARIANT v)
@@ -627,15 +642,29 @@ static HRESULT WINAPI HTMLWindow2_toString(IHTMLWindow2 *iface, BSTR *String)
static HRESULT WINAPI HTMLWindow2_scrollBy(IHTMLWindow2 *iface, long x, long y)
{
HTMLWindow *This = HTMLWINDOW2_THIS(iface);
- FIXME("(%p)->(%ld %ld)\n", This, x, y);
- return E_NOTIMPL;
+ nsresult nsres;
+
+ TRACE("(%p)->(%ld %ld)\n", This, x, y);
+
+ nsres = nsIDOMWindow_ScrollBy(This->nswindow, x, y);
+ if(NS_FAILED(nsres))
+ ERR("ScrollBy failed: %08x\n", nsres);
+
+ return S_OK;
}
static HRESULT WINAPI HTMLWindow2_scrollTo(IHTMLWindow2 *iface, long x, long y)
{
HTMLWindow *This = HTMLWINDOW2_THIS(iface);
- FIXME("(%p)->(%ld %ld)\n", This, x, y);
- return E_NOTIMPL;
+ nsresult nsres;
+
+ TRACE("(%p)->(%ld %ld)\n", This, x, y);
+
+ nsres = nsIDOMWindow_ScrollTo(This->nswindow, x, y);
+ if(NS_FAILED(nsres))
+ ERR("ScrollTo failed: %08x\n", nsres);
+
+ return S_OK;
}
static HRESULT WINAPI HTMLWindow2_moveTo(IHTMLWindow2 *iface, long x, long y)
@@ -762,6 +791,392 @@ static const IHTMLWindow2Vtbl HTMLWindow2Vtbl = {
HTMLWindow2_get_external
};
+#define HTMLWINDOW3_THIS(iface) DEFINE_THIS(HTMLWindow, HTMLWindow3, iface)
+
+static HRESULT WINAPI HTMLWindow3_QueryInterface(IHTMLWindow3 *iface, REFIID riid, void **ppv)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+
+ return IHTMLWindow2_QueryInterface(HTMLWINDOW2(This), riid, ppv);
+}
+
+static ULONG WINAPI HTMLWindow3_AddRef(IHTMLWindow3 *iface)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+
+ return IHTMLWindow2_AddRef(HTMLWINDOW2(This));
+}
+
+static ULONG WINAPI HTMLWindow3_Release(IHTMLWindow3 *iface)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+
+ return IHTMLWindow2_Release(HTMLWINDOW2(This));
+}
+
+static HRESULT WINAPI HTMLWindow3_GetTypeInfoCount(IHTMLWindow3 *iface, UINT *pctinfo)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+
+ return IDispatchEx_GetTypeInfoCount(DISPATCHEX(This), pctinfo);
+}
+
+static HRESULT WINAPI HTMLWindow3_GetTypeInfo(IHTMLWindow3 *iface, UINT iTInfo,
+ LCID lcid, ITypeInfo **ppTInfo)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+
+ return IDispatchEx_GetTypeInfo(DISPATCHEX(This), iTInfo, lcid, ppTInfo);
+}
+
+static HRESULT WINAPI HTMLWindow3_GetIDsOfNames(IHTMLWindow3 *iface, REFIID riid,
+ LPOLESTR *rgszNames, UINT cNames,
+ LCID lcid, DISPID *rgDispId)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+
+ return IDispatchEx_GetIDsOfNames(DISPATCHEX(This), riid, rgszNames, cNames, lcid, rgDispId);
+}
+
+static HRESULT WINAPI HTMLWindow3_Invoke(IHTMLWindow3 *iface, DISPID dispIdMember,
+ REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
+ VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+
+ return IDispatchEx_Invoke(DISPATCHEX(This), dispIdMember, riid, lcid, wFlags, pDispParams,
+ pVarResult, pExcepInfo, puArgErr);
+}
+
+static HRESULT WINAPI HTMLWindow3_get_screenLeft(IHTMLWindow3 *iface, long *p)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLWindow3_get_screenTop(IHTMLWindow3 *iface, long *p)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLWindow3_attachEvent(IHTMLWindow3 *iface, BSTR event, IDispatch *pDisp, VARIANT_BOOL *pfResult)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+ FIXME("(%p)->(%s %p %p)\n", This, debugstr_w(event), pDisp, pfResult);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLWindow3_detachEvent(IHTMLWindow3 *iface, BSTR event, IDispatch *pDisp)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+ FIXME("(%p)->()\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT window_set_timer(HTMLWindow *This, VARIANT *expr, long msec, VARIANT *language,
+ BOOL interval, long *timer_id)
+{
+ IDispatch *disp = NULL;
+
+ switch(V_VT(expr)) {
+ case VT_DISPATCH:
+ disp = V_DISPATCH(expr);
+ IDispatch_AddRef(disp);
+ break;
+
+ case VT_BSTR:
+ disp = script_parse_event(This->doc, V_BSTR(expr));
+ break;
+
+ default:
+ FIXME("unimplemented vt=%d\n", V_VT(expr));
+ return E_NOTIMPL;
+ }
+
+ if(!disp)
+ return E_FAIL;
+
+ *timer_id = set_task_timer(This->doc, msec, interval, disp);
+ IDispatch_Release(disp);
+
+ return S_OK;
+}
+
+static HRESULT WINAPI HTMLWindow3_setTimeout(IHTMLWindow3 *iface, VARIANT *expression, long msec,
+ VARIANT *language, long *timerID)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+
+ TRACE("(%p)->(%p(%d) %ld %p %p)\n", This, expression, V_VT(expression), msec, language, timerID);
+
+ return window_set_timer(This, expression, msec, language, FALSE, timerID);
+}
+
+static HRESULT WINAPI HTMLWindow3_setInterval(IHTMLWindow3 *iface, VARIANT *expression, long msec,
+ VARIANT *language, long *timerID)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+
+ TRACE("(%p)->(%p %ld %p %p)\n", This, expression, msec, language, timerID);
+
+ return window_set_timer(This, expression, msec, language, TRUE, timerID);
+}
+
+static HRESULT WINAPI HTMLWindow3_print(IHTMLWindow3 *iface)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+ FIXME("(%p)\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLWindow3_put_onbeforeprint(IHTMLWindow3 *iface, VARIANT v)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+ FIXME("(%p)->()\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLWindow3_get_onbeforeprint(IHTMLWindow3 *iface, VARIANT *p)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLWindow3_put_onafterprint(IHTMLWindow3 *iface, VARIANT v)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+ FIXME("(%p)->()\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLWindow3_get_onafterprint(IHTMLWindow3 *iface, VARIANT *p)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLWindow3_get_clipboardData(IHTMLWindow3 *iface, IHTMLDataTransfer **p)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLWindow3_showModelessDialog(IHTMLWindow3 *iface, BSTR url,
+ VARIANT *varArgIn, VARIANT *options, IHTMLWindow2 **pDialog)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+ FIXME("(%p)->(%s %p %p %p)\n", This, debugstr_w(url), varArgIn, options, pDialog);
+ return E_NOTIMPL;
+}
+
+#undef HTMLWINDOW3_THIS
+
+static const IHTMLWindow3Vtbl HTMLWindow3Vtbl = {
+ HTMLWindow3_QueryInterface,
+ HTMLWindow3_AddRef,
+ HTMLWindow3_Release,
+ HTMLWindow3_GetTypeInfoCount,
+ HTMLWindow3_GetTypeInfo,
+ HTMLWindow3_GetIDsOfNames,
+ HTMLWindow3_Invoke,
+ HTMLWindow3_get_screenLeft,
+ HTMLWindow3_get_screenTop,
+ HTMLWindow3_attachEvent,
+ HTMLWindow3_detachEvent,
+ HTMLWindow3_setTimeout,
+ HTMLWindow3_setInterval,
+ HTMLWindow3_print,
+ HTMLWindow3_put_onbeforeprint,
+ HTMLWindow3_get_onbeforeprint,
+ HTMLWindow3_put_onafterprint,
+ HTMLWindow3_get_onafterprint,
+ HTMLWindow3_get_clipboardData,
+ HTMLWindow3_showModelessDialog
+};
+
+#define DISPEX_THIS(iface) DEFINE_THIS(HTMLWindow, IDispatchEx, iface)
+
+static HRESULT WINAPI WindowDispEx_QueryInterface(IDispatchEx *iface, REFIID riid, void **ppv)
+{
+ HTMLWindow *This = DISPEX_THIS(iface);
+
+ return IHTMLWindow2_QueryInterface(HTMLWINDOW2(This), riid, ppv);
+}
+
+static ULONG WINAPI WindowDispEx_AddRef(IDispatchEx *iface)
+{
+ HTMLWindow *This = DISPEX_THIS(iface);
+
+ return IHTMLWindow2_AddRef(HTMLWINDOW2(This));
+}
+
+static ULONG WINAPI WindowDispEx_Release(IDispatchEx *iface)
+{
+ HTMLWindow *This = DISPEX_THIS(iface);
+
+ return IHTMLWindow2_Release(HTMLWINDOW2(This));
+}
+
+static HRESULT WINAPI WindowDispEx_GetTypeInfoCount(IDispatchEx *iface, UINT *pctinfo)
+{
+ HTMLWindow *This = DISPEX_THIS(iface);
+
+ TRACE("(%p)->(%p)\n", This, pctinfo);
+
+ return IDispatchEx_GetTypeInfoCount(DISPATCHEX(&This->dispex), pctinfo);
+}
+
+static HRESULT WINAPI WindowDispEx_GetTypeInfo(IDispatchEx *iface, UINT iTInfo,
+ LCID lcid, ITypeInfo **ppTInfo)
+{
+ HTMLWindow *This = DISPEX_THIS(iface);
+
+ TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
+
+ return IDispatchEx_GetTypeInfo(DISPATCHEX(&This->dispex), iTInfo, lcid, ppTInfo);
+}
+
+static HRESULT WINAPI WindowDispEx_GetIDsOfNames(IDispatchEx *iface, REFIID riid,
+ LPOLESTR *rgszNames, UINT cNames,
+ LCID lcid, DISPID *rgDispId)
+{
+ HTMLWindow *This = DISPEX_THIS(iface);
+
+ TRACE("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
+ lcid, rgDispId);
+
+ /* FIXME: Use script dispatch */
+
+ return IDispatchEx_GetIDsOfNames(DISPATCHEX(&This->dispex), riid, rgszNames, cNames, lcid, rgDispId);
+}
+
+static HRESULT WINAPI WindowDispEx_Invoke(IDispatchEx *iface, DISPID dispIdMember,
+ REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
+ VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
+{
+ HTMLWindow *This = DISPEX_THIS(iface);
+
+ TRACE("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
+ lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+
+ /* FIXME: Use script dispatch */
+
+ return IDispatchEx_Invoke(DISPATCHEX(&This->dispex), dispIdMember, riid, lcid, wFlags, pDispParams,
+ pVarResult, pExcepInfo, puArgErr);
+}
+
+static HRESULT WINAPI WindowDispEx_GetDispID(IDispatchEx *iface, BSTR bstrName, DWORD grfdex, DISPID *pid)
+{
+ HTMLWindow *This = DISPEX_THIS(iface);
+
+ TRACE("(%p)->(%s %x %p)\n", This, debugstr_w(bstrName), grfdex, pid);
+
+ return IDispatchEx_GetDispID(DISPATCHEX(&This->dispex), bstrName, grfdex, pid);
+}
+
+static HRESULT WINAPI WindowDispEx_InvokeEx(IDispatchEx *iface, DISPID id, LCID lcid, WORD wFlags, DISPPARAMS *pdp,
+ VARIANT *pvarRes, EXCEPINFO *pei, IServiceProvider *pspCaller)
+{
+ HTMLWindow *This = DISPEX_THIS(iface);
+
+ TRACE("(%p)->(%x %x %x %p %p %p %p)\n", This, id, lcid, wFlags, pdp, pvarRes, pei, pspCaller);
+
+ return IDispatchEx_InvokeEx(DISPATCHEX(&This->dispex), id, lcid, wFlags, pdp, pvarRes, pei, pspCaller);
+}
+
+static HRESULT WINAPI WindowDispEx_DeleteMemberByName(IDispatchEx *iface, BSTR bstrName, DWORD grfdex)
+{
+ HTMLWindow *This = DISPEX_THIS(iface);
+
+ TRACE("(%p)->(%s %x)\n", This, debugstr_w(bstrName), grfdex);
+
+ return IDispatchEx_DeleteMemberByName(DISPATCHEX(&This->dispex), bstrName, grfdex);
+}
+
+static HRESULT WINAPI WindowDispEx_DeleteMemberByDispID(IDispatchEx *iface, DISPID id)
+{
+ HTMLWindow *This = DISPEX_THIS(iface);
+
+ TRACE("(%p)->(%x)\n", This, id);
+
+ return IDispatchEx_DeleteMemberByDispID(DISPATCHEX(&This->dispex), id);
+}
+
+static HRESULT WINAPI WindowDispEx_GetMemberProperties(IDispatchEx *iface, DISPID id, DWORD grfdexFetch, DWORD *pgrfdex)
+{
+ HTMLWindow *This = DISPEX_THIS(iface);
+
+ TRACE("(%p)->(%x %x %p)\n", This, id, grfdexFetch, pgrfdex);
+
+ return IDispatchEx_GetMemberProperties(DISPATCHEX(&This->dispex), id, grfdexFetch, pgrfdex);
+}
+
+static HRESULT WINAPI WindowDispEx_GetMemberName(IDispatchEx *iface, DISPID id, BSTR *pbstrName)
+{
+ HTMLWindow *This = DISPEX_THIS(iface);
+
+ TRACE("(%p)->(%x %p)\n", This, id, pbstrName);
+
+ return IDispatchEx_GetMemberName(DISPATCHEX(&This->dispex), id, pbstrName);
+}
+
+static HRESULT WINAPI WindowDispEx_GetNextDispID(IDispatchEx *iface, DWORD grfdex, DISPID id, DISPID *pid)
+{
+ HTMLWindow *This = DISPEX_THIS(iface);
+
+ TRACE("(%p)->(%x %x %p)\n", This, grfdex, id, pid);
+
+ return IDispatchEx_GetNextDispID(DISPATCHEX(&This->dispex), grfdex, id, pid);
+}
+
+static HRESULT WINAPI WindowDispEx_GetNameSpaceParent(IDispatchEx *iface, IUnknown **ppunk)
+{
+ HTMLWindow *This = DISPEX_THIS(iface);
+
+ TRACE("(%p)->(%p)\n", This, ppunk);
+
+ *ppunk = NULL;
+ return S_OK;
+}
+
+#undef DISPEX_THIS
+
+static const IDispatchExVtbl WindowDispExVtbl = {
+ WindowDispEx_QueryInterface,
+ WindowDispEx_AddRef,
+ WindowDispEx_Release,
+ WindowDispEx_GetTypeInfoCount,
+ WindowDispEx_GetTypeInfo,
+ WindowDispEx_GetIDsOfNames,
+ WindowDispEx_Invoke,
+ WindowDispEx_GetDispID,
+ WindowDispEx_InvokeEx,
+ WindowDispEx_DeleteMemberByName,
+ WindowDispEx_DeleteMemberByDispID,
+ WindowDispEx_GetMemberProperties,
+ WindowDispEx_GetMemberName,
+ WindowDispEx_GetNextDispID,
+ WindowDispEx_GetNameSpaceParent
+};
+
+static const tid_t HTMLWindow_iface_tids[] = {
+ IHTMLWindow2_tid,
+ IHTMLWindow3_tid,
+ 0
+};
+static dispex_static_data_t HTMLWindow_dispex = {
+ NULL,
+ DispHTMLWindow2_tid,
+ NULL,
+ HTMLWindow_iface_tids
+};
+
static const char wineConfig_func[] =
"window.__defineGetter__(\"external\",function() {\n"
" return window.__wineWindow__.external;\n"
@@ -869,10 +1284,13 @@ HTMLWindow *HTMLWindow_Create(HTMLDocument *doc)
HTMLWindow *ret = heap_alloc(sizeof(HTMLWindow));
ret->lpHTMLWindow2Vtbl = &HTMLWindow2Vtbl;
+ ret->lpHTMLWindow3Vtbl = &HTMLWindow3Vtbl;
+ ret->lpIDispatchExVtbl = &WindowDispExVtbl;
ret->ref = 1;
- ret->nswindow = NULL;
ret->doc = doc;
+ init_dispex(&ret->dispex, (IUnknown*)HTMLWINDOW2(ret), &HTMLWindow_dispex);
+
if(doc->nscontainer) {
nsresult nsres;
diff --git a/reactos/dll/win32/mshtml/install.c b/reactos/dll/win32/mshtml/install.c
index b991c4958bb..605fa055cb1 100644
--- a/reactos/dll/win32/mshtml/install.c
+++ b/reactos/dll/win32/mshtml/install.c
@@ -93,7 +93,7 @@ static void set_registry(LPCSTR install_dir)
WCHAR mshtml_key[100];
LPWSTR gecko_path;
HKEY hkey;
- DWORD res, len, size;
+ DWORD res, len;
static const WCHAR wszGeckoPath[] = {'G','e','c','k','o','P','a','t','h',0};
static const WCHAR wszWineGecko[] = {'w','i','n','e','_','g','e','c','k','o',0};
@@ -120,7 +120,6 @@ static void set_registry(LPCSTR install_dir)
memcpy(gecko_path+len, wszWineGecko, sizeof(wszWineGecko));
- size = len*sizeof(WCHAR)+sizeof(wszWineGecko);
res = RegSetValueExW(hkey, wszGeckoPath, 0, REG_SZ, (LPVOID)gecko_path,
len*sizeof(WCHAR)+sizeof(wszWineGecko));
heap_free(gecko_path);
@@ -203,7 +202,7 @@ static BOOL install_from_unix_file(const char *file_name)
}
dos_file_name = wine_get_dos_file_name(file_name);
- if(!file_name) {
+ if(!dos_file_name) {
ERR("Could not get dos file name of %s\n", debugstr_a(file_name));
return FALSE;
}
diff --git a/reactos/dll/win32/mshtml/main.c b/reactos/dll/win32/mshtml/main.c
index 0389833d0d7..1c52c5a07be 100644
--- a/reactos/dll/win32/mshtml/main.c
+++ b/reactos/dll/win32/mshtml/main.c
@@ -49,47 +49,6 @@ DWORD mshtml_tls = 0;
static HINSTANCE shdoclc = NULL;
-static ITypeLib *typelib;
-static ITypeInfo *typeinfos[LAST_tid];
-
-static REFIID tid_ids[] = {
- &IID_IHTMLWindow2
-};
-
-HRESULT get_typeinfo(enum tid_t tid, ITypeInfo **typeinfo)
-{
- HRESULT hres;
-
- if(!typelib) {
- ITypeLib *tl;
-
- hres = LoadRegTypeLib(&LIBID_MSHTML, 4, 0, LOCALE_SYSTEM_DEFAULT, &tl);
- if(FAILED(hres)) {
- ERR("LoadRegTypeLib failed: %08x\n", hres);
- return hres;
- }
-
- if(InterlockedCompareExchangePointer((void**)&typelib, tl, NULL))
- ITypeLib_Release(tl);
- }
-
- if(!typeinfos[tid]) {
- ITypeInfo *typeinfo;
-
- hres = ITypeLib_GetTypeInfoOfGuid(typelib, tid_ids[tid], &typeinfo);
- if(FAILED(hres)) {
- ERR("GetTypeInfoOfGuid failed: %08x\n", hres);
- return hres;
- }
-
- if(InterlockedCompareExchangePointer((void**)(typeinfos+tid), typeinfo, NULL))
- ITypeInfo_Release(typeinfo);
- }
-
- *typeinfo = typeinfos[tid];
- return S_OK;
-}
-
static void thread_detach(void)
{
thread_data_t *thread_data;
@@ -107,16 +66,7 @@ static void thread_detach(void)
static void process_detach(void)
{
close_gecko();
-
- if(typelib) {
- unsigned i;
-
- for(i=0; i < sizeof(typeinfos)/sizeof(*typeinfos); i++)
- if(typeinfos[i])
- ITypeInfo_Release(typeinfos[i]);
-
- ITypeLib_Release(typelib);
- }
+ release_typelib();
if(shdoclc)
FreeLibrary(shdoclc);
diff --git a/reactos/dll/win32/mshtml/mshtml.inf b/reactos/dll/win32/mshtml/mshtml.inf
index e0098ce4652..f2882362054 100644
--- a/reactos/dll/win32/mshtml/mshtml.inf
+++ b/reactos/dll/win32/mshtml/mshtml.inf
@@ -290,7 +290,7 @@ HKCR,"MIME\Database\Content Type\image/gif","CLSID",,"%CLSID_HTMLDocument%"
HKCR,"MIME\Database\Content Type\image/gif","Extension",,".gif"
HKCR,"MIME\Database\Content Type\image/gif","Image Filter CLSID",,"%CLSID_IImageDecodeFilter%"
HKCR,"MIME\Database\Content Type\image/gif\Bits","0",1,04,00,00,00,FF,FF,FF,FF,47,49,46,38
-HKCR,".gif",,,"giffile"
+HKCR,".gif",,2,"giffile"
HKCR,".gif","Content Type",,"image/gif"
HKCR,"giffile",,,"GIF Image"
HKCR,"giffile\CLSID",,,"%CLSID_HTMLDocument%"
@@ -329,7 +329,7 @@ HKCR,"MIME\Database\Content Type\image/x-icon","Image Filter CLSID",,"%CLSID_IIm
HKCR,".ico","Content Type",,"image/x-icon"
;; JPE
-HKCR,".jpe",,,"jpegfile"
+HKCR,".jpe",,2,"jpegfile"
HKCR,".jpe","Content Type",,"image/jpeg"
HKCR,"jpegfile",,,"JPEG Image"
HKCR,"jpegfile\CLSID",,,"%CLSID_HTMLDocument%"
@@ -344,7 +344,7 @@ HKCR,"MIME\Database\Content Type\image/jpeg","CLSID",,"%CLSID_HTMLDocument%"
HKCR,"MIME\Database\Content Type\image/jpeg","Extension",,".jpg"
HKCR,"MIME\Database\Content Type\image/jpeg\Bits","0",1,02,00,00,00,FF,FF,FF,D8
HKCR,"MIME\Database\Content Type\image/jpeg","Image Filter CLSID",,"%CLSID_IImageDecodeFilter%"
-HKCR,".jpeg",,,"jpegfile"
+HKCR,".jpeg",,2,"jpegfile"
HKCR,".jpeg","Content Type",,"image/jpeg"
HKCR,"jpegfile",,,"JPEG Image"
HKCR,"jpegfile\CLSID",,,"%CLSID_HTMLDocument%"
@@ -355,7 +355,7 @@ HKCR,"jpegfile\shell\open\ddeexec\Topic",,,"WWW_OpenURL"
;; HKCR,"jpegfile\DefaultIcon",,,"%IEXPLORE%,8"
;; JPG
-HKCR,".jpg",,,"jpegfile"
+HKCR,".jpg",,2,"jpegfile"
HKCR,".jpg","Content Type",,"image/jpeg"
HKCR,"jpegfile",,,"JPEG Image"
HKCR,"jpegfile\CLSID",,,"%CLSID_HTMLDocument%"
@@ -367,9 +367,9 @@ HKCR,"jpegfile\shell\open\ddeexec\Topic",,,"WWW_OpenURL"
;; MHTML
HKCR,"MIME\Database\Content Type\message/rfc822","CLSID",,"%CLSID_MHTMLDocument%"
-HKCR,".mhtml",,,"mhtmlfile"
+HKCR,".mhtml",,2,"mhtmlfile"
HKCR,".mhtml","Content Type",,"message/rfc822"
-HKCR,".mht",,,"mhtmlfile"
+HKCR,".mht",,2,"mhtmlfile"
HKCR,".mht","Content Type",,"message/rfc822"
HKCR,"mhtmlfile",,,"MHTML Document"
HKCR,"mhtmlfile\BrowseInPlace",,,""
@@ -380,7 +380,7 @@ HKCR,"MIME\Database\Content Type\image/pjpeg","CLSID",,"%CLSID_HTMLDocument%"
HKCR,"MIME\Database\Content Type\image/pjpeg","Extension",,".jpg"
HKCR,"MIME\Database\Content Type\image/pjpeg\Bits","0",1,02,00,00,00,FF,FF,FF,D8
HKCR,"MIME\Database\Content Type\image/pjpeg","Image Filter CLSID",,"%CLSID_IImageDecodeFilter%"
-HKCR,".jfif",,,"pjpegfile"
+HKCR,".jfif",,2,"pjpegfile"
HKCR,".jfif","Content Type",,"image/jpeg"
HKCR,"pjpegfile",,,"JPEG Image"
HKCR,"pjpegfile\CLSID",,,"%CLSID_HTMLDocument%"
@@ -393,7 +393,7 @@ HKCR,"pjpegfile\shell\open\ddeexec\Topic",,,"WWW_OpenURL"
;; PNG
HKCR,"MIME\Database\Content Type\image/png","Extension",,".png"
HKCR,"MIME\Database\Content Type\image/x-png","Extension",,".png"
-HKCR,".png",,,"pngfile"
+HKCR,".png",,2,"pngfile"
HKCR,".png","Content Type",,"image/png"
HKCR,"pngfile",,,"PNG Image"
HKCR,"pngfile\CLSID",,,"%CLSID_HTMLDocument%"
diff --git a/reactos/dll/win32/mshtml/mshtml.rbuild b/reactos/dll/win32/mshtml/mshtml.rbuild
index 04e148df242..5db3ddd01a1 100644
--- a/reactos/dll/win32/mshtml/mshtml.rbuild
+++ b/reactos/dll/win32/mshtml/mshtml.rbuild
@@ -2,7 +2,7 @@
-
+
.
include/reactos/wine
@@ -10,15 +10,20 @@
0x600
0x600
conpoint.c
+ dispex.c
editor.c
hlink.c
htmlanchor.c
htmlbody.c
+ htmlcomment.c
htmldoc.c
htmldoc3.c
htmldoc5.c
htmlelem.c
htmlelem2.c
+ htmlevent.c
+ htmlgeneric.c
+ htmlimg.c
htmlinput.c
htmllocation.c
htmlnode.c
@@ -28,8 +33,9 @@
htmlstyle.c
htmlstylesheet.c
htmltable.c
- htmltextcont.c
htmltextarea.c
+ htmltextcont.c
+ htmltextnode.c
htmlwindow.c
install.c
loadopts.c
@@ -52,10 +58,11 @@
txtrange.c
view.c
rsrc.rc
- nsiface.idl
.
mshtml.spec
wine
+ strmiids
+ uuid
urlmon
shlwapi
ole32
@@ -64,7 +71,10 @@
gdi32
advapi32
kernel32
- uuid
ntdll
+ mshtml_nsiface_header
+
+
+ nsiface.idl
diff --git a/reactos/dll/win32/mshtml/mshtml_private.h b/reactos/dll/win32/mshtml/mshtml_private.h
index 2976fa84b2c..ef7868df0bc 100644
--- a/reactos/dll/win32/mshtml/mshtml_private.h
+++ b/reactos/dll/win32/mshtml/mshtml_private.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2006 Jacek Caban for CodeWeavers
+ * Copyright 2005-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
@@ -21,6 +21,7 @@
#include "mshtml.h"
#include "mshtmhst.h"
#include "hlink.h"
+#include "dispex.h"
#include "wine/list.h"
#include "wine/unicode.h"
@@ -55,15 +56,99 @@ typedef struct HTMLDOMNode HTMLDOMNode;
typedef struct ConnectionPoint ConnectionPoint;
typedef struct BSCallback BSCallback;
typedef struct nsChannelBSC nsChannelBSC;
+typedef struct event_target_t event_target_t;
+
+/* NOTE: make sure to keep in sync with dispex.c */
+typedef enum {
+ NULL_tid,
+ DispDOMChildrenCollection_tid,
+ DispHTMLCommentElement_tid,
+ DispHTMLDocument_tid,
+ DispHTMLDOMTextNode_tid,
+ DispHTMLElementCollection_tid,
+ DispHTMLGenericElement_tid,
+ DispHTMLImg_tid,
+ DispHTMLInputElement_tid,
+ DispHTMLOptionElement_tid,
+ DispHTMLSelectElement_tid,
+ DispHTMLStyle_tid,
+ DispHTMLUnknownElement_tid,
+ DispHTMLWindow2_tid,
+ IHTMLCommentElement_tid,
+ IHTMLDocument2_tid,
+ IHTMLDocument3_tid,
+ IHTMLDocument4_tid,
+ IHTMLDocument5_tid,
+ IHTMLDOMChildrenCollection_tid,
+ IHTMLDOMNode_tid,
+ IHTMLDOMNode2_tid,
+ IHTMLDOMTextNode_tid,
+ IHTMLElement_tid,
+ IHTMLElement2_tid,
+ IHTMLElementCollection_tid,
+ IHTMLGenericElement_tid,
+ IHTMLImgElement_tid,
+ IHTMLInputElement_tid,
+ IHTMLOptionElement_tid,
+ IHTMLSelectElement_tid,
+ IHTMLStyle_tid,
+ IHTMLWindow2_tid,
+ IHTMLWindow3_tid,
+ IOmNavigator_tid,
+ LAST_tid
+} tid_t;
+
+typedef enum {
+ EVENTID_CHANGE,
+ EVENTID_CLICK,
+ EVENTID_KEYUP,
+ EVENTID_LOAD,
+ EVENTID_LAST
+} eventid_t;
+
+typedef struct dispex_data_t dispex_data_t;
+typedef struct dispex_dynamic_data_t dispex_dynamic_data_t;
+
+#define MSHTML_DISPID_CUSTOM_MIN 0x60000000
+#define MSHTML_DISPID_CUSTOM_MAX 0x6fffffff
typedef struct {
+ HRESULT (*get_dispid)(IUnknown*,BSTR,DWORD,DISPID*);
+ HRESULT (*invoke)(IUnknown*,DISPID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,IServiceProvider*);
+} dispex_static_data_vtbl_t;
+
+typedef struct {
+ const dispex_static_data_vtbl_t *vtbl;
+ const tid_t disp_tid;
+ dispex_data_t *data;
+ const tid_t* const iface_tids;
+} dispex_static_data_t;
+
+typedef struct {
+ const IDispatchExVtbl *lpIDispatchExVtbl;
+
+ IUnknown *outer;
+
+ dispex_static_data_t *data;
+ dispex_dynamic_data_t *dynamic_data;
+} DispatchEx;
+
+void init_dispex(DispatchEx*,IUnknown*,dispex_static_data_t*);
+BOOL dispex_query_interface(DispatchEx*,REFIID,void**);
+
+typedef struct {
+ DispatchEx dispex;
const IHTMLWindow2Vtbl *lpHTMLWindow2Vtbl;
+ const IHTMLWindow3Vtbl *lpHTMLWindow3Vtbl;
+ const IDispatchExVtbl *lpIDispatchExVtbl;
LONG ref;
HTMLDocument *doc;
nsIDOMWindow *nswindow;
+ IHTMLEventObj *event;
+
struct list entry;
} HTMLWindow;
@@ -114,6 +199,7 @@ typedef struct {
} HTMLOptionElementFactory;
struct HTMLDocument {
+ DispatchEx dispex;
const IHTMLDocument2Vtbl *lpHTMLDocument2Vtbl;
const IHTMLDocument3Vtbl *lpHTMLDocument3Vtbl;
const IHTMLDocument4Vtbl *lpHTMLDocument4Vtbl;
@@ -133,6 +219,7 @@ struct HTMLDocument {
const IHlinkTargetVtbl *lpHlinkTargetVtbl;
const IPersistStreamInitVtbl *lpPersistStreamInitVtbl;
const ICustomDocVtbl *lpCustomDocVtbl;
+ const IDispatchExVtbl *lpIDispatchExVtbl;
LONG ref;
@@ -205,6 +292,7 @@ struct NSContainer {
nsEventListener keypress_listener;
nsEventListener load_listener;
nsEventListener node_insert_listener;
+ nsEventListener htmlevent_listener;
nsIWebBrowser *webbrowser;
nsIWebNavigation *navigation;
@@ -225,6 +313,8 @@ struct NSContainer {
nsChannelBSC *bscallback; /* hack */
HWND reset_focus; /* hack */
+
+ BOOL event_vector[EVENTID_LAST];
};
typedef struct {
@@ -251,13 +341,16 @@ typedef struct {
} NodeImplVtbl;
struct HTMLDOMNode {
- const IHTMLDOMNodeVtbl *lpHTMLDOMNodeVtbl;
+ DispatchEx dispex;
+ const IHTMLDOMNodeVtbl *lpHTMLDOMNodeVtbl;
+ const IHTMLDOMNode2Vtbl *lpHTMLDOMNode2Vtbl;
const NodeImplVtbl *vtbl;
LONG ref;
nsIDOMNode *nsnode;
HTMLDocument *doc;
+ event_target_t *event_target;
HTMLDOMNode *next;
};
@@ -281,6 +374,7 @@ typedef struct {
} HTMLTextContainer;
#define HTMLWINDOW2(x) ((IHTMLWindow2*) &(x)->lpHTMLWindow2Vtbl)
+#define HTMLWINDOW3(x) ((IHTMLWindow3*) &(x)->lpHTMLWindow3Vtbl)
#define HTMLDOC(x) ((IHTMLDocument2*) &(x)->lpHTMLDocument2Vtbl)
#define HTMLDOC3(x) ((IHTMLDocument3*) &(x)->lpHTMLDocument3Vtbl)
@@ -328,12 +422,15 @@ typedef struct {
#define HTMLELEM(x) ((IHTMLElement*) &(x)->lpHTMLElementVtbl)
#define HTMLELEM2(x) ((IHTMLElement2*) &(x)->lpHTMLElement2Vtbl)
#define HTMLDOMNODE(x) ((IHTMLDOMNode*) &(x)->lpHTMLDOMNodeVtbl)
+#define HTMLDOMNODE2(x) ((IHTMLDOMNode2*) &(x)->lpHTMLDOMNode2Vtbl)
#define HTMLTEXTCONT(x) ((IHTMLTextContainer*) &(x)->lpHTMLTextContainerVtbl)
#define HTMLOPTFACTORY(x) ((IHTMLOptionElementFactory*) &(x)->lpHTMLOptionElementFactoryVtbl)
#define HTMLLOCATION(x) ((IHTMLLocation*) &(x)->lpHTMLLocationVtbl)
+#define DISPATCHEX(x) ((IDispatchEx*) &(x)->lpIDispatchExVtbl)
+
#define DEFINE_THIS2(cls,ifc,iface) ((cls*)((BYTE*)(iface)-offsetof(cls,ifc)))
#define DEFINE_THIS(cls,ifc,iface) DEFINE_THIS2(cls,lp ## ifc ## Vtbl,iface)
@@ -405,13 +502,20 @@ nsIWritableVariant *create_nsvariant(void);
void nsnode_to_nsstring(nsIDOMNode*,nsAString*);
void get_editor_controller(NSContainer*);
void init_nsevents(NSContainer*);
+void add_nsevent_listener(NSContainer*,LPCWSTR);
nsresult get_nsinterface(nsISupports*,REFIID,void**);
+void check_event_attr(HTMLDocument*,nsIDOMElement*);
+void release_event_target(event_target_t*);
+void fire_event(HTMLDocument*,eventid_t,nsIDOMNode*);
+HRESULT set_node_event(HTMLDOMNode*,eventid_t,VARIANT*);
+eventid_t str_to_eid(LPCWSTR);
+
void set_document_bscallback(HTMLDocument*,nsChannelBSC*);
void set_current_mon(HTMLDocument*,IMoniker*);
HRESULT start_binding(HTMLDocument*,BSCallback*,IBindCtx*);
-HRESULT bind_mon_to_buffer(HTMLDocument*,IMoniker*,void**);
+HRESULT bind_mon_to_buffer(HTMLDocument*,IMoniker*,void**,DWORD*);
nsChannelBSC *create_channelbsc(IMoniker*);
HRESULT channelbsc_load_stream(nsChannelBSC*,IStream*);
@@ -427,16 +531,22 @@ IHTMLStyleSheetsCollection *HTMLStyleSheetsCollection_Create(nsIDOMStyleSheetLis
void detach_selection(HTMLDocument*);
void detach_ranges(HTMLDocument*);
-HTMLElement *HTMLElement_Create(nsIDOMNode*);
+HTMLDOMNode *HTMLDOMTextNode_Create(HTMLDocument*,nsIDOMNode*);
+
+HTMLElement *HTMLElement_Create(HTMLDocument*,nsIDOMNode*,BOOL);
+HTMLElement *HTMLCommentElement_Create(HTMLDocument*,nsIDOMNode*);
HTMLElement *HTMLAnchorElement_Create(nsIDOMHTMLElement*);
HTMLElement *HTMLBodyElement_Create(nsIDOMHTMLElement*);
+HTMLElement *HTMLImgElement_Create(nsIDOMHTMLElement*);
HTMLElement *HTMLInputElement_Create(nsIDOMHTMLElement*);
HTMLElement *HTMLOptionElement_Create(nsIDOMHTMLElement*);
HTMLElement *HTMLScriptElement_Create(nsIDOMHTMLElement*);
HTMLElement *HTMLSelectElement_Create(nsIDOMHTMLElement*);
HTMLElement *HTMLTable_Create(nsIDOMHTMLElement*);
HTMLElement *HTMLTextAreaElement_Create(nsIDOMHTMLElement*);
+HTMLElement *HTMLGenericElement_Create(nsIDOMHTMLElement*);
+void HTMLDOMNode_Init(HTMLDocument*,HTMLDOMNode*,nsIDOMNode*);
void HTMLElement_Init(HTMLElement*);
void HTMLElement2_Init(HTMLElement*);
void HTMLTextContainer_Init(HTMLTextContainer*);
@@ -447,12 +557,13 @@ void HTMLDOMNode_destructor(HTMLDOMNode*);
HRESULT HTMLElement_QI(HTMLDOMNode*,REFIID,void**);
void HTMLElement_destructor(HTMLDOMNode*);
-HTMLDOMNode *get_node(HTMLDocument*,nsIDOMNode*);
+HTMLDOMNode *get_node(HTMLDocument*,nsIDOMNode*,BOOL);
void release_nodes(HTMLDocument*);
void release_script_hosts(HTMLDocument*);
void connect_scripts(HTMLDocument*);
void doc_insert_script(HTMLDocument*,nsIDOMHTMLScriptElement*);
+IDispatch *script_parse_event(HTMLDocument*,LPCWSTR);
IHTMLElementCollection *create_all_collection(HTMLDOMNode*);
@@ -506,20 +617,19 @@ typedef struct {
HWND thread_hwnd;
task_t *task_queue_head;
task_t *task_queue_tail;
+ struct list timer_list;
} thread_data_t;
thread_data_t *get_thread_data(BOOL);
HWND get_thread_hwnd(void);
void push_task(task_t*);
void remove_doc_tasks(const HTMLDocument*);
+DWORD set_task_timer(HTMLDocument*,DWORD,BOOL,IDispatch*);
+HRESULT clear_task_timer(HTMLDocument*,BOOL,DWORD);
-/* typelibs */
-enum tid_t {
- IHTMLWindow2_tid,
- LAST_tid
-};
-
-HRESULT get_typeinfo(enum tid_t, ITypeInfo**);
+HRESULT get_typeinfo(tid_t,ITypeInfo**);
+void release_typelib(void);
+void call_disp_func(HTMLDocument*,IDispatch*);
DEFINE_GUID(CLSID_AboutProtocol, 0x3050F406, 0x98B5, 0x11CF, 0xBB,0x82, 0x00,0xAA,0x00,0xBD,0xCE,0x0B);
DEFINE_GUID(CLSID_JSProtocol, 0x3050F3B2, 0x98B5, 0x11CF, 0xBB,0x82, 0x00,0xAA,0x00,0xBD,0xCE,0x0B);
diff --git a/reactos/dll/win32/mshtml/navigate.c b/reactos/dll/win32/mshtml/navigate.c
index 9ed1dea3a28..78ae19d88ab 100644
--- a/reactos/dll/win32/mshtml/navigate.c
+++ b/reactos/dll/win32/mshtml/navigate.c
@@ -807,7 +807,7 @@ static BufferBSC *create_bufferbsc(IMoniker *mon)
return ret;
}
-HRESULT bind_mon_to_buffer(HTMLDocument *doc, IMoniker *mon, void **buf)
+HRESULT bind_mon_to_buffer(HTMLDocument *doc, IMoniker *mon, void **buf, DWORD *size)
{
BufferBSC *bsc = create_bufferbsc(mon);
HRESULT hres;
@@ -820,6 +820,7 @@ HRESULT bind_mon_to_buffer(HTMLDocument *doc, IMoniker *mon, void **buf)
if(SUCCEEDED(hres)) {
*buf = bsc->buf;
bsc->buf = NULL;
+ *size = bsc->bsc.readed;
bsc->size = 0;
}
}
diff --git a/reactos/dll/win32/mshtml/nsembed.c b/reactos/dll/win32/mshtml/nsembed.c
index e46b8fa05ec..78563d3994d 100644
--- a/reactos/dll/win32/mshtml/nsembed.c
+++ b/reactos/dll/win32/mshtml/nsembed.c
@@ -301,6 +301,65 @@ static void set_lang(nsIPrefBranch *pref)
ERR("SetCharPref failed: %08x\n", nsres);
}
+static void set_proxy(nsIPrefBranch *pref)
+{
+ char proxy[512];
+ char * proxy_port;
+ int proxy_port_num;
+ DWORD enabled = 0, res, size, type;
+ HKEY hkey;
+ nsresult nsres;
+
+ static const WCHAR proxy_keyW[] =
+ {'S','o','f','t','w','a','r','e',
+ '\\','M','i','c','r','o','s','o','f','t',
+ '\\','W','i','n','d','o','w','s',
+ '\\','C','u','r','r','e','n','t','V','e','r','s','i','o','n',
+ '\\','I','n','t','e','r','n','e','t',' ','S','e','t','t','i','n','g','s',0};
+
+ res = RegOpenKeyW(HKEY_CURRENT_USER, proxy_keyW, &hkey);
+ if(res != ERROR_SUCCESS)
+ return;
+
+ size = sizeof(enabled);
+ res = RegQueryValueExA(hkey, "ProxyEnable", 0, &type, (LPBYTE)&enabled, &size);
+ if(res != ERROR_SUCCESS || type != REG_DWORD || enabled == 0)
+ {
+ RegCloseKey(hkey);
+ return;
+ }
+
+ size = sizeof(proxy);
+ res = RegQueryValueExA(hkey, "ProxyServer", 0, &type, (LPBYTE)proxy, &size);
+ RegCloseKey(hkey);
+ if(res != ERROR_SUCCESS || type != REG_SZ)
+ return;
+
+ proxy_port = strchr(proxy, ':');
+ if (!proxy_port)
+ return;
+
+ *proxy_port = 0;
+ proxy_port_num = atoi(proxy_port + 1);
+ TRACE("Setting proxy to %s, port %d\n", debugstr_a(proxy), proxy_port_num);
+
+ nsres = nsIPrefBranch_SetIntPref(pref, "network.proxy.type", 1);
+ if(NS_FAILED(nsres))
+ ERR("SetIntPref network.proxy.type failed: %08x\n", nsres);
+ nsres = nsIPrefBranch_SetCharPref(pref, "network.proxy.http", proxy);
+ if(NS_FAILED(nsres))
+ ERR("SetCharPref network.proxy.http failed: %08x\n", nsres);
+ nsres = nsIPrefBranch_SetIntPref(pref, "network.proxy.http_port", proxy_port_num);
+ if(NS_FAILED(nsres))
+ ERR("SetIntPref network.proxy.http_port failed: %08x\n", nsres);
+ nsres = nsIPrefBranch_SetCharPref(pref, "network.proxy.ssl", proxy);
+ if(NS_FAILED(nsres))
+ ERR("SetCharPref network.proxy.ssl failed: %08x\n", nsres);
+ nsres = nsIPrefBranch_SetIntPref(pref, "network.proxy.ssl_port", proxy_port_num);
+ if(NS_FAILED(nsres))
+ ERR("SetIntPref network.proxy.ssl_port failed: %08x\n", nsres);
+}
+
static void set_bool_pref(nsIPrefBranch *pref, const char *pref_name, BOOL val)
{
nsresult nsres;
@@ -347,6 +406,7 @@ static void set_profile(void)
}
set_lang(pref);
+ set_proxy(pref);
set_bool_pref(pref, "security.warn_entering_secure", FALSE);
set_bool_pref(pref, "security.warn_submit_insecure", FALSE);
@@ -1073,7 +1133,7 @@ static nsresult NSAPI nsContextMenuListener_OnShowContextMenu(nsIContextMenuList
FIXME("aContextFlags=%08x\n", aContextFlags);
};
- show_context_menu(This->doc, dwID, &pt, (IDispatch*)HTMLDOMNODE(get_node(This->doc, aNode)));
+ show_context_menu(This->doc, dwID, &pt, (IDispatch*)HTMLDOMNODE(get_node(This->doc, aNode, TRUE)));
return NS_OK;
}
@@ -1418,7 +1478,7 @@ static nsrefcnt NSAPI nsTooltipListener_AddRef(nsITooltipListener *iface)
static nsrefcnt NSAPI nsTooltipListener_Release(nsITooltipListener *iface)
{
NSContainer *This = NSTOOLTIP_THIS(iface);
- return nsIWebBrowserChrome_AddRef(NSWBCHROME(This));
+ return nsIWebBrowserChrome_Release(NSWBCHROME(This));
}
static nsresult NSAPI nsTooltipListener_OnShowTooltip(nsITooltipListener *iface,
@@ -1583,7 +1643,7 @@ NSContainer *NSContainer_Create(HTMLDocument *doc, NSContainer *parent)
if(!load_gecko(FALSE))
return NULL;
- ret = heap_alloc(sizeof(NSContainer));
+ ret = heap_alloc_zero(sizeof(NSContainer));
ret->lpWebBrowserChromeVtbl = &nsWebBrowserChromeVtbl;
ret->lpContextMenuListenerVtbl = &nsContextMenuListenerVtbl;
@@ -1596,11 +1656,6 @@ NSContainer *NSContainer_Create(HTMLDocument *doc, NSContainer *parent)
ret->doc = doc;
ret->ref = 1;
- ret->bscallback = NULL;
- ret->content_listener = NULL;
- ret->editor_controller = NULL;
- ret->editor = NULL;
- ret->reset_focus = NULL;
nsres = nsIComponentManager_CreateInstanceByContractID(pCompMgr, NS_WEBBROWSER_CONTRACTID,
NULL, &IID_nsIWebBrowser, (void**)&ret->webbrowser);
@@ -1693,6 +1748,8 @@ void NSContainer_Release(NSContainer *This)
{
TRACE("(%p)\n", This);
+ This->doc = NULL;
+
ShowWindow(This->hwnd, SW_HIDE);
SetParent(This->hwnd, NULL);
diff --git a/reactos/dll/win32/mshtml/nsevents.c b/reactos/dll/win32/mshtml/nsevents.c
index 7e428ce52fe..d0f5079a666 100644
--- a/reactos/dll/win32/mshtml/nsevents.c
+++ b/reactos/dll/win32/mshtml/nsevents.c
@@ -129,6 +129,9 @@ static nsresult NSAPI handle_keypress(nsIDOMEventListener *iface,
static nsresult NSAPI handle_load(nsIDOMEventListener *iface, nsIDOMEvent *event)
{
NSContainer *This = NSEVENTLIST_THIS(iface)->This;
+ nsIDOMHTMLDocument *nshtmldoc;
+ nsIDOMHTMLElement *nsbody = NULL;
+ nsIDOMDocument *nsdoc;
task_t *task;
TRACE("(%p)\n", This);
@@ -159,6 +162,19 @@ static nsresult NSAPI handle_load(nsIDOMEventListener *iface, nsIDOMEvent *event
*/
push_task(task);
+
+ nsIWebNavigation_GetDocument(This->navigation, &nsdoc);
+ nsIDOMDocument_QueryInterface(nsdoc, &IID_nsIDOMHTMLDocument, (void**)&nshtmldoc);
+ nsIDOMDocument_Release(nsdoc);
+
+ nsIDOMHTMLDocument_GetBody(nshtmldoc, &nsbody);
+ nsIDOMHTMLDocument_Release(nshtmldoc);
+
+ if(nsbody) {
+ fire_event(This->doc, EVENTID_LOAD, (nsIDOMNode*)nsbody);
+ nsIDOMHTMLElement_Release(nsbody);
+ }
+
return NS_OK;
}
@@ -167,6 +183,7 @@ static nsresult NSAPI handle_node_insert(nsIDOMEventListener *iface, nsIDOMEvent
NSContainer *This = NSEVENTLIST_THIS(iface)->This;
nsIDOMHTMLScriptElement *script;
nsIDOMEventTarget *target;
+ nsIDOMElement *elem;
nsresult nsres;
TRACE("(%p %p)\n", This, event);
@@ -174,16 +191,59 @@ static nsresult NSAPI handle_node_insert(nsIDOMEventListener *iface, nsIDOMEvent
nsres = nsIDOMEvent_GetTarget(event, &target);
if(NS_FAILED(nsres)) {
ERR("GetTarget failed: %08x\n", nsres);
- return nsres;
+ return NS_OK;
}
- nsres = nsISupports_QueryInterface(target, &IID_nsIDOMHTMLScriptElement, (void**)&script);
+ nsres = nsIDOMEventTarget_QueryInterface(target, &IID_nsIDOMElement, (void**)&elem);
+ nsIDOMEventTarget_Release(target);
+ if(NS_FAILED(nsres))
+ return NS_OK;
+
+ nsres = nsIDOMElement_QueryInterface(elem, &IID_nsIDOMHTMLScriptElement, (void**)&script);
if(SUCCEEDED(nsres)) {
doc_insert_script(This->doc, script);
nsIDOMHTMLScriptElement_Release(script);
}
- nsIDOMEventTarget_Release(target);
+ check_event_attr(This->doc, elem);
+
+ nsIDOMNode_Release(elem);
+ return NS_OK;
+}
+
+static nsresult NSAPI handle_htmlevent(nsIDOMEventListener *iface, nsIDOMEvent *event)
+{
+ NSContainer *This = NSEVENTLIST_THIS(iface)->This;
+ const PRUnichar *type;
+ nsIDOMEventTarget *event_target;
+ nsIDOMNode *nsnode;
+ nsAString type_str;
+ eventid_t eid;
+ nsresult nsres;
+
+ nsAString_Init(&type_str, NULL);
+ nsIDOMEvent_GetType(event, &type_str);
+ nsAString_GetData(&type_str, &type);
+ eid = str_to_eid(type);
+ nsAString_Finish(&type_str);
+
+ nsres = nsIDOMEvent_GetTarget(event, &event_target);
+ if(NS_FAILED(nsres) || !event_target) {
+ ERR("GetEventTarget failed: %08x\n", nsres);
+ return NS_OK;
+ }
+
+ nsres = nsIDOMEventTarget_QueryInterface(event_target, &IID_nsIDOMNode, (void**)&nsnode);
+ nsIDOMEventTarget_Release(event_target);
+ if(NS_FAILED(nsres)) {
+ ERR("Could not get nsIDOMNode: %08x\n", nsres);
+ return NS_OK;
+ }
+
+ fire_event(This->doc, eid, nsnode);
+
+ nsIDOMNode_Release(nsnode);
+
return NS_OK;
}
@@ -202,6 +262,7 @@ static const nsIDOMEventListenerVtbl focus_vtbl = EVENTLISTENER_VTBL(handle_
static const nsIDOMEventListenerVtbl keypress_vtbl = EVENTLISTENER_VTBL(handle_keypress);
static const nsIDOMEventListenerVtbl load_vtbl = EVENTLISTENER_VTBL(handle_load);
static const nsIDOMEventListenerVtbl node_insert_vtbl = EVENTLISTENER_VTBL(handle_node_insert);
+static const nsIDOMEventListenerVtbl htmlevent_vtbl = EVENTLISTENER_VTBL(handle_htmlevent);
static void init_event(nsIDOMEventTarget *target, const PRUnichar *type,
nsIDOMEventListener *listener, BOOL capture)
@@ -224,6 +285,29 @@ static void init_listener(nsEventListener *This, NSContainer *container,
This->This = container;
}
+void add_nsevent_listener(NSContainer *container, LPCWSTR type)
+{
+ nsIDOMWindow *dom_window;
+ nsIDOMEventTarget *target;
+ nsresult nsres;
+
+ nsres = nsIWebBrowser_GetContentDOMWindow(container->webbrowser, &dom_window);
+ if(NS_FAILED(nsres)) {
+ ERR("GetContentDOMWindow failed: %08x\n", nsres);
+ return;
+ }
+
+ nsres = nsIDOMWindow_QueryInterface(dom_window, &IID_nsIDOMEventTarget, (void**)&target);
+ nsIDOMWindow_Release(dom_window);
+ if(NS_FAILED(nsres)) {
+ ERR("Could not get nsIDOMEventTarget interface: %08x\n", nsres);
+ return;
+ }
+
+ init_event(target, type, NSEVENTLIST(&container->htmlevent_listener), TRUE);
+ nsIDOMEventTarget_Release(target);
+}
+
void init_nsevents(NSContainer *This)
{
nsIDOMWindow *dom_window;
@@ -242,6 +326,7 @@ void init_nsevents(NSContainer *This)
init_listener(&This->keypress_listener, This, &keypress_vtbl);
init_listener(&This->load_listener, This, &load_vtbl);
init_listener(&This->node_insert_listener, This, &node_insert_vtbl);
+ init_listener(&This->htmlevent_listener, This, &htmlevent_vtbl);
nsres = nsIWebBrowser_GetContentDOMWindow(This->webbrowser, &dom_window);
if(NS_FAILED(nsres)) {
diff --git a/reactos/dll/win32/mshtml/nsiface.idl b/reactos/dll/win32/mshtml/nsiface.idl
index 03115d9a04e..42e6eb00632 100644
--- a/reactos/dll/win32/mshtml/nsiface.idl
+++ b/reactos/dll/win32/mshtml/nsiface.idl
@@ -18,9 +18,9 @@
/*
* NOTE:
- * This file is not an usual idl file. Interfaces in this file are XPCOM interfaces
- * (NOT MSCOM!), but we generate the header file with WIDL compatibile with XPCOM,
- * useable in C code.
+ * This file is not a typical idl file. Interfaces in this file are XPCOM
+ * interfaces (NOT MSCOM!), but we generate the header file with WIDL
+ * compatible with XPCOM, usable in C code.
*/
cpp_quote("#define GECKO_VERSION \"0.1.0\"")
@@ -1295,6 +1295,39 @@ interface nsIDOMHTMLScriptElement : nsIDOMHTMLElement
nsresult SetType(const nsAString *aType);
}
+[
+ object,
+ uuid(a6cf90ab-15b3-11d2-932e-00805f8add32),
+ local
+]
+interface nsIDOMHTMLImageElement : nsIDOMHTMLElement
+{
+ nsresult GetName(nsAString *aName);
+ nsresult SetName(const nsAString *aName);
+ nsresult GetAlign(nsAString *aAlign);
+ nsresult SetAlign(const nsAString *aAlign);
+ nsresult GetAlt(nsAString *aAlt);
+ nsresult SetAlt(const nsAString *aAlt);
+ nsresult GetBorder(nsAString *aBorder);
+ nsresult SetBorder(const nsAString *aBorder);
+ nsresult GetHeight(PRInt32 *aHeight);
+ nsresult SetHeight(PRInt32 aHeight);
+ nsresult GetHspace(PRInt32 *aHspace);
+ nsresult SetHspace(PRInt32 aHspace);
+ nsresult GetIsMap(PRBool *aIsMap);
+ nsresult SetIsMap(PRBool aIsMap);
+ nsresult GetLongDesc(nsAString *aLongDesc);
+ nsresult SetLongDesc(const nsAString *aLongDesc);
+ nsresult GetSrc(nsAString *aSrc);
+ nsresult SetSrc(const nsAString *aSrc);
+ nsresult GetUseMap(nsAString *aUseMap);
+ nsresult SetUseMap(const nsAString *aUseMap);
+ nsresult GetVspace(PRInt32 *aVspace);
+ nsresult SetVspace(PRInt32 aVspace);
+ nsresult GetWidth(PRInt32 *aWidth);
+ nsresult SetWidth(PRInt32 aWidth);
+}
+
[
object,
uuid(94928ab3-8b63-11d3-989d-001083010e9b),
diff --git a/reactos/dll/win32/mshtml/nsio.c b/reactos/dll/win32/mshtml/nsio.c
index 53ad33e334e..f23254ab195 100644
--- a/reactos/dll/win32/mshtml/nsio.c
+++ b/reactos/dll/win32/mshtml/nsio.c
@@ -2040,7 +2040,6 @@ static nsresult NSAPI nsIOService_NewURI(nsIIOService *iface, const nsACString *
const char *aOriginCharset, nsIURI *aBaseURI, nsIURI **_retval)
{
const char *spec = NULL;
- nsACString spec_str;
NSContainer *nscontainer = NULL;
nsIURI *uri = NULL;
LPCWSTR base_wine_url = NULL;
@@ -2078,9 +2077,7 @@ static nsresult NSAPI nsIOService_NewURI(nsIIOService *iface, const nsACString *
nsACString_Finish(&base_uri_str);
}
- nsACString_Init(&spec_str, spec);
- nsres = nsIIOService_NewURI(nsio, &spec_str, aOriginCharset, aBaseURI, &uri);
- nsACString_Finish(&spec_str);
+ nsres = nsIIOService_NewURI(nsio, aSpec, aOriginCharset, aBaseURI, &uri);
if(NS_FAILED(nsres))
TRACE("NewURI failed: %08x\n", nsres);
diff --git a/reactos/dll/win32/mshtml/oleobj.c b/reactos/dll/win32/mshtml/oleobj.c
index 5e7181c28d6..0b1dd6bd31c 100644
--- a/reactos/dll/win32/mshtml/oleobj.c
+++ b/reactos/dll/win32/mshtml/oleobj.c
@@ -61,6 +61,32 @@ static ULONG WINAPI OleObject_Release(IOleObject *iface)
return IHTMLDocument2_Release(HTMLDOC(This));
}
+static void update_hostinfo(HTMLDocument *This, DOCHOSTUIINFO *hostinfo)
+{
+ nsIScrollable *scrollable;
+ nsresult nsres;
+
+ if(!This->nscontainer)
+ return;
+
+ nsres = nsIWebBrowser_QueryInterface(This->nscontainer->webbrowser, &IID_nsIScrollable, (void**)&scrollable);
+ if(NS_SUCCEEDED(nsres)) {
+ nsres = nsIScrollable_SetDefaultScrollbarPreferences(scrollable, ScrollOrientation_Y,
+ (hostinfo->dwFlags & DOCHOSTUIFLAG_SCROLL_NO) ? Scrollbar_Never : Scrollbar_Always);
+ if(NS_FAILED(nsres))
+ ERR("Could not set default Y scrollbar prefs: %08x\n", nsres);
+
+ nsres = nsIScrollable_SetDefaultScrollbarPreferences(scrollable, ScrollOrientation_X,
+ hostinfo->dwFlags & DOCHOSTUIFLAG_SCROLL_NO ? Scrollbar_Never : Scrollbar_Auto);
+ if(NS_FAILED(nsres))
+ ERR("Could not set default X scrollbar prefs: %08x\n", nsres);
+
+ nsIScrollable_Release(scrollable);
+ }else {
+ ERR("Could not get nsIScrollable: %08x\n", nsres);
+ }
+}
+
static HRESULT WINAPI OleObject_SetClientSite(IOleObject *iface, IOleClientSite *pClientSite)
{
HTMLDocument *This = OLEOBJ_THIS(iface);
@@ -103,6 +129,7 @@ static HRESULT WINAPI OleObject_SetClientSite(IOleObject *iface, IOleClientSite
TRACE("hostinfo = {%u %08x %08x %s %s}\n",
hostinfo.cbSize, hostinfo.dwFlags, hostinfo.dwDoubleClick,
debugstr_w(hostinfo.pchHostCss), debugstr_w(hostinfo.pchHostNS));
+ update_hostinfo(This, &hostinfo);
This->hostinfo = hostinfo;
}
diff --git a/reactos/dll/win32/mshtml/omnavigator.c b/reactos/dll/win32/mshtml/omnavigator.c
index d1bcdca7310..a579333e82e 100644
--- a/reactos/dll/win32/mshtml/omnavigator.c
+++ b/reactos/dll/win32/mshtml/omnavigator.c
@@ -32,6 +32,7 @@
WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
typedef struct {
+ DispatchEx dispex;
const IOmNavigatorVtbl *lpIOmNavigatorVtbl;
LONG ref;
@@ -50,12 +51,11 @@ static HRESULT WINAPI OmNavigator_QueryInterface(IOmNavigator *iface, REFIID rii
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = OMNAVIGATOR(This);
- }else if(IsEqualGUID(&IID_IDispatch, riid)) {
- TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
- *ppv = OMNAVIGATOR(This);
}else if(IsEqualGUID(&IID_IOmNavigator, riid)) {
TRACE("(%p)->(IID_IOmNavigator %p)\n", This, ppv);
*ppv = OMNAVIGATOR(This);
+ }else if(dispex_query_interface(&This->dispex, riid, ppv)) {
+ return *ppv ? S_OK : E_NOINTERFACE;
}
if(*ppv) {
@@ -101,8 +101,8 @@ static HRESULT WINAPI OmNavigator_GetTypeInfo(IOmNavigator *iface, UINT iTInfo,
LCID lcid, ITypeInfo **ppTInfo)
{
OmNavigator *This = OMNAVIGATOR_THIS(iface);
- FIXME("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
- return E_NOTIMPL;
+
+ return IDispatchEx_GetTypeInfo(DISPATCHEX(&This->dispex), iTInfo, lcid, ppTInfo);
}
static HRESULT WINAPI OmNavigator_GetIDsOfNames(IOmNavigator *iface, REFIID riid,
@@ -110,9 +110,8 @@ static HRESULT WINAPI OmNavigator_GetIDsOfNames(IOmNavigator *iface, REFIID riid
LCID lcid, DISPID *rgDispId)
{
OmNavigator *This = OMNAVIGATOR_THIS(iface);
- FIXME("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
- lcid, rgDispId);
- return E_NOTIMPL;
+
+ return IDispatchEx_GetIDsOfNames(DISPATCHEX(&This->dispex), riid, rgszNames, cNames, lcid, rgDispId);
}
static HRESULT WINAPI OmNavigator_Invoke(IOmNavigator *iface, DISPID dispIdMember,
@@ -120,9 +119,9 @@ static HRESULT WINAPI OmNavigator_Invoke(IOmNavigator *iface, DISPID dispIdMembe
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
{
OmNavigator *This = OMNAVIGATOR_THIS(iface);
- FIXME("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
- lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
- return E_NOTIMPL;
+
+ return IDispatchEx_Invoke(DISPATCHEX(&This->dispex), dispIdMember, riid, lcid, wFlags, pDispParams,
+ pVarResult, pExcepInfo, puArgErr);
}
static HRESULT WINAPI OmNavigator_get_appCodeName(IOmNavigator *iface, BSTR *p)
@@ -297,13 +296,26 @@ static const IOmNavigatorVtbl OmNavigatorVtbl = {
OmNavigator_get_userProfile
};
+static const tid_t OmNavigator_iface_tids[] = {
+ IOmNavigator_tid,
+ 0
+};
+static dispex_static_data_t OmNavigator_dispex = {
+ NULL,
+ IOmNavigator_tid,
+ NULL,
+ OmNavigator_iface_tids
+};
+
IOmNavigator *OmNavigator_Create(void)
{
OmNavigator *ret;
- ret = heap_alloc(sizeof(*ret));
+ ret = heap_alloc_zero(sizeof(*ret));
ret->lpIOmNavigatorVtbl = &OmNavigatorVtbl;
ret->ref = 1;
+ init_dispex(&ret->dispex, (IUnknown*)OMNAVIGATOR(ret), &OmNavigator_dispex);
+
return OMNAVIGATOR(ret);
}
diff --git a/reactos/dll/win32/mshtml/protocol.c b/reactos/dll/win32/mshtml/protocol.c
index 0b502ba9cfa..ff319ac45df 100644
--- a/reactos/dll/win32/mshtml/protocol.c
+++ b/reactos/dll/win32/mshtml/protocol.c
@@ -483,6 +483,9 @@ static HRESULT WINAPI AboutProtocolInfo_QueryInfo(IInternetProtocolInfo *iface,
case QUERY_IS_SAFE:
FIXME("Unsupported option QUERY_IS_SAFE\n");
return E_NOTIMPL;
+ case QUERY_USES_HISTORYFOLDER:
+ FIXME("Unsupported option QUERY_USES_HISTORYFOLDER\n");
+ return E_FAIL;
default:
return E_FAIL;
}
diff --git a/reactos/dll/win32/mshtml/rsrc.rc b/reactos/dll/win32/mshtml/rsrc.rc
index 1e696976d7f..fb917d9deb6 100644
--- a/reactos/dll/win32/mshtml/rsrc.rc
+++ b/reactos/dll/win32/mshtml/rsrc.rc
@@ -34,6 +34,7 @@
#include "wine/wine_common_ver.rc"
#include "Bg.rc"
+#include "Da.rc"
#include "De.rc"
#include "En.rc"
#include "Es.rc"
diff --git a/reactos/dll/win32/mshtml/script.c b/reactos/dll/win32/mshtml/script.c
index 15a939ca47d..de7606247f1 100644
--- a/reactos/dll/win32/mshtml/script.c
+++ b/reactos/dll/win32/mshtml/script.c
@@ -27,6 +27,7 @@
#include "winuser.h"
#include "ole2.h"
#include "activscp.h"
+#include "activdbg.h"
#include "objsafe.h"
#include "wine/debug.h"
@@ -36,6 +37,7 @@
WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
static const WCHAR windowW[] = {'w','i','n','d','o','w',0};
+static const WCHAR emptyW[] = {0};
static const CLSID CLSID_JScript =
{0xf414c260,0x6ac0,0x11cf,{0xb6,0xd1,0x00,0xaa,0x00,0xbb,0xbb,0x58}};
@@ -44,11 +46,13 @@ typedef struct {
const IActiveScriptSiteVtbl *lpIActiveScriptSiteVtbl;
const IActiveScriptSiteInterruptPollVtbl *lpIActiveScriptSiteInterruptPollVtbl;
const IActiveScriptSiteWindowVtbl *lpIActiveScriptSiteWindowVtbl;
+ const IActiveScriptSiteDebug32Vtbl *lpIActiveScriptSiteDebug32Vtbl;
LONG ref;
IActiveScript *script;
IActiveScriptParse *parse;
+ IActiveScriptParseProcedure *parse_proc;
SCRIPTSTATE script_state;
@@ -61,6 +65,7 @@ typedef struct {
#define ACTSCPSITE(x) ((IActiveScriptSite*) &(x)->lpIActiveScriptSiteVtbl)
#define ACTSCPPOLL(x) ((IActiveScriptSiteInterruptPoll*) &(x)->lpIActiveScriptSiteInterruptPollVtbl)
#define ACTSCPWIN(x) ((IActiveScriptSiteWindow*) &(x)->lpIActiveScriptSiteWindowVtbl)
+#define ACTSCPDBG32(x) ((IActiveScriptSiteDebug32*) &(x)->lpIActiveScriptSiteDebug32Vtbl)
static BOOL init_script_engine(ScriptHost *script_host)
{
@@ -144,7 +149,12 @@ static BOOL init_script_engine(ScriptHost *script_host)
if(FAILED(hres))
WARN("AddNamedItem failed: %08x\n", hres);
- /* FIXME: QI for IActiveScriptParseProcedure2 and IActiveScriptParseProcedure */
+ hres = IActiveScript_QueryInterface(script_host->script, &IID_IActiveScriptParseProcedure2,
+ (void**)&script_host->parse_proc);
+ if(FAILED(hres)) {
+ /* FIXME: QI for IActiveScriptParseProcedure */
+ WARN("Could not get IActiveScriptParseProcedure iface: %08x\n", hres);
+ }
return TRUE;
}
@@ -164,6 +174,11 @@ static void release_script_engine(ScriptHost *This)
IActiveScript_Close(This->script);
default:
+ if(This->parse_proc) {
+ IActiveScriptParseProcedure_Release(This->parse_proc);
+ This->parse_proc = NULL;
+ }
+
if(This->parse) {
IActiveScriptParse_Release(This->parse);
This->parse = NULL;
@@ -205,6 +220,9 @@ static HRESULT WINAPI ActiveScriptSite_QueryInterface(IActiveScriptSite *iface,
}else if(IsEqualGUID(&IID_IActiveScriptSiteWindow, riid)) {
TRACE("(%p)->(IID_IActiveScriptSiteWindow %p)\n", This, ppv);
*ppv = ACTSCPWIN(This);
+ }else if(IsEqualGUID(&IID_IActiveScriptSiteDebug32, riid)) {
+ TRACE("(%p)->(IID_IActiveScriptSiteDebug32 %p)\n", This, ppv);
+ *ppv = ACTSCPDBG32(This);
}else {
FIXME("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
return E_NOINTERFACE;
@@ -368,8 +386,10 @@ static ULONG WINAPI ActiveScriptSiteInterruptPoll_Release(IActiveScriptSiteInter
static HRESULT WINAPI ActiveScriptSiteInterruptPoll_QueryContinue(IActiveScriptSiteInterruptPoll *iface)
{
ScriptHost *This = ACTSCPPOLL_THIS(iface);
- FIXME("(%p)\n", This);
- return E_NOTIMPL;
+
+ TRACE("(%p)\n", This);
+
+ return S_OK;
}
#undef ACTSCPPOLL_THIS
@@ -426,7 +446,71 @@ static const IActiveScriptSiteWindowVtbl ActiveScriptSiteWindowVtbl = {
ActiveScriptSiteWindow_EnableModeless
};
-static ScriptHost *create_script_host(HTMLDocument *doc, GUID *guid)
+#define ACTSCPDBG32_THIS(iface) DEFINE_THIS(ScriptHost, IActiveScriptSiteDebug32, iface)
+
+static HRESULT WINAPI ActiveScriptSiteDebug32_QueryInterface(IActiveScriptSiteDebug32 *iface,
+ REFIID riid, void **ppv)
+{
+ ScriptHost *This = ACTSCPDBG32_THIS(iface);
+ return IActiveScriptSite_QueryInterface(ACTSCPSITE(This), riid, ppv);
+}
+
+static ULONG WINAPI ActiveScriptSiteDebug32_AddRef(IActiveScriptSiteDebug32 *iface)
+{
+ ScriptHost *This = ACTSCPDBG32_THIS(iface);
+ return IActiveScriptSite_AddRef(ACTSCPSITE(This));
+}
+
+static ULONG WINAPI ActiveScriptSiteDebug32_Release(IActiveScriptSiteDebug32 *iface)
+{
+ ScriptHost *This = ACTSCPDBG32_THIS(iface);
+ return IActiveScriptSite_Release(ACTSCPSITE(This));
+}
+
+static HRESULT WINAPI ActiveScriptSiteDebug32_GetDocumentContextFromPosition(IActiveScriptSiteDebug32 *iface,
+ DWORD dwSourceContext, ULONG uCharacterOffset, ULONG uNumChars, IDebugDocumentContext **ppsc)
+{
+ ScriptHost *This = ACTSCPDBG32_THIS(iface);
+ FIXME("(%p)->(%x %u %u %p)\n", This, dwSourceContext, uCharacterOffset, uNumChars, ppsc);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ActiveScriptSiteDebug32_GetApplication(IActiveScriptSiteDebug32 *iface, IDebugApplication32 **ppda)
+{
+ ScriptHost *This = ACTSCPDBG32_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, ppda);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ActiveScriptSiteDebug32_GetRootApplicationNode(IActiveScriptSiteDebug32 *iface,
+ IDebugApplicationNode **ppdanRoot)
+{
+ ScriptHost *This = ACTSCPDBG32_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, ppdanRoot);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ActiveScriptSiteDebug32_OnScriptErrorDebug(IActiveScriptSiteDebug32 *iface,
+ IActiveScriptErrorDebug *pErrorDebug, BOOL *pfEnterDebugger, BOOL *pfCallOnScriptErrorWhenContinuing)
+{
+ ScriptHost *This = ACTSCPDBG32_THIS(iface);
+ FIXME("(%p)->(%p %p %p)\n", This, pErrorDebug, pfEnterDebugger, pfCallOnScriptErrorWhenContinuing);
+ return E_NOTIMPL;
+}
+
+#undef ACTSCPDBG32_THIS
+
+static const IActiveScriptSiteDebug32Vtbl ActiveScriptSiteDebug32Vtbl = {
+ ActiveScriptSiteDebug32_QueryInterface,
+ ActiveScriptSiteDebug32_AddRef,
+ ActiveScriptSiteDebug32_Release,
+ ActiveScriptSiteDebug32_GetDocumentContextFromPosition,
+ ActiveScriptSiteDebug32_GetApplication,
+ ActiveScriptSiteDebug32_GetRootApplicationNode,
+ ActiveScriptSiteDebug32_OnScriptErrorDebug
+};
+
+static ScriptHost *create_script_host(HTMLDocument *doc, const GUID *guid)
{
ScriptHost *ret;
HRESULT hres;
@@ -435,6 +519,7 @@ static ScriptHost *create_script_host(HTMLDocument *doc, GUID *guid)
ret->lpIActiveScriptSiteVtbl = &ActiveScriptSiteVtbl;
ret->lpIActiveScriptSiteInterruptPollVtbl = &ActiveScriptSiteInterruptPollVtbl;
ret->lpIActiveScriptSiteWindowVtbl = &ActiveScriptSiteWindowVtbl;
+ ret->lpIActiveScriptSiteDebug32Vtbl = &ActiveScriptSiteDebug32Vtbl;
ret->ref = 1;
ret->doc = doc;
ret->script_state = SCRIPTSTATE_UNINITIALIZED;
@@ -477,6 +562,7 @@ static void parse_extern_script(ScriptHost *script_host, LPCWSTR src)
IMoniker *mon;
char *buf;
WCHAR *text;
+ DWORD len, size=0;
HRESULT hres;
static const WCHAR wine_schemaW[] = {'w','i','n','e',':'};
@@ -488,13 +574,16 @@ static void parse_extern_script(ScriptHost *script_host, LPCWSTR src)
if(FAILED(hres))
return;
- hres = bind_mon_to_buffer(script_host->doc, mon, (void**)&buf);
+ hres = bind_mon_to_buffer(script_host->doc, mon, (void**)&buf, &size);
IMoniker_Release(mon);
if(FAILED(hres))
return;
- text = heap_strdupAtoW(buf);
+ len = MultiByteToWideChar(CP_ACP, 0, buf, size, NULL, 0);
+ text = heap_alloc((len+1)*sizeof(WCHAR));
+ MultiByteToWideChar(CP_ACP, 0, buf, size, text, len);
heap_free(buf);
+ text[len] = 0;
parse_text(script_host, text);
@@ -619,34 +708,34 @@ static BOOL get_script_guid(nsIDOMHTMLScriptElement *nsscript, GUID *guid)
return ret;
}
-static ScriptHost *get_script_host(HTMLDocument *doc, nsIDOMHTMLScriptElement *nsscript)
+static ScriptHost *get_script_host(HTMLDocument *doc, const GUID *guid)
{
ScriptHost *iter;
- GUID guid;
- if(!get_script_guid(nsscript, &guid)) {
- WARN("Could not find script GUID\n");
- return NULL;
- }
-
- if(IsEqualGUID(&CLSID_JScript, &guid)) {
+ if(IsEqualGUID(&CLSID_JScript, guid)) {
FIXME("Ignoring JScript\n");
return NULL;
}
LIST_FOR_EACH_ENTRY(iter, &doc->script_hosts, ScriptHost, entry) {
- if(IsEqualGUID(&guid, &iter->guid))
+ if(IsEqualGUID(guid, &iter->guid))
return iter;
}
- return create_script_host(doc, &guid);
+ return create_script_host(doc, guid);
}
void doc_insert_script(HTMLDocument *doc, nsIDOMHTMLScriptElement *nsscript)
{
ScriptHost *script_host;
+ GUID guid;
- script_host = get_script_host(doc, nsscript);
+ if(!get_script_guid(nsscript, &guid)) {
+ WARN("Could not find script GUID\n");
+ return;
+ }
+
+ script_host = get_script_host(doc, &guid);
if(!script_host)
return;
@@ -654,6 +743,55 @@ void doc_insert_script(HTMLDocument *doc, nsIDOMHTMLScriptElement *nsscript)
parse_script_elem(script_host, nsscript);
}
+IDispatch *script_parse_event(HTMLDocument *doc, LPCWSTR text)
+{
+ ScriptHost *script_host;
+ GUID guid = CLSID_JScript;
+ const WCHAR *ptr;
+ IDispatch *disp;
+ HRESULT hres;
+
+ static const WCHAR delimiterW[] = {'\"',0};
+
+ for(ptr = text; isalnumW(*ptr); ptr++);
+ if(*ptr == ':') {
+ LPWSTR language;
+ BOOL b;
+
+ language = heap_alloc((ptr-text+1)*sizeof(WCHAR));
+ memcpy(language, text, (ptr-text)*sizeof(WCHAR));
+ language[ptr-text] = 0;
+
+ b = get_guid_from_language(language, &guid);
+
+ heap_free(language);
+
+ if(!b) {
+ WARN("Could not find language\n");
+ return NULL;
+ }
+
+ ptr++;
+ }else {
+ ptr = text;
+ }
+
+ script_host = get_script_host(doc, &guid);
+ if(!script_host || !script_host->parse_proc)
+ return NULL;
+
+ hres = IActiveScriptParseProcedure_ParseProcedureText(script_host->parse_proc, ptr, NULL, emptyW,
+ NULL, NULL, delimiterW, 0 /* FIXME */, 0,
+ SCRIPTPROC_HOSTMANAGESSOURCE|SCRIPTPROC_IMPLICIT_THIS|SCRIPTPROC_IMPLICIT_PARENTS, &disp);
+ if(FAILED(hres)) {
+ WARN("ParseProcedureText failed: %08x\n", hres);
+ return NULL;
+ }
+
+ TRACE("ret %p\n", disp);
+ return disp;
+}
+
void release_script_hosts(HTMLDocument *doc)
{
ScriptHost *iter;
diff --git a/reactos/dll/win32/mshtml/task.c b/reactos/dll/win32/mshtml/task.c
index 3bb99cc490c..d863fba2f5a 100644
--- a/reactos/dll/win32/mshtml/task.c
+++ b/reactos/dll/win32/mshtml/task.c
@@ -28,6 +28,7 @@
#include "winuser.h"
#include "ole2.h"
#include "mshtmcid.h"
+#include "shlguid.h"
#include "wine/debug.h"
@@ -36,6 +37,17 @@
WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
#define WM_PROCESSTASK 0x8008
+#define TIMER_ID 0x3000
+
+typedef struct {
+ HTMLDocument *doc;
+ DWORD id;
+ DWORD time;
+ DWORD interval;
+ IDispatch *disp;
+
+ struct list entry;
+} task_timer_t;
void push_task(task_t *task)
{
@@ -66,11 +78,33 @@ static task_t *pop_task(void)
return task;
}
+static void release_task_timer(HWND thread_hwnd, task_timer_t *timer)
+{
+ list_remove(&timer->entry);
+
+ IDispatch_Release(timer->disp);
+
+ heap_free(timer);
+}
+
void remove_doc_tasks(const HTMLDocument *doc)
{
thread_data_t *thread_data = get_thread_data(FALSE);
+ struct list *liter, *ltmp;
+ task_timer_t *timer;
task_t *iter, *tmp;
+ LIST_FOR_EACH_SAFE(liter, ltmp, &thread_data->timer_list) {
+ timer = LIST_ENTRY(liter, task_timer_t, entry);
+ if(timer->doc == doc)
+ release_task_timer(thread_data->thread_hwnd, timer);
+ }
+
+ if(!list_empty(&thread_data->timer_list)) {
+ timer = LIST_ENTRY(list_head(&thread_data->timer_list), task_timer_t, entry);
+ SetTimer(thread_data->thread_hwnd, TIMER_ID, timer->time - GetTickCount(), NULL);
+ }
+
if(!thread_data)
return;
@@ -90,6 +124,70 @@ void remove_doc_tasks(const HTMLDocument *doc)
}
}
+static BOOL queue_timer(thread_data_t *thread_data, task_timer_t *timer)
+{
+ task_timer_t *iter;
+
+ if(list_empty(&thread_data->timer_list)
+ || LIST_ENTRY(list_head(&thread_data->timer_list), task_timer_t, entry)->time > timer->time) {
+
+ list_add_head(&thread_data->timer_list, &timer->entry);
+ return TRUE;
+ }
+
+ LIST_FOR_EACH_ENTRY(iter, &thread_data->timer_list, task_timer_t, entry) {
+ if(iter->time > timer->time) {
+ list_add_tail(&iter->entry, &timer->entry);
+ return FALSE;
+ }
+ }
+
+ list_add_tail(&thread_data->timer_list, &timer->entry);
+ return FALSE;
+}
+
+DWORD set_task_timer(HTMLDocument *doc, DWORD msec, BOOL interval, IDispatch *disp)
+{
+ thread_data_t *thread_data = get_thread_data(TRUE);
+ task_timer_t *timer;
+ DWORD tc = GetTickCount();
+
+ static DWORD id_cnt = 0x20000000;
+
+ timer = heap_alloc(sizeof(task_timer_t));
+ timer->id = id_cnt++;
+ timer->doc = doc;
+ timer->time = tc + msec;
+ timer->interval = interval ? msec : 0;
+
+ IDispatch_AddRef(disp);
+ timer->disp = disp;
+
+ if(queue_timer(thread_data, timer))
+ SetTimer(thread_data->thread_hwnd, TIMER_ID, msec, NULL);
+
+ return timer->id;
+}
+
+HRESULT clear_task_timer(HTMLDocument *doc, BOOL interval, DWORD id)
+{
+ thread_data_t *thread_data = get_thread_data(FALSE);
+ task_timer_t *iter;
+
+ if(!thread_data)
+ return S_OK;
+
+ LIST_FOR_EACH_ENTRY(iter, &thread_data->timer_list, task_timer_t, entry) {
+ if(iter->id == id && iter->doc == doc && (iter->interval == 0) == !interval) {
+ release_task_timer(thread_data->thread_hwnd, iter);
+ return S_OK;
+ }
+ }
+
+ WARN("timet not found\n");
+ return S_OK;
+}
+
static void set_downloading(HTMLDocument *doc)
{
IOleCommandTarget *olecmd;
@@ -126,6 +224,27 @@ static void set_downloading(HTMLDocument *doc)
}
}
+/* Calls undocumented 69 cmd of CGID_Explorer */
+static void call_explorer_69(HTMLDocument *doc)
+{
+ IOleCommandTarget *olecmd;
+ VARIANT var;
+ HRESULT hres;
+
+ if(!doc->client)
+ return;
+
+ hres = IOleClientSite_QueryInterface(doc->client, &IID_IOleCommandTarget, (void**)&olecmd);
+ if(FAILED(hres))
+ return;
+
+ VariantInit(&var);
+ hres = IOleCommandTarget_Exec(olecmd, &CGID_Explorer, 69, 0, NULL, &var);
+ IOleCommandTarget_Release(olecmd);
+ if(SUCCEEDED(hres) && V_VT(&var) != VT_NULL)
+ FIXME("handle result\n");
+}
+
static void set_parsecomplete(HTMLDocument *doc)
{
IOleCommandTarget *olecmd = NULL;
@@ -135,7 +254,9 @@ static void set_parsecomplete(HTMLDocument *doc)
if(doc->usermode == EDITMODE)
init_editor(doc);
+ call_explorer_69(doc);
call_property_onchanged(&doc->cp_propnotif, 1005);
+ call_explorer_69(doc);
doc->readystate = READYSTATE_INTERACTIVE;
call_property_onchanged(&doc->cp_propnotif, DISPID_READYSTATE);
@@ -156,6 +277,7 @@ static void set_parsecomplete(HTMLDocument *doc)
IOleCommandTarget_Exec(olecmd, NULL, OLECMDID_SETDOWNLOADSTATE, OLECMDEXECOPT_DONTPROMPTUSER,
&state, NULL);
+ IOleCommandTarget_Exec(olecmd, &CGID_ShellDocView, 103, 0, NULL, NULL);
IOleCommandTarget_Exec(olecmd, &CGID_MSHTML, IDM_PARSECOMPLETE, 0, NULL, NULL);
IOleCommandTarget_Exec(olecmd, NULL, OLECMDID_HTTPEQUIV_DONE, 0, NULL, NULL);
@@ -238,6 +360,40 @@ static void process_task(task_t *task)
}
}
+static LRESULT process_timer(void)
+{
+ thread_data_t *thread_data = get_thread_data(TRUE);
+ DWORD tc;
+ task_timer_t *timer;
+
+ TRACE("\n");
+
+ while(!list_empty(&thread_data->timer_list)) {
+ timer = LIST_ENTRY(list_head(&thread_data->timer_list), task_timer_t, entry);
+
+ tc = GetTickCount();
+ if(timer->time > tc) {
+ SetTimer(thread_data->thread_hwnd, TIMER_ID, timer->time-tc, NULL);
+ return 0;
+ }
+
+ list_remove(&timer->entry);
+ list_init(&timer->entry);
+
+ call_disp_func(timer->doc, timer->disp);
+
+ if(timer->interval) {
+ timer->time += timer->interval;
+ queue_timer(thread_data, timer);
+ }else {
+ release_task_timer(thread_data->thread_hwnd, timer);
+ }
+ }
+
+ KillTimer(thread_data->thread_hwnd, TIMER_ID);
+ return 0;
+}
+
static LRESULT WINAPI hidden_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg) {
@@ -252,6 +408,8 @@ static LRESULT WINAPI hidden_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPa
}
return 0;
+ case WM_TIMER:
+ return process_timer();
}
if(msg > WM_USER)
@@ -307,6 +465,7 @@ thread_data_t *get_thread_data(BOOL create)
if(!thread_data && create) {
thread_data = heap_alloc_zero(sizeof(thread_data_t));
TlsSetValue(mshtml_tls, thread_data);
+ list_init(&thread_data->timer_list);
}
return thread_data;
diff --git a/reactos/dll/win32/mshtml/txtrange.c b/reactos/dll/win32/mshtml/txtrange.c
index 72b9ce050de..9d96405889d 100644
--- a/reactos/dll/win32/mshtml/txtrange.c
+++ b/reactos/dll/win32/mshtml/txtrange.c
@@ -202,11 +202,6 @@ static void wstrbuf_append_len(wstrbuf_t *buf, LPCWSTR str, int len)
buf->buf[buf->len] = 0;
}
-static inline void wstrbuf_append(wstrbuf_t *buf, LPCWSTR str)
-{
- wstrbuf_append_len(buf, str, strlenW(str));
-}
-
static void wstrbuf_append_nodetxt(wstrbuf_t *buf, LPCWSTR str, int len)
{
const WCHAR *s = str;
@@ -616,6 +611,7 @@ static WCHAR next_char(const dompos_t *pos, dompos_t *new_pos)
case TEXT_NODE:
tmp_pos.node = iter;
tmp_pos.type = TEXT_NODE;
+ tmp_pos.off = 0;
dompos_addref(&tmp_pos);
p = tmp_pos.p;
@@ -731,6 +727,7 @@ static WCHAR prev_char(HTMLTxtRange *This, const dompos_t *pos, dompos_t *new_po
tmp_pos.node = iter;
tmp_pos.type = TEXT_NODE;
+ tmp_pos.off = 0;
dompos_addref(&tmp_pos);
p = tmp_pos.p + strlenW(tmp_pos.p)-1;
@@ -1183,7 +1180,7 @@ static HRESULT WINAPI HTMLTxtRange_parentElement(IHTMLTxtRange *iface, IHTMLElem
return S_OK;
}
- node = get_node(This->doc, nsnode);
+ node = get_node(This->doc, nsnode, TRUE);
nsIDOMNode_Release(nsnode);
return IHTMLDOMNode_QueryInterface(HTMLDOMNODE(node), &IID_IHTMLElement, (void**)parent);
diff --git a/reactos/include/psdk/activaut.idl b/reactos/include/psdk/activaut.idl
new file mode 100644
index 00000000000..56900a7bc6c
--- /dev/null
+++ b/reactos/include/psdk/activaut.idl
@@ -0,0 +1,29 @@
+/*
+ * 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
+ */
+
+#ifndef DO_NO_IMPORTS
+import "ocidl.idl";
+import "oleidl.idl";
+import "oaidl.idl";
+#endif
+
+cpp_quote("#ifndef _NO_AUTHOR_GUIDS")
+
+cpp_quote("DEFINE_GUID(CATID_ActiveScriptAuthor, 0xaee2a92,0xbcbb,0x11d0,0x8c,0x72,0x0,0xc0,0x4f,0xc2,0xb0,0x85);")
+
+cpp_quote("#endif")
diff --git a/reactos/include/psdk/activdbg.idl b/reactos/include/psdk/activdbg.idl
new file mode 100644
index 00000000000..a572a51c4ab
--- /dev/null
+++ b/reactos/include/psdk/activdbg.idl
@@ -0,0 +1,383 @@
+/*
+ * 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
+ */
+
+import "ocidl.idl";
+import "activscp.idl";
+/* import "dbgprop.idl"; */
+
+interface IDebugDocumentContext;
+interface IRemoteDebugApplication;
+
+/* FIXME: */
+interface IEnumDebugStackFrames;
+interface IDebugStackFrame;
+interface IApplicationDebugger;
+interface IEnumRemoteDebugApplicationThreads;
+interface IDebugApplicationNode;
+interface IEnumDebugExpressionContexts;
+interface IDebugApplicationThread;
+interface IDebugSyncOperation;
+interface IDebugAsyncOperation;
+interface IDebugStackFrameSniffer;
+interface IDebugThreadCall32;
+interface IActiveScriptErrorDebug;
+interface IProvideExpressionContexts;
+
+typedef enum tagBREAKPOINT_STATE {
+ BREAKPOINT_DELETED,
+ BREAKPOINT_DISABLED,
+ BREAKPOINT_ENABLED
+} BREAKPOINT_STATE;
+
+typedef DWORD APPBREAKFLAGS;
+
+typedef enum tagBREAKREASON {
+ BREAKREASON_STEP,
+ BREAKREASON_BREAKPOINT,
+ BREAKREASON_DEBUGGER_BLOCK,
+ BREAKREASON_HOST_INITIATED,
+ BREAKREASON_LANGUAGE_INITIATED,
+ BREAKREASON_DEBUGGER_HALT,
+ BREAKREASON_ERROR,
+ BREAKREASON_JIT
+} BREAKREASON;
+
+typedef enum tagBREAKRESUME_ACTION {
+ BREAKRESUMEACTION_ABORT,
+ BREAKRESUMEACTION_CONTINUE,
+ BREAKRESUMEACTION_STEP_INTO,
+ BREAKRESUMEACTION_STEP_OVER,
+ BREAKRESUMEACTION_STEP_OUT,
+ BREAKRESUMEACTION_IGNORE
+} BREAKRESUMEACTION;
+
+typedef enum tagDOCUMENTNAMETYPE {
+ DOCUMENTNAMETYPE_APPNODE,
+ DOCUMENTNAMETYPE_TITLE,
+ DOCUMENTNAMETYPE_FILE_TAIL,
+ DOCUMENTNAMETYPE_URL
+} DOCUMENTNAMETYPE;
+
+typedef enum tagERRORRESUMEACTION {
+ ERRORRESUMEACTION_ReexecuteErrorStatement,
+ ERRORRESUMEACTION_AbortCallAndReturnErrorToCaller,
+ ERRORRESUMEACTION_SkipErrorStatement,
+} ERRORRESUMEACTION;
+
+/************************************************************
+ * interface IDebugDocumentInfo
+ */
+[
+ object,
+ uuid(51973c1f-cb0c-11d0-b5c9-00a0244a0e7a),
+ pointer_default(unique)
+]
+interface IDebugDocumentInfo : IUnknown
+{
+ HRESULT GetName(
+ [in] DOCUMENTNAMETYPE dnt,
+ [out] BSTR *pbstrName);
+
+ HRESULT GetDocumentClassId(
+ [out] CLSID *pclsidDocument);
+}
+
+/************************************************************
+ * interface IDebugDocument
+ */
+[
+ object,
+ uuid(51973c21-cb0c-11d0-b5c9-00a0244a0e7a),
+ pointer_default(unique)
+]
+interface IDebugDocument : IDebugDocumentInfo
+{
+}
+
+/************************************************************
+ * interface IDebugCodeContext
+ */
+[
+ object,
+ uuid(51973c13-cb0c-11d0-b5c9-00a0244a0e7a),
+ pointer_default(unique)
+]
+interface IDebugCodeContext : IUnknown
+{
+ HRESULT GetDocumentContext(
+ [out] IDebugDocumentContext **ppsc);
+
+ HRESULT SetBreakPoint(
+ [in] BREAKPOINT_STATE bps);
+}
+
+/************************************************************
+ * interface IEnumDebugCodeContexts
+ */
+[
+ object,
+ uuid(51973c1d-cb0c-11d0-b5c9-00a0244a0e7a),
+ pointer_default(unique)
+]
+interface IEnumDebugCodeContexts : IUnknown
+{
+ HRESULT Next(
+ [in] ULONG celt,
+ [out] IDebugCodeContext **pscc,
+ [out] ULONG *pceltFetched);
+
+ HRESULT Skip(
+ [in] ULONG celt);
+
+ HRESULT Reset();
+
+ HRESULT Clone(
+ [out] IEnumDebugCodeContexts **ppescc);
+}
+
+/************************************************************
+ * interface IDebugDocumentContext
+ */
+[
+ object,
+ uuid(51973c28-cb0c-11d0-b5c9-00a0244a0e7a),
+ pointer_default(unique)
+]
+interface IDebugDocumentContext : IUnknown
+{
+ HRESULT GetDocument(
+ [out] IDebugDocument **ppsd);
+
+ HRESULT EnumCodeContexts(
+ [out] IEnumDebugCodeContexts **ppescc);
+}
+
+/************************************************************
+ * interface IRemoteDebugApplicationThread
+ */
+[
+ object,
+ uuid(51973c37-cb0c-11d0-b5c9-00a0244a0e7a),
+ pointer_default(unique)
+]
+interface IRemoteDebugApplicationThread : IUnknown
+{
+ HRESULT GetSystemThreadId(
+ [out] DWORD *dwThreadId);
+
+ HRESULT GetApplication(
+ [out] IRemoteDebugApplication **pprda);
+
+ HRESULT EnumStackFrames(
+ [out] IEnumDebugStackFrames **ppedsf);
+
+ HRESULT GetDescription(
+ [out] BSTR *pbstrDescription,
+ [out] BSTR *pbstrState);
+
+ HRESULT SetNextStatement(
+ [in] IDebugStackFrame *pStackFrame,
+ [in] IDebugCodeContext *pCodeContext);
+
+ HRESULT GetState(
+ [out] DWORD *pState);
+
+ HRESULT Suspend(
+ [out] DWORD *pdwCount);
+
+ HRESULT Resume(
+ [out] DWORD *pdwCount);
+
+ HRESULT GetSuspendCount(
+ [out] DWORD *pdwCount);
+}
+
+/************************************************************
+ * interface IRemoteDebugApplication
+ */
+[
+ object,
+ uuid(51973c30-cb0c-11d0-b5c9-00a0244Aae7a),
+ pointer_default(unique)
+]
+interface IRemoteDebugApplication : IUnknown
+{
+ HRESULT ResumeFromBreakPoint(
+ [in] IRemoteDebugApplicationThread *prptFocus,
+ [in] BREAKRESUMEACTION bra,
+ [in] ERRORRESUMEACTION era);
+
+ HRESULT CauseBreak();
+
+ HRESULT ConnectDebugger(
+ [in] IApplicationDebugger *pad);
+
+ HRESULT DisconnectDebugger();
+
+ HRESULT GetDebugger(
+ [out] IApplicationDebugger **pad);
+
+ HRESULT CreateInstanceAtApplication(
+ [in] REFCLSID rclsid,
+ [in] IUnknown *pUnkOuter,
+ [in] DWORD dwClsContext,
+ [in] REFIID riid,
+ [out, iid_is(riid)] IUnknown **ppvObject);
+
+ HRESULT QueryAlive();
+
+ HRESULT EnumThreads(
+ [out] IEnumRemoteDebugApplicationThreads **pperdat);
+
+ HRESULT GetName(
+ [out] BSTR *pbstrName);
+
+ HRESULT GetRootNode(
+ [out] IDebugApplicationNode **ppdanRoot);
+
+ HRESULT EnumGlobalExpressionContexts(
+ [out] IEnumDebugExpressionContexts **ppedec);
+}
+
+/************************************************************
+ * interface IDebugApplication32
+ */
+[
+ object,
+ uuid(51973c32-cb0c-11d0-b5c9-00a0244a0e7a),
+ pointer_default(unique),
+ local
+]
+interface IDebugApplication32 : IRemoteDebugApplication
+{
+ HRESULT SetName(
+ [in] LPCOLESTR pstrName);
+
+ HRESULT StepOutComplete();
+
+ HRESULT DebugOutput(
+ [in] LPCOLESTR pstr);
+
+ HRESULT StartDebugSession();
+
+ HRESULT HandleBreakPoint(
+ [in] BREAKREASON br,
+ [out] BREAKRESUMEACTION *pbra);
+
+ HRESULT Close();
+
+ HRESULT GetBreakFlags(
+ [out] APPBREAKFLAGS *pabf,
+ [out] IRemoteDebugApplicationThread **pprdatSteppingThread);
+
+ HRESULT GetCurrentThread(
+ [out] IDebugApplicationThread **pat);
+
+ HRESULT CreateAsyncDebugOperation(
+ [in] IDebugSyncOperation *psdo,
+ [out] IDebugAsyncOperation **ppado);
+
+ HRESULT AddStackFrameSniffer(
+ [in] IDebugStackFrameSniffer *pdsfs,
+ [out] DWORD *pdwCookie);
+
+ HRESULT RemoveStackFrameSniffer(
+ [in] DWORD dwCookie);
+
+ HRESULT QueryCurrentThreadIsDebuggerThread();
+
+ HRESULT SynchronousCallInDebuggerThread(
+ [in] IDebugThreadCall32 *pptc,
+ [in] DWORD dwParam1,
+ [in] DWORD dwParam2,
+ [in] DWORD dwParam3);
+
+ HRESULT CreateApplicationNode(
+ [out] IDebugApplicationNode **ppdanNew);
+
+ HRESULT FireDebuggerEvent(
+ [in] REFGUID riid,
+ [in] IUnknown *punk);
+
+ HRESULT HandleRuntimeError(
+ [in] IActiveScriptErrorDebug *pErrorDebug,
+ [in] IActiveScriptSite *pScriptSite,
+ [out] BREAKRESUMEACTION *pbra,
+ [out] ERRORRESUMEACTION *perra,
+ [out] BOOL *pfCallOnScriptError);
+
+ BOOL FCanJitDebug();
+
+ BOOL FIsAutoJitDebugEnabled();
+
+ HRESULT AddGlobalExpressionContextProvider(
+ [in] IProvideExpressionContexts *pdsfs,
+ [out] DWORD *pdwCookie);
+
+ HRESULT RemoveGlobalExpressionContextProvider(
+ [in] DWORD dwCookie);
+}
+
+/************************************************************
+ * interface IActiveScriptSiteDebug32
+ */
+[
+ object,
+ uuid(51973c11-cb0c-11d0-b5c9-00a0244a0e7a),
+ pointer_default(unique),
+ local
+]
+interface IActiveScriptSiteDebug32 : IUnknown
+{
+ HRESULT GetDocumentContextFromPosition(
+ [in] DWORD dwSourceContext,
+ [in] ULONG uCharacterOffset,
+ [in] ULONG uNumChars,
+ [out] IDebugDocumentContext **ppsc);
+
+ HRESULT GetApplication(
+ [out] IDebugApplication32 **ppda);
+
+ HRESULT GetRootApplicationNode(
+ [out] IDebugApplicationNode **ppdanRoot);
+
+ HRESULT OnScriptErrorDebug(
+ [in] IActiveScriptErrorDebug *pErrorDebug,
+ [out] BOOL *pfEnterDebugger,
+ [out] BOOL *pfCallOnScriptErrorWhenContinuing);
+}
+
+cpp_quote("#ifndef DISABLE_ACTIVDBG_INTERFACE_WRAPPERS")
+cpp_quote("#ifdef _WIN64")
+
+cpp_quote("#define IActiveScriptSiteDebug IActiveScriptSiteDebug64")
+cpp_quote("#define IID_IActiveScriptSiteDebug IID_IActiveScriptSiteDebug64")
+
+cpp_quote("#define IDebugApplication IDebugApplication64")
+cpp_quote("#define IID_IDebugApplication IID_IDebugApplication64")
+
+cpp_quote("#else")
+
+cpp_quote("#define IActiveScriptSiteDebug IActiveScriptSiteDebug32")
+cpp_quote("#define IID_IActiveScriptSiteDebug IID_IActiveScriptSiteDebug32")
+
+cpp_quote("#define IDebugApplication IDebugApplication32")
+cpp_quote("#define IID_IDebugApplication IID_IDebugApplication32")
+
+cpp_quote("#endif")
+cpp_quote("#endif")
diff --git a/reactos/include/psdk/mshtmdid.h b/reactos/include/psdk/mshtmdid.h
index 72a3e4760fe..e0a1bf2b81f 100644
--- a/reactos/include/psdk/mshtmdid.h
+++ b/reactos/include/psdk/mshtmdid.h
@@ -21,6 +21,7 @@
#define DISPID_NORMAL_FIRST 1000
#define DISPID_OMDOCUMENT DISPID_NORMAL_FIRST
+#define DISPID_DATATRANSFER DISPID_NORMAL_FIRST
#define DISPID_ANCHOR DISPID_NORMAL_FIRST
#define DISPID_BLOCK DISPID_NORMAL_FIRST
#define DISPID_BR DISPID_NORMAL_FIRST
@@ -90,6 +91,8 @@
#define DISPID_OMDOCUMENT DISPID_NORMAL_FIRST
#define DISPID_SCREEN DISPID_NORMAL_FIRST
#define DISPID_DOMATTRIBUTE DISPID_NORMAL_FIRST
+#define DISPID_DOMTEXTNODE DISPID_NORMAL_FIRST
+#define DISPID_GENERIC DISPID_NORMAL_FIRST
#define DISPID_DOMIMPLEMENTATION DISPID_NORMAL_FIRST
#define DISPID_COLLECTION (DISPID_NORMAL_FIRST+500)
@@ -984,6 +987,17 @@
#define DISPID_IHTMLELEMENTCOLLECTION__NEWENUM DISPID_NEWENUM
#define DISPID_IHTMLELEMENTCOLLECTION_ITEM DISPID_VALUE
+/* IHTMLElementCollection2 */
+#define DISPID_IHTMLELEMENTCOLLECTION2_URNS DISPID_COLLECTION+5
+
+/* IHTMLElementCollection3 */
+#define DISPID_IHTMLELEMENTCOLLECTION3_NAMEDITEM DISPID_COLLECTION+6
+
+/* IHTMLDOMChildrenCollection */
+#define DISPID_IHTMLDOMCHILDRENCOLLECTION_LENGTH DISPID_COLLECTION
+#define DISPID_IHTMLDOMCHILDRENCOLLECTION__NEWENUM DISPID_NEWENUM
+#define DISPID_IHTMLDOMCHILDRENCOLLECTION_ITEM DISPID_VALUE
+
/* HTMLElementEvents */
#define DISPID_HTMLELEMENTEVENTS_ONHELP DISPID_EVMETH_ONHELP
#define DISPID_HTMLELEMENTEVENTS_ONCLICK DISPID_EVMETH_ONCLICK
@@ -1107,7 +1121,7 @@
#define DISPID_IHTMLELEMENT_ONDATASETCOMPLETE DISPID_EVPROP_ONDATASETCOMPLETE
#define DISPID_IHTMLELEMENT_ONFILTERCHANGE DISPID_EVPROP_ONFILTER
-/* IHTMLelement2 */
+/* IHTMLElement2 */
#define DISPID_IHTMLELEMENT2_SCOPENAME DISPID_ELEMENT+39
#define DISPID_IHTMLELEMENT2_SETCAPTURE DISPID_ELEMENT+40
#define DISPID_IHTMLELEMENT2_RELEASECAPTURE DISPID_ELEMENT+41
@@ -1177,6 +1191,57 @@
#define DISPID_IHTMLELEMENT2_READYSTATEVALUE DISPID_ELEMENT+84
#define DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME DISPID_ELEMENT+85
+/* IHTMLElement3 */
+#define DISPID_IHTMLELEMENT3_MERGEATTRIBUTES DISPID_ELEMENT+96
+#define DISPID_IHTMLELEMENT3_ISMULTILINE DISPID_ELEMENT+97
+#define DISPID_IHTMLELEMENT3_CANHAVEHTML DISPID_ELEMENT+98
+#define DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE DISPID_EVPROP_ONLAYOUTCOMPLETE
+#define DISPID_IHTMLELEMENT3_ONPAGE DISPID_EVPROP_ONPAGE
+#define DISPID_IHTMLELEMENT3_INFLATEBLOCK DISPID_ELEMENT+100
+#define DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE DISPID_EVPROP_ONBEFOREDEACTIVATE
+#define DISPID_IHTMLELEMENT3_SETACTIVE DISPID_ELEMENT+101
+#define DISPID_IHTMLELEMENT3_CONTENTEDITABLE DISPID_A_EDITABLE
+#define DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE DISPID_ELEMENT+102
+#define DISPID_IHTMLELEMENT3_HIDEFOCUS DISPID_A_HIDEFOCUS
+#define DISPID_IHTMLELEMENT3_DISABLED STDPROPID_XOBJ_DISABLED
+#define DISPID_IHTMLELEMENT3_ISDISABLED DISPID_ELEMENT+105
+#define DISPID_IHTMLELEMENT3_ONMOVE DISPID_EVPROP_ONMOVE
+#define DISPID_IHTMLELEMENT3_ONCONTROLSELECT DISPID_EVPROP_ONCONTROLSELECT
+#define DISPID_IHTMLELEMENT3_FIREEVENT DISPID_ELEMENT+106
+#define DISPID_IHTMLELEMENT3_ONRESIZESTART DISPID_EVPROP_ONRESIZESTART
+#define DISPID_IHTMLELEMENT3_ONRESIZEEND DISPID_EVPROP_ONRESIZEEND
+#define DISPID_IHTMLELEMENT3_ONMOVESTART DISPID_EVPROP_ONMOVESTART
+#define DISPID_IHTMLELEMENT3_ONMOVEEND DISPID_EVPROP_ONMOVEEND
+#define DISPID_IHTMLELEMENT3_ONMOUSEENTER DISPID_EVPROP_ONMOUSEENTER
+#define DISPID_IHTMLELEMENT3_ONMOUSELEAVE DISPID_EVPROP_ONMOUSELEAVE
+#define DISPID_IHTMLELEMENT3_ONACTIVATE DISPID_EVPROP_ONACTIVATE
+#define DISPID_IHTMLELEMENT3_ONDEACTIVATE DISPID_EVPROP_ONDEACTIVATE
+#define DISPID_IHTMLELEMENT3_DRAGDROP DISPID_ELEMENT+107
+#define DISPID_IHTMLELEMENT3_GLYPHMODE DISPID_ELEMENT+108
+
+/* IHTMLElement4 */
+#define DISPID_IHTMLELEMENT4_ONMOUSEWHEEL DISPID_EVPROP_ONMOUSEWHEEL
+#define DISPID_IHTMLELEMENT4_NORMALIZE DISPID_ELEMENT+112
+#define DISPID_IHTMLELEMENT4_GETATTRIBUTENODE DISPID_ELEMENT+109
+#define DISPID_IHTMLELEMENT4_SETATTRIBUTENODE DISPID_ELEMENT+110
+#define DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE DISPID_ELEMENT+111
+#define DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE DISPID_EVPROP_ONBEFOREACTIVATE
+#define DISPID_IHTMLELEMENT4_ONFOCUSIN DISPID_EVPROP_ONFOCUSIN
+#define DISPID_IHTMLELEMENT4_ONFOCUSOUT DISPID_EVPROP_ONFOCUSOUT
+
+/* IHTMLGenericElement */
+#define DISPID_IHTMLGENERICELEMENT_RECORDSET DISPID_GENERIC+1
+#define DISPID_IHTMLGENERICELEMENT_NAMEDRECORDSET DISPID_GENERIC+2
+
+/* IHTMLUniqueName */
+#define DISPID_IHTMLUNIQUENAME_UNIQUENUMBER DISPID_ELEMENT+54
+#define DISPID_IHTMLUNIQUENAME_UNIQUEID DISPID_ELEMENT+55
+
+/* IHTMLDatabinding */
+#define DISPID_IHTMLDATABINDING_DATAFLD DISPID_ELEMENT+21
+#define DISPID_IHTMLDATABINDING_DATASRC DISPID_ELEMENT+22
+#define DISPID_IHTMLDATABINDING_DATAFORMATAS DISPID_ELEMENT+23
+
/* IHTMLStyle */
#define DISPID_IHTMLSTYLE_PIXELTOP DISPID_STYLE
#define DISPID_IHTMLSTYLE_PIXELLEFT (DISPID_STYLE+1)
@@ -1271,6 +1336,62 @@
#define DISPID_IHTMLSTYLE_TEXTALIGN STDPROPID_XOBJ_BLOCKALIGN
#define DISPID_IHTMLSTYLE_BACKGROUNDCOLOR DISPID_BACKCOLOR
+/* IHTMLStyle2 */
+#define DISPID_IHTMLSTYLE2_TABLELAYOUT DISPID_A_TABLELAYOUT
+#define DISPID_IHTMLSTYLE2_BORDERCOLLAPSE DISPID_A_BORDERCOLLAPSE
+#define DISPID_IHTMLSTYLE2_DIRECTION DISPID_A_DIRECTION
+#define DISPID_IHTMLSTYLE2_BEHAVIOR DISPID_A_BEHAVIOR
+#define DISPID_IHTMLSTYLE2_SETEXPRESSION DISPID_HTMLOBJECT+4
+#define DISPID_IHTMLSTYLE2_GETEXPRESSION DISPID_HTMLOBJECT+5
+#define DISPID_IHTMLSTYLE2_REMOVEEXPRESSION DISPID_HTMLOBJECT+6
+#define DISPID_IHTMLSTYLE2_POSITION DISPID_A_POSITION
+#define DISPID_IHTMLSTYLE2_UNICODEBIDI DISPID_A_UNICODEBIDI
+#define DISPID_IHTMLSTYLE2_BOTTOM STDPROPID_XOBJ_BOTTOM
+#define DISPID_IHTMLSTYLE2_RIGHT STDPROPID_XOBJ_RIGHT
+#define DISPID_IHTMLSTYLE2_PIXELBOTTOM DISPID_STYLE+9
+#define DISPID_IHTMLSTYLE2_PIXELRIGHT DISPID_STYLE+10
+#define DISPID_IHTMLSTYLE2_POSBOTTOM DISPID_STYLE+11
+#define DISPID_IHTMLSTYLE2_POSRIGHT DISPID_STYLE+12
+#define DISPID_IHTMLSTYLE2_IMEMODE DISPID_A_IMEMODE
+#define DISPID_IHTMLSTYLE2_RUBYALIGN DISPID_A_RUBYALIGN
+#define DISPID_IHTMLSTYLE2_RUBYPOSITION DISPID_A_RUBYPOSITION
+#define DISPID_IHTMLSTYLE2_RUBYOVERHANG DISPID_A_RUBYOVERHANG
+#define DISPID_IHTMLSTYLE2_LAYOUTGRIDCHAR DISPID_A_LAYOUTGRIDCHAR
+#define DISPID_IHTMLSTYLE2_LAYOUTGRIDLINE DISPID_A_LAYOUTGRIDLINE
+#define DISPID_IHTMLSTYLE2_LAYOUTGRIDMODE DISPID_A_LAYOUTGRIDMODE
+#define DISPID_IHTMLSTYLE2_LAYOUTGRIDTYPE DISPID_A_LAYOUTGRIDTYPE
+#define DISPID_IHTMLSTYLE2_LAYOUTGRID DISPID_A_LAYOUTGRID
+#define DISPID_IHTMLSTYLE2_WORDBREAK DISPID_A_WORDBREAK
+#define DISPID_IHTMLSTYLE2_LINEBREAK DISPID_A_LINEBREAK
+#define DISPID_IHTMLSTYLE2_TEXTJUSTIFY DISPID_A_TEXTJUSTIFY
+#define DISPID_IHTMLSTYLE2_TEXTJUSTIFYTRIM DISPID_A_TEXTJUSTIFYTRIM
+#define DISPID_IHTMLSTYLE2_TEXTKASHIDA DISPID_A_TEXTKASHIDA
+#define DISPID_IHTMLSTYLE2_TEXTAUTOSPACE DISPID_A_TEXTAUTOSPACE
+#define DISPID_IHTMLSTYLE2_OVERFLOWX DISPID_A_OVERFLOWX
+#define DISPID_IHTMLSTYLE2_OVERFLOWY DISPID_A_OVERFLOWY
+#define DISPID_IHTMLSTYLE2_ACCELERATOR DISPID_A_ACCELERATOR
+
+/* IHTMLStyle3 */
+#define DISPID_IHTMLSTYLE3_LAYOUTFLOW DISPID_A_LAYOUTFLOW
+#define DISPID_IHTMLSTYLE3_ZOOM DISPID_A_ZOOM
+#define DISPID_IHTMLSTYLE3_WORDWRAP DISPID_A_WORDWRAP
+#define DISPID_IHTMLSTYLE3_TEXTUNDERLINEPOSITION DISPID_A_TEXTUNDERLINEPOSITION
+#define DISPID_IHTMLSTYLE3_SCROLLBARBASECOLOR DISPID_A_SCROLLBARBASECOLOR
+#define DISPID_IHTMLSTYLE3_SCROLLBARFACECOLOR DISPID_A_SCROLLBARFACECOLOR
+#define DISPID_IHTMLSTYLE3_SCROLLBAR3DLIGHTCOLOR DISPID_A_SCROLLBAR3DLIGHTCOLOR
+#define DISPID_IHTMLSTYLE3_SCROLLBARSHADOWCOLOR DISPID_A_SCROLLBARSHADOWCOLOR
+#define DISPID_IHTMLSTYLE3_SCROLLBARHIGHLIGHTCOLOR DISPID_A_SCROLLBARHIGHLIGHTCOLOR
+#define DISPID_IHTMLSTYLE3_SCROLLBARDARKSHADOWCOLOR DISPID_A_SCROLLBARDARKSHADOWCOLOR
+#define DISPID_IHTMLSTYLE3_SCROLLBARARROWCOLOR DISPID_A_SCROLLBARARROWCOLOR
+#define DISPID_IHTMLSTYLE3_SCROLLBARTRACKCOLOR DISPID_A_SCROLLBARTRACKCOLOR
+#define DISPID_IHTMLSTYLE3_WRITINGMODE DISPID_A_WRITINGMODE
+#define DISPID_IHTMLSTYLE3_TEXTALIGNLAST DISPID_A_TEXTALIGNLAST
+#define DISPID_IHTMLSTYLE3_TEXTKASHIDASPACE DISPID_A_TEXTKASHIDASPACE
+
+/* IHTMLStyle4 */
+#define DISPID_IHTMLSTYLE4_TEXTOVERFLOW DISPID_A_TEXTOVERFLOW
+#define DISPID_IHTMLSTYLE4_MINHEIGHT DISPID_A_MINHEIGHT
+
/* IHTMLFiltersCollection */
#define DISPID_IHTMLFILTERSCOLLECTION_LENGTH (DISPID_FILTERS+1)
#define DISPID_IHTMLFILTERSCOLLECTION__NEWENUM DISPID_NEWENUM
@@ -1321,7 +1442,7 @@
#define DISPID_IHTMLWINDOW2_FRAMES 1100
#define DISPID_IHTMLWINDOW2_DEFAULTSTATUS 1101
#define DISPID_IHTMLWINDOW2_STATUS 1102
-#define DISPID_IHTMLWINDOW2_SETTIMEOUT 1103
+#define DISPID_IHTMLWINDOW2_SETTIMEOUT 1172
#define DISPID_IHTMLWINDOW2_CLEARTIMEOUT 1104
#define DISPID_IHTMLWINDOW2_ALERT 1105
#define DISPID_IHTMLWINDOW2_CONFIRM 1110
@@ -1338,7 +1459,7 @@
#define DISPID_IHTMLWINDOW2_BLUR 1159
#define DISPID_IHTMLWINDOW2_SCROLL 1160
#define DISPID_IHTMLWINDOW2_CLIENTINFORMATION 1161
-#define DISPID_IHTMLWINDOW2_SETINTERVAL 1162
+#define DISPID_IHTMLWINDOW2_SETINTERVAL 1173
#define DISPID_IHTMLWINDOW2_CLEARINTERVAL 1163
#define DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING 1164
#define DISPID_IHTMLWINDOW2_EXECSCRIPT 1165
@@ -1356,6 +1477,23 @@
#define DISPID_IHTMLWINDOW2_ONRESIZE DISPID_EVPROP_ONRESIZE
#define DISPID_IHTMLWINDOW2_ONSCROLL DISPID_EVPROP_ONSCROLL
+/* IHTMLWindow3 */
+#define DISPID_IHTMLWINDOW3_SCREENLEFT 1170
+#define DISPID_IHTMLWINDOW3_SCREENTOP 1171
+#define DISPID_IHTMLWINDOW3_ATTACHEVENT DISPID_HTMLOBJECT+7
+#define DISPID_IHTMLWINDOW3_DETACHEVENT DISPID_HTMLOBJECT+8
+#define DISPID_IHTMLWINDOW3_SETTIMEOUT 1103
+#define DISPID_IHTMLWINDOW3_SETINTERVAL 1162
+#define DISPID_IHTMLWINDOW3_PRINT 1174
+#define DISPID_IHTMLWINDOW3_ONBEFOREPRINT DISPID_EVPROP_ONBEFOREPRINT
+#define DISPID_IHTMLWINDOW3_ONAFTERPRINT DISPID_EVPROP_ONAFTERPRINT
+#define DISPID_IHTMLWINDOW3_CLIPBOARDDATA 1175
+#define DISPID_IHTMLWINDOW3_SHOWMODELESSDIALOG 1176
+
+/* IHTMLWindow4 */
+#define DISPID_IHTMLWINDOW4_CREATEPOPUP 1180
+#define DISPID_IHTMLWINDOW4_FRAMEELEMENT 1181
+
/* IHTMLImageElementFactory */
#define DISPID_IHTMLIMAGEELEMENTFACTORY_CREATE DISPID_VALUE
@@ -1390,6 +1528,9 @@
#define DISPID_IHTMLIMGELEMENT_HEIGHT STDPROPID_XOBJ_HEIGHT
#define DISPID_IHTMLIMGELEMENT_START DISPID_IMGBASE+13
+/* IHTMLImgElement2 */
+#define DISPID_IHTMLIMGELEMENT2_LONGDESC DISPID_IMG+19
+
/* IOmHistory */
#define DISPID_IOMHISTORY_LENGTH DISPID_HISTORY
#define DISPID_IOMHISTORY_BACK (DISPID_HISTORY+1)
@@ -1436,6 +1577,13 @@
#define DISPID_IHTMLOPSPROFILE_DOREADREQUEST 8
#define DISPID_IHTMLOPSPROFILE_DOWRITEREQUEST 9
+/* IHTMLDataTransfer */
+#define DISPID_IHTMLDATATRANSFER_SETDATA DISPID_DATATRANSFER+1
+#define DISPID_IHTMLDATATRANSFER_GETDATA DISPID_DATATRANSFER+2
+#define DISPID_IHTMLDATATRANSFER_CLEARDATA DISPID_DATATRANSFER+3
+#define DISPID_IHTMLDATATRANSFER_DROPEFFECT DISPID_DATATRANSFER+4
+#define DISPID_IHTMLDATATRANSFER_EFFECTALLOWED DISPID_DATATRANSFER+5
+
/* IHTMLEventObj */
#define DISPID_IHTMLEVENTOBJ_SRCELEMENT (DISPID_EVENTOBJ+1)
#define DISPID_IHTMLEVENTOBJ_ALTKEY (DISPID_EVENTOBJ+2)
@@ -1481,6 +1629,9 @@
#define DISPID_IHTMLOPTIONELEMENT_TEXT (DISPID_OPTION+4)
#define DISPID_IHTMLOPTIONELEMENT_FORM (DISPID_OPTION+6)
+/* IHTMLOptionElement3 */
+#define DISPID_IHTMLOPTIONELEMENT3_LABEL DISPID_OPTION+7
+
/* IHTMLFormElement */
#define DISPID_IHTMLFORMELEMENT_ACTION (DISPID_FORM+1)
#define DISPID_IHTMLFORMELEMENT_DIR (DISPID_FORM+2)
@@ -1639,6 +1790,19 @@
/* IHTMLDOMNode2 */
#define DISPID_IHTMLDOMNODE2_OWNERDOCUMENT DISPID_ELEMENT+113
+/* IHTMLDOMTextNode */
+#define DISPID_IHTMLDOMTEXTNODE_DATA DISPID_DOMTEXTNODE
+#define DISPID_IHTMLDOMTEXTNODE_TOSTRING DISPID_DOMTEXTNODE+1
+#define DISPID_IHTMLDOMTEXTNODE_LENGTH DISPID_DOMTEXTNODE+2
+#define DISPID_IHTMLDOMTEXTNODE_SPLITTEXT DISPID_DOMTEXTNODE+3
+
+/* IHTMLDOMTextNode2 */
+#define DISPID_IHTMLDOMTEXTNODE2_SUBSTRINGDATA DISPID_DOMTEXTNODE+4
+#define DISPID_IHTMLDOMTEXTNODE2_APPENDDATA DISPID_DOMTEXTNODE+5
+#define DISPID_IHTMLDOMTEXTNODE2_INSERTDATA DISPID_DOMTEXTNODE+6
+#define DISPID_IHTMLDOMTEXTNODE2_DELETEDATA DISPID_DOMTEXTNODE+7
+#define DISPID_IHTMLDOMTEXTNODE2_REPLACEDATA DISPID_DOMTEXTNODE+8
+
/* IHTMLRenderStyle */
#define DISPID_IHTMLRENDERSTYLE_TEXTLINETHROUGHSTYLE DISPID_A_TEXTLINETHROUGHSTYLE
#define DISPID_IHTMLRENDERSTYLE_TEXTUNDERLINESTYLE DISPID_A_TEXTUNDERLINESTYLE
@@ -1792,6 +1956,10 @@
#define DISPID_IHTMLINPUTELEMENT_HEIGHT STDPROPID_XOBJ_HEIGHT
#define DISPID_IHTMLINPUTELEMENT_START DISPID_INPUT+20
+/* IHTMLInputElement2 */
+#define DISPID_IHTMLINPUTELEMENT2_ACCEPT DISPID_INPUT+22
+#define DISPID_IHTMLINPUTELEMENT2_USEMAP DISPID_INPUT+23
+
/* IHTMLInputTextElement */
#define DISPID_IHTMLINPUTTEXTELEMENT_TYPE DISPID_INPUT
#define DISPID_IHTMLINPUTTEXTELEMENT_VALUE DISPID_A_VALUE
@@ -1826,6 +1994,12 @@
#define DISPID_IHTMLSELECTELEMENT_ITEM DISPID_VALUE
#define DISPID_IHTMLSELECTELEMENT_TAGS DISPID_COLLECTION+2
+/* IHTMLSelectElement2 */
+#define DISPID_IHTMLSELECTELEMENT2_URNS DISPID_COLLECTION+5
+
+/* IHTMLSelectElement4 */
+#define DISPID_IHTMLSELECTELEMENT4_NAMEDITEM DISPID_COLLECTION+6
+
/* IHTMLRect */
#define DISPID_IHTMLRECT_LEFT DISPID_OMRECT+1
#define DISPID_IHTMLRECT_TOP DISPID_OMRECT+2
@@ -1950,6 +2124,19 @@
#define DISPID_IHTMLTABLECAPTION_ALIGN STDPROPID_XOBJ_BLOCKALIGN
#define DISPID_IHTMLTABLECAPTION_VALIGN DISPID_A_TABLEVALIGN
+ /* IHTMLCommentElement */
+#define DISPID_IHTMLCOMMENTELEMENT_TEXT DISPID_COMMENTPDL+1
+#define DISPID_IHTMLCOMMENTELEMENT_ATOMIC DISPID_COMMENTPDL+2
+
+ /* IHTMLCommentElement2 */
+#define DISPID_IHTMLCOMMENTELEMENT2_DATA DISPID_COMMENTPDL+3
+#define DISPID_IHTMLCOMMENTELEMENT2_LENGTH DISPID_COMMENTPDL+4
+#define DISPID_IHTMLCOMMENTELEMENT2_SUBSTRINGDATA DISPID_COMMENTPDL+5
+#define DISPID_IHTMLCOMMENTELEMENT2_APPENDDATA DISPID_COMMENTPDL+6
+#define DISPID_IHTMLCOMMENTELEMENT2_INSERTDATA DISPID_COMMENTPDL+7
+#define DISPID_IHTMLCOMMENTELEMENT2_DELETEDATA DISPID_COMMENTPDL+8
+#define DISPID_IHTMLCOMMENTELEMENT2_REPLACEDATA DISPID_COMMENTPDL+9
+
/* IHTMLTable */
#define DISPID_IHTMLTABLE_COLS DISPID_TABLE+1
#define DISPID_IHTMLTABLE_BORDER DISPID_TABLE+2
@@ -2006,6 +2193,17 @@
/* IHTMLScriptElement2 */
#define DISPID_IHTMLSCRIPTELEMENT2_CHARSET DISPID_SCRIPT+10
+/* IHTMLFrameBase */
+#define DISPID_IHTMLFRAMEBASE_SRC DISPID_FRAMESITE+0
+#define DISPID_IHTMLFRAMEBASE_NAME STDPROPID_XOBJ_NAME
+#define DISPID_IHTMLFRAMEBASE_BORDER DISPID_FRAMESITE+2
+#define DISPID_IHTMLFRAMEBASE_FRAMEBORDER DISPID_FRAMESITE+3
+#define DISPID_IHTMLFRAMEBASE_FRAMESPACING DISPID_FRAMESITE+4
+#define DISPID_IHTMLFRAMEBASE_MARGINWIDTH DISPID_FRAMESITE+5
+#define DISPID_IHTMLFRAMEBASE_MARGINHEIGHT DISPID_FRAMESITE+6
+#define DISPID_IHTMLFRAMEBASE_NORESIZE DISPID_FRAMESITE+7
+#define DISPID_IHTMLFRAMEBASE_SCROLLING DISPID_FRAMESITE+8
+
/* IHTMLFrameBase2 */
#define DISPID_IHTMLFRAMEBASE2_CONTENTWINDOW DISPID_FRAMESITE+9
#define DISPID_IHTMLFRAMEBASE2_ONLOAD DISPID_EVPROP_ONLOAD
diff --git a/reactos/include/psdk/mshtmhst.idl b/reactos/include/psdk/mshtmhst.idl
index 5b24d63cc07..344a88f2d10 100644
--- a/reactos/include/psdk/mshtmhst.idl
+++ b/reactos/include/psdk/mshtmhst.idl
@@ -157,9 +157,9 @@ interface IDocHostUIHandler : IUnknown
} DOCHOSTUIINFO;
HRESULT ShowContextMenu(
- [in] DWORD dwID,
- [in] POINT *ppt,
- [in] IUnknown *pcmdtReserved,
+ [in] DWORD dwID,
+ [in] POINT *ppt,
+ [in] IUnknown *pcmdtReserved,
[in] IDispatch *pdispReserved);
HRESULT GetHostInfo([in, out] DOCHOSTUIINFO *pInfo);
@@ -188,7 +188,7 @@ interface IDocHostUIHandler : IUnknown
HRESULT TranslateAccelerator(
[in] LPMSG lpMsg,
- [in] const GUID *pguidCmdGroup,
+ [in] const GUID *pguidCmdGroup,
[in] DWORD nCmdID);
HRESULT GetOptionKeyPath(
@@ -196,7 +196,7 @@ interface IDocHostUIHandler : IUnknown
[in] DWORD dw);
HRESULT GetDropTarget(
- [in] IDropTarget *pDropTarget,
+ [in] IDropTarget *pDropTarget,
[out] IDropTarget **ppDropTarget);
HRESULT GetExternal([out] IDispatch **ppDispatch);
diff --git a/reactos/include/psdk/mshtml.idl b/reactos/include/psdk/mshtml.idl
index adcc3f23189..594c9964810 100644
--- a/reactos/include/psdk/mshtml.idl
+++ b/reactos/include/psdk/mshtml.idl
@@ -34,6 +34,7 @@ cpp_quote("#define SID_SElementBehaviorFactory IID_IElementBehaviorFactory")
interface IHTMLDocument2;
interface IHTMLStyleSheetsCollection;
+interface IHTMLFrameBase;
/*****************************************************************************
* IHTMLFiltersCollection interface
@@ -630,10 +631,10 @@ interface IHTMLStyle : IDispatch
* IHTMLRuleStyle interface
*/
[
- odl,
- oleautomation,
- dual,
- uuid(3050F3CF-98B5-11CF-BB82-00AA00BDCE0B)
+ odl,
+ oleautomation,
+ dual,
+ uuid(3050F3CF-98B5-11CF-BB82-00AA00BDCE0B)
]
interface IHTMLRuleStyle : IDispatch
{
@@ -1133,6 +1134,853 @@ interface IHTMLRuleStyle : IDispatch
[retval, out] VARIANT_BOOL *pfSuccess);
}
+/*****************************************************************************
+ * DispHTMLStyle dispinterface
+ */
+[
+ hidden,
+ uuid(3050f55a-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLStyle
+{
+properties:
+methods:
+ [propput, id(DISPID_IHTMLSTYLE_FONTFAMILY), displaybind, bindable]
+ void fontFamily(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_FONTFAMILY), displaybind, bindable]
+ BSTR fontFamily();
+
+ [propput, id(DISPID_IHTMLSTYLE_FONTSTYLE), displaybind, bindable]
+ void fontStyle(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_FONTSTYLE), displaybind, bindable]
+ BSTR fontStyle();
+
+ [propput, id(DISPID_IHTMLSTYLE_FONTVARIANT), displaybind, bindable]
+ void fontVariant(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_FONTVARIANT), displaybind, bindable]
+ BSTR fontVariant();
+
+ [propput, id(DISPID_IHTMLSTYLE_FONTWEIGHT), displaybind, bindable]
+ void fontWeight(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_FONTWEIGHT), displaybind, bindable]
+ BSTR fontWeight();
+
+ [propput, id(DISPID_IHTMLSTYLE_FONTSIZE), displaybind, bindable]
+ void fontSize(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_FONTSIZE), displaybind, bindable]
+ VARIANT fontSize();
+
+ [propput, id(DISPID_IHTMLSTYLE_FONT), displaybind, bindable, nonbrowsable]
+ void font(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_FONT), displaybind, bindable, nonbrowsable]
+ BSTR font();
+
+ [propput, id(DISPID_IHTMLSTYLE_COLOR), displaybind, bindable]
+ void color(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_COLOR), displaybind, bindable]
+ VARIANT color();
+
+ [propput, id(DISPID_IHTMLSTYLE_BACKGROUND), displaybind, bindable, nonbrowsable]
+ void background(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_BACKGROUND), displaybind, bindable, nonbrowsable]
+ BSTR background();
+
+ [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDCOLOR), displaybind, bindable]
+ void backgroundColor(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDCOLOR), displaybind, bindable]
+ VARIANT backgroundColor();
+
+ [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDIMAGE), displaybind, bindable]
+ void backgroundImage(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDIMAGE), displaybind, bindable]
+ BSTR backgroundImage();
+
+ [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDREPEAT), displaybind, bindable]
+ void backgroundRepeat(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDREPEAT), displaybind, bindable]
+ BSTR backgroundRepeat();
+
+ [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDATTACHMENT), displaybind, bindable]
+ void backgroundAttachment(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDATTACHMENT), displaybind, bindable]
+ BSTR backgroundAttachment();
+
+ [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITION), displaybind, bindable, nonbrowsable]
+ void backgroundPosition(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITION), displaybind, bindable, nonbrowsable]
+ BSTR backgroundPosition();
+
+ [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONX), displaybind, bindable]
+ void backgroundPositionX(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONX), displaybind, bindable]
+ VARIANT backgroundPositionX();
+
+ [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONY), displaybind, bindable]
+ void backgroundPositionY(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONY), displaybind, bindable]
+ VARIANT backgroundPositionY();
+
+ [propput, id(DISPID_IHTMLSTYLE_WORDSPACING), displaybind, bindable]
+ void wordSpacing(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_WORDSPACING), displaybind, bindable]
+ VARIANT wordSpacing();
+
+ [propput, id(DISPID_IHTMLSTYLE_LETTERSPACING), displaybind, bindable]
+ void letterSpacing(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_LETTERSPACING), displaybind, bindable]
+ VARIANT letterSpacing();
+
+ [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATION), displaybind, bindable]
+ void textDecoration(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATION), displaybind, bindable]
+ BSTR textDecoration();
+
+ [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONNONE), displaybind, bindable]
+ void textDecorationNone(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONNONE), displaybind, bindable]
+ VARIANT_BOOL textDecorationNone();
+
+ [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONUNDERLINE), displaybind, bindable]
+ void textDecorationUnderline(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONUNDERLINE), displaybind, bindable]
+ VARIANT_BOOL textDecorationUnderline();
+
+ [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONOVERLINE), displaybind, bindable]
+ void textDecorationOverline(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONOVERLINE), displaybind, bindable]
+ VARIANT_BOOL textDecorationOverline();
+
+ [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONLINETHROUGH), displaybind, bindable]
+ void textDecorationLineThrough(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONLINETHROUGH), displaybind, bindable]
+ VARIANT_BOOL textDecorationLineThrough();
+
+ [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONBLINK), displaybind, bindable]
+ void textDecorationBlink(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONBLINK), displaybind, bindable]
+ VARIANT_BOOL textDecorationBlink();
+
+ [propput, id(DISPID_IHTMLSTYLE_VERTICALALIGN), displaybind, bindable]
+ void verticalAlign(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_VERTICALALIGN), displaybind, bindable]
+ VARIANT verticalAlign();
+
+ [propput, id(DISPID_IHTMLSTYLE_TEXTTRANSFORM), displaybind, bindable]
+ void textTransform(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_TEXTTRANSFORM), displaybind, bindable]
+ BSTR textTransform();
+
+ [propput, id(DISPID_IHTMLSTYLE_TEXTALIGN), displaybind, bindable]
+ void textAlign(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_TEXTALIGN), displaybind, bindable]
+ BSTR textAlign();
+
+ [propput, id(DISPID_IHTMLSTYLE_TEXTINDENT), displaybind, bindable]
+ void textIndent(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_TEXTINDENT), displaybind, bindable]
+ VARIANT textIndent();
+
+ [propput, id(DISPID_IHTMLSTYLE_LINEHEIGHT), displaybind, bindable]
+ void lineHeight(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_LINEHEIGHT), displaybind, bindable]
+ VARIANT lineHeight();
+
+ [propput, id(DISPID_IHTMLSTYLE_MARGINTOP), displaybind, bindable]
+ void marginTop(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_MARGINTOP), displaybind, bindable]
+ VARIANT marginTop();
+
+ [propput, id(DISPID_IHTMLSTYLE_MARGINRIGHT), displaybind, bindable]
+ void marginRight(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_MARGINRIGHT), displaybind, bindable]
+ VARIANT marginRight();
+
+ [propput, id(DISPID_IHTMLSTYLE_MARGINBOTTOM), displaybind, bindable]
+ void marginBottom(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_MARGINBOTTOM), displaybind, bindable]
+ VARIANT marginBottom();
+
+ [propput, id(DISPID_IHTMLSTYLE_MARGINLEFT), displaybind, bindable]
+ void marginLeft(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_MARGINLEFT), displaybind, bindable]
+ VARIANT marginLeft();
+
+ [propput, id(DISPID_IHTMLSTYLE_MARGIN), displaybind, bindable, nonbrowsable]
+ void margin(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_MARGIN), displaybind, bindable, nonbrowsable]
+ BSTR margin();
+
+ [propput, id(DISPID_IHTMLSTYLE_PADDINGTOP), displaybind, bindable]
+ void paddingTop(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_PADDINGTOP), displaybind, bindable]
+ VARIANT paddingTop();
+
+ [propput, id(DISPID_IHTMLSTYLE_PADDINGRIGHT), displaybind, bindable]
+ void paddingRight(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_PADDINGRIGHT), displaybind, bindable]
+ VARIANT paddingRight();
+
+ [propput, id(DISPID_IHTMLSTYLE_PADDINGBOTTOM), displaybind, bindable]
+ void paddingBottom(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_PADDINGBOTTOM), displaybind, bindable]
+ VARIANT paddingBottom();
+
+ [propput, id(DISPID_IHTMLSTYLE_PADDINGLEFT), displaybind, bindable]
+ void paddingLeft(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_PADDINGLEFT), displaybind, bindable]
+ VARIANT paddingLeft();
+
+ [propput, id(DISPID_IHTMLSTYLE_PADDING), displaybind, bindable, nonbrowsable]
+ void padding(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_PADDING), displaybind, bindable, nonbrowsable]
+ BSTR padding();
+
+ [propput, id(DISPID_IHTMLSTYLE_BORDER), displaybind, bindable, nonbrowsable]
+ void border(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_BORDER), displaybind, bindable, nonbrowsable]
+ BSTR border();
+
+ [propput, id(DISPID_IHTMLSTYLE_BORDERTOP), displaybind, bindable]
+ void borderTop(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_BORDERTOP), displaybind, bindable]
+ BSTR borderTop();
+
+ [propput, id(DISPID_IHTMLSTYLE_BORDERRIGHT), displaybind, bindable]
+ void borderRight(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_BORDERRIGHT), displaybind, bindable]
+ BSTR borderRight();
+
+ [propput, id(DISPID_IHTMLSTYLE_BORDERBOTTOM), displaybind, bindable]
+ void borderBottom(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_BORDERBOTTOM), displaybind, bindable]
+ BSTR borderBottom();
+
+ [propput, id(DISPID_IHTMLSTYLE_BORDERLEFT), displaybind, bindable]
+ void borderLeft(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_BORDERLEFT), displaybind, bindable]
+ BSTR borderLeft();
+
+ [propput, id(DISPID_IHTMLSTYLE_BORDERCOLOR), displaybind, bindable]
+ void borderColor(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_BORDERCOLOR), displaybind, bindable]
+ BSTR borderColor();
+
+ [propput, id(DISPID_IHTMLSTYLE_BORDERTOPCOLOR), displaybind, bindable]
+ void borderTopColor(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_BORDERTOPCOLOR), displaybind, bindable]
+ VARIANT borderTopColor();
+
+ [propput, id(DISPID_IHTMLSTYLE_BORDERRIGHTCOLOR), displaybind, bindable]
+ void borderRightColor(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_BORDERRIGHTCOLOR), displaybind, bindable]
+ VARIANT borderRightColor();
+
+ [propput, id(DISPID_IHTMLSTYLE_BORDERBOTTOMCOLOR), displaybind, bindable]
+ void borderBottomColor(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_BORDERBOTTOMCOLOR), displaybind, bindable]
+ VARIANT borderBottomColor();
+
+ [propput, id(DISPID_IHTMLSTYLE_BORDERLEFTCOLOR), displaybind, bindable]
+ void borderLeftColor(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_BORDERLEFTCOLOR), displaybind, bindable]
+ VARIANT borderLeftColor();
+
+ [propput, id(DISPID_IHTMLSTYLE_BORDERWIDTH), displaybind, bindable]
+ void borderWidth(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_BORDERWIDTH), displaybind, bindable]
+ BSTR borderWidth();
+
+ [propput, id(DISPID_IHTMLSTYLE_BORDERTOPWIDTH), displaybind, bindable]
+ void borderTopWidth(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_BORDERTOPWIDTH), displaybind, bindable]
+ VARIANT borderTopWidth();
+
+ [propput, id(DISPID_IHTMLSTYLE_BORDERRIGHTWIDTH), displaybind, bindable]
+ void borderRightWidth(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_BORDERRIGHTWIDTH), displaybind, bindable]
+ VARIANT borderRightWidth();
+
+ [propput, id(DISPID_IHTMLSTYLE_BORDERBOTTOMWIDTH), displaybind, bindable]
+ void borderBottomWidth(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_BORDERBOTTOMWIDTH), displaybind, bindable]
+ VARIANT borderBottomWidth();
+
+ [propput, id(DISPID_IHTMLSTYLE_BORDERLEFTWIDTH), displaybind, bindable]
+ void borderLeftWidth(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_BORDERLEFTWIDTH), displaybind, bindable]
+ VARIANT borderLeftWidth();
+
+ [propput, id(DISPID_IHTMLSTYLE_BORDERSTYLE), displaybind, bindable]
+ void borderStyle(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_BORDERSTYLE), displaybind, bindable]
+ BSTR borderStyle();
+
+ [propput, id(DISPID_IHTMLSTYLE_BORDERTOPSTYLE), displaybind, bindable]
+ void borderTopStyle(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_BORDERTOPSTYLE), displaybind, bindable]
+ BSTR borderTopStyle();
+
+ [propput, id(DISPID_IHTMLSTYLE_BORDERRIGHTSTYLE), displaybind, bindable]
+ void borderRightStyle(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_BORDERRIGHTSTYLE), displaybind, bindable]
+ BSTR borderRightStyle();
+
+ [propput, id(DISPID_IHTMLSTYLE_BORDERBOTTOMSTYLE), displaybind, bindable]
+ void borderBottomStyle(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_BORDERBOTTOMSTYLE), displaybind, bindable]
+ BSTR borderBottomStyle();
+
+ [propput, id(DISPID_IHTMLSTYLE_BORDERLEFTSTYLE), displaybind, bindable]
+ void borderLeftStyle(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_BORDERLEFTSTYLE), displaybind, bindable]
+ BSTR borderLeftStyle();
+
+ [propput, id(DISPID_IHTMLSTYLE_WIDTH), displaybind, bindable]
+ void width(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_WIDTH), displaybind, bindable]
+ VARIANT width();
+
+ [propput, id(DISPID_IHTMLSTYLE_HEIGHT), displaybind, bindable]
+ void height(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_HEIGHT), displaybind, bindable]
+ VARIANT height();
+
+ [propput, id(DISPID_IHTMLSTYLE_STYLEFLOAT), displaybind, bindable]
+ void styleFloat(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_STYLEFLOAT), displaybind, bindable]
+ BSTR styleFloat();
+
+ [propput, id(DISPID_IHTMLSTYLE_CLEAR), displaybind, bindable]
+ void clear(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_CLEAR), displaybind, bindable]
+ BSTR clear();
+
+ [propput, id(DISPID_IHTMLSTYLE_DISPLAY), displaybind, bindable]
+ void display(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_DISPLAY), displaybind, bindable]
+ BSTR display();
+
+ [propput, id(DISPID_IHTMLSTYLE_VISIBILITY), displaybind, bindable]
+ void visibility(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_VISIBILITY), displaybind, bindable]
+ BSTR visibility();
+
+ [propput, id(DISPID_IHTMLSTYLE_LISTSTYLETYPE), displaybind, bindable]
+ void listStyleType(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_LISTSTYLETYPE), displaybind, bindable]
+ BSTR listStyleType();
+
+ [propput, id(DISPID_IHTMLSTYLE_LISTSTYLEPOSITION), displaybind, bindable]
+ void listStylePosition(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_LISTSTYLEPOSITION), displaybind, bindable]
+ BSTR listStylePosition();
+
+ [propput, id(DISPID_IHTMLSTYLE_LISTSTYLEIMAGE), displaybind, bindable]
+ void listStyleImage(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_LISTSTYLEIMAGE), displaybind, bindable]
+ BSTR listStyleImage();
+
+ [propput, id(DISPID_IHTMLSTYLE_LISTSTYLE), displaybind, bindable, nonbrowsable]
+ void listStyle(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_LISTSTYLE), displaybind, bindable, nonbrowsable]
+ BSTR listStyle();
+
+ [propput, id(DISPID_IHTMLSTYLE_WHITESPACE), displaybind, bindable]
+ void whiteSpace(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_WHITESPACE), displaybind, bindable]
+ BSTR whiteSpace();
+
+ [propput, id(DISPID_IHTMLSTYLE_TOP), displaybind, bindable]
+ void top(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_TOP), displaybind, bindable]
+ VARIANT top();
+
+ [propput, id(DISPID_IHTMLSTYLE_LEFT), displaybind, bindable]
+ void left(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_LEFT), displaybind, bindable]
+ VARIANT left();
+
+ [propput, id(DISPID_IHTMLSTYLE_ZINDEX), displaybind, bindable]
+ void zIndex(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE_ZINDEX), displaybind, bindable]
+ VARIANT zIndex();
+
+ [propput, id(DISPID_IHTMLSTYLE_OVERFLOW), displaybind, bindable]
+ void overflow(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_OVERFLOW), displaybind, bindable]
+ BSTR overflow();
+
+ [propput, id(DISPID_IHTMLSTYLE_PAGEBREAKBEFORE), displaybind, bindable]
+ void pageBreakBefore(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_PAGEBREAKBEFORE), displaybind, bindable]
+ BSTR pageBreakBefore();
+
+ [propput, id(DISPID_IHTMLSTYLE_PAGEBREAKAFTER), displaybind, bindable]
+ void pageBreakAfter(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_PAGEBREAKAFTER), displaybind, bindable]
+ BSTR pageBreakAfter();
+
+ [propput, id(DISPID_IHTMLSTYLE_CSSTEXT), displaybind, bindable, nonbrowsable]
+ void cssText(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_CSSTEXT), displaybind, bindable, nonbrowsable]
+ BSTR cssText();
+
+ [propput, id(DISPID_IHTMLSTYLE_PIXELTOP), displaybind, bindable, hidden]
+ void pixelTop(long v);
+
+ [propget, id(DISPID_IHTMLSTYLE_PIXELTOP), displaybind, bindable, hidden]
+ long pixelTop();
+
+ [propput, id(DISPID_IHTMLSTYLE_PIXELLEFT), displaybind, bindable, hidden]
+ void pixelLeft(long v);
+
+ [propget, id(DISPID_IHTMLSTYLE_PIXELLEFT), displaybind, bindable, hidden]
+ long pixelLeft();
+
+ [propput, id(DISPID_IHTMLSTYLE_PIXELWIDTH), displaybind, bindable, hidden]
+ void pixelWidth(long v);
+
+ [propget, id(DISPID_IHTMLSTYLE_PIXELWIDTH), displaybind, bindable, hidden]
+ long pixelWidth();
+
+ [propput, id(DISPID_IHTMLSTYLE_PIXELHEIGHT), displaybind, bindable, hidden]
+ void pixelHeight(long v);
+
+ [propget, id(DISPID_IHTMLSTYLE_PIXELHEIGHT), displaybind, bindable, hidden]
+ long pixelHeight();
+
+ [propput, id(DISPID_IHTMLSTYLE_POSTOP), displaybind, bindable]
+ void posTop(float v);
+
+ [propget, id(DISPID_IHTMLSTYLE_POSTOP), displaybind, bindable]
+ float posTop();
+
+ [propput, id(DISPID_IHTMLSTYLE_POSLEFT), displaybind, bindable]
+ void posLeft(float v);
+
+ [propget, id(DISPID_IHTMLSTYLE_POSLEFT), displaybind, bindable]
+ float posLeft();
+
+ [propput, id(DISPID_IHTMLSTYLE_POSWIDTH), displaybind, bindable]
+ void posWidth(float v);
+
+ [propget, id(DISPID_IHTMLSTYLE_POSWIDTH), displaybind, bindable]
+ float posWidth();
+
+ [propput, id(DISPID_IHTMLSTYLE_POSHEIGHT), displaybind, bindable]
+ void posHeight(float v);
+
+ [propget, id(DISPID_IHTMLSTYLE_POSHEIGHT), displaybind, bindable]
+ float posHeight();
+
+ [propput, id(DISPID_IHTMLSTYLE_CURSOR), displaybind, bindable]
+ void cursor(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_CURSOR), displaybind, bindable]
+ BSTR cursor();
+
+ [propput, id(DISPID_IHTMLSTYLE_CLIP), displaybind, bindable]
+ void clip(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_CLIP), displaybind, bindable]
+ BSTR clip();
+
+ [propput, id(DISPID_IHTMLSTYLE_FILTER), displaybind, bindable]
+ void filter(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE_FILTER), displaybind, bindable]
+ BSTR filter();
+
+ [id(DISPID_IHTMLSTYLE_SETATTRIBUTE)]
+ void setAttribute(
+ [in] BSTR strAttributeName,
+ [in] VARIANT AttributeValue,
+ [in, defaultvalue(1)] LONG lFlags);
+
+ [id(DISPID_IHTMLSTYLE_GETATTRIBUTE)]
+ VARIANT getAttribute(
+ [in] BSTR strAttributeName,
+ [in, defaultvalue(0)] LONG lFlags);
+
+ [id(DISPID_IHTMLSTYLE_REMOVEATTRIBUTE)]
+ VARIANT_BOOL removeAttribute(
+ [in] BSTR strAttributeName,
+ [in, defaultvalue(1)] LONG lFlags);
+
+ [id(DISPID_IHTMLSTYLE_TOSTRING)]
+ BSTR toString();
+
+ [propput, id(DISPID_IHTMLSTYLE2_TABLELAYOUT), displaybind, bindable]
+ void tableLayout(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_TABLELAYOUT), displaybind, bindable]
+ BSTR tableLayout();
+
+ [propput, id(DISPID_IHTMLSTYLE2_BORDERCOLLAPSE), displaybind, bindable]
+ void borderCollapse(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_BORDERCOLLAPSE), displaybind, bindable]
+ BSTR borderCollapse();
+
+ [propput, id(DISPID_IHTMLSTYLE2_DIRECTION), displaybind, bindable]
+ void direction(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_DIRECTION), displaybind, bindable]
+ BSTR direction();
+
+ [propput, id(DISPID_IHTMLSTYLE2_BEHAVIOR), displaybind, bindable]
+ void behavior(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_BEHAVIOR), displaybind, bindable]
+ BSTR behavior();
+
+ [id(DISPID_IHTMLSTYLE2_SETEXPRESSION)]
+ void setExpression(
+ [in] BSTR propname,
+ [in] BSTR expression,
+ [in, defaultvalue("")] BSTR language);
+
+ [id(DISPID_IHTMLSTYLE2_GETEXPRESSION)]
+ VARIANT getExpression([in] BSTR propname);
+
+ [id(DISPID_IHTMLSTYLE2_REMOVEEXPRESSION)]
+ VARIANT_BOOL removeExpression([in] BSTR propname);
+
+ [propput, id(DISPID_IHTMLSTYLE2_POSITION), displaybind, bindable]
+ void position(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_POSITION), displaybind, bindable]
+ BSTR position();
+
+ [propput, id(DISPID_IHTMLSTYLE2_UNICODEBIDI), displaybind, bindable]
+ void unicodeBidi(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_UNICODEBIDI), displaybind, bindable]
+ BSTR unicodeBidi();
+
+ [propput, id(DISPID_IHTMLSTYLE2_BOTTOM), displaybind, bindable]
+ void bottom(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_BOTTOM), displaybind, bindable]
+ VARIANT bottom();
+
+ [propput, id(DISPID_IHTMLSTYLE2_RIGHT), displaybind, bindable]
+ void right(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_RIGHT), displaybind, bindable]
+ VARIANT right();
+
+ [propput, id(DISPID_IHTMLSTYLE2_PIXELBOTTOM), displaybind, bindable, hidden]
+ void pixelBottom(long v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_PIXELBOTTOM), displaybind, bindable, hidden]
+ long pixelBottom();
+
+ [propput, id(DISPID_IHTMLSTYLE2_PIXELRIGHT), displaybind, bindable, hidden]
+ void pixelRight(long v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_PIXELRIGHT), displaybind, bindable, hidden]
+ long pixelRight();
+
+ [propput, id(DISPID_IHTMLSTYLE2_POSBOTTOM), displaybind, bindable]
+ void posBottom(float v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_POSBOTTOM), displaybind, bindable]
+ float posBottom();
+
+ [propput, id(DISPID_IHTMLSTYLE2_POSRIGHT), displaybind, bindable]
+ void posRight(float v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_POSRIGHT), displaybind, bindable]
+ float posRight();
+
+ [propput, id(DISPID_IHTMLSTYLE2_IMEMODE), displaybind, bindable]
+ void imeMode(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_IMEMODE), displaybind, bindable]
+ BSTR imeMode();
+
+ [propput, id(DISPID_IHTMLSTYLE2_RUBYALIGN), displaybind, bindable]
+ void rubyAlign(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_RUBYALIGN), displaybind, bindable]
+ BSTR rubyAlign();
+
+ [propput, id(DISPID_IHTMLSTYLE2_RUBYPOSITION), displaybind, bindable]
+ void rubyPosition(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_RUBYPOSITION), displaybind, bindable]
+ BSTR rubyPosition();
+
+ [propput, id(DISPID_IHTMLSTYLE2_RUBYOVERHANG), displaybind, bindable]
+ void rubyOverhang(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_RUBYOVERHANG), displaybind, bindable]
+ BSTR rubyOverhang();
+
+ [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDCHAR), displaybind, bindable]
+ void layoutGridChar(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDCHAR), displaybind, bindable]
+ VARIANT layoutGridChar();
+
+ [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDLINE), displaybind, bindable]
+ void layoutGridLine(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDLINE), displaybind, bindable]
+ VARIANT layoutGridLine();
+
+ [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDMODE), displaybind, bindable]
+ void layoutGridMode(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDMODE), displaybind, bindable]
+ BSTR layoutGridMode();
+
+ [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDTYPE), displaybind, bindable]
+ void layoutGridType(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDTYPE), displaybind, bindable]
+ BSTR layoutGridType();
+
+ [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRID), displaybind, bindable, nonbrowsable]
+ void layoutGrid(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRID), displaybind, bindable, nonbrowsable]
+ BSTR layoutGrid();
+
+ [propput, id(DISPID_IHTMLSTYLE2_WORDBREAK), displaybind, bindable]
+ void wordBreak(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_WORDBREAK), displaybind, bindable]
+ BSTR wordBreak();
+
+ [propput, id(DISPID_IHTMLSTYLE2_LINEBREAK), displaybind, bindable]
+ void lineBreak(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_LINEBREAK), displaybind, bindable]
+ BSTR lineBreak();
+
+ [propput, id(DISPID_IHTMLSTYLE2_TEXTJUSTIFY), displaybind, bindable]
+ void textJustify(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_TEXTJUSTIFY), displaybind, bindable]
+ BSTR textJustify();
+
+ [propput, id(DISPID_IHTMLSTYLE2_TEXTJUSTIFYTRIM), displaybind, bindable]
+ void textJustifyTrim(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_TEXTJUSTIFYTRIM), displaybind, bindable]
+ BSTR textJustifyTrim();
+
+ [propput, id(DISPID_IHTMLSTYLE2_TEXTKASHIDA), displaybind, bindable]
+ void textKashida(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_TEXTKASHIDA), displaybind, bindable]
+ VARIANT textKashida();
+
+ [propput, id(DISPID_IHTMLSTYLE2_TEXTAUTOSPACE), displaybind, bindable]
+ void textAutospace(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_TEXTAUTOSPACE), displaybind, bindable]
+ BSTR textAutospace();
+
+ [propput, id(DISPID_IHTMLSTYLE2_OVERFLOWX), displaybind, bindable]
+ void overflowX(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_OVERFLOWX), displaybind, bindable]
+ BSTR overflowX();
+
+ [propput, id(DISPID_IHTMLSTYLE2_OVERFLOWY), displaybind, bindable]
+ void overflowY(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_OVERFLOWY), displaybind, bindable]
+ BSTR overflowY();
+
+ [propput, id(DISPID_IHTMLSTYLE2_ACCELERATOR), displaybind, bindable]
+ void accelerator(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE2_ACCELERATOR), displaybind, bindable]
+ BSTR accelerator();
+
+ [propput, id(DISPID_IHTMLSTYLE3_LAYOUTFLOW), displaybind, bindable]
+ void layoutFlow(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE3_LAYOUTFLOW), displaybind, bindable]
+ BSTR layoutFlow();
+
+ [propput, id(DISPID_IHTMLSTYLE3_ZOOM), displaybind, bindable]
+ void zoom(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE3_ZOOM), displaybind, bindable]
+ VARIANT zoom();
+
+ [propput, id(DISPID_IHTMLSTYLE3_WORDWRAP), displaybind, bindable]
+ void wordWrap(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE3_WORDWRAP), displaybind, bindable]
+ BSTR wordWrap();
+
+ [propput, id(DISPID_IHTMLSTYLE3_TEXTUNDERLINEPOSITION), displaybind, bindable]
+ void textUnderlinePosition(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE3_TEXTUNDERLINEPOSITION), displaybind, bindable]
+ BSTR textUnderlinePosition();
+
+ [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARBASECOLOR), displaybind, bindable]
+ void scrollbarBaseColor(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARBASECOLOR), displaybind, bindable]
+ VARIANT scrollbarBaseColor();
+
+ [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARFACECOLOR), displaybind, bindable]
+ void scrollbarFaceColor(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARFACECOLOR), displaybind, bindable]
+ VARIANT scrollbarFaceColor();
+
+ [propput, id(DISPID_IHTMLSTYLE3_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable]
+ void scrollbar3dLightColor(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE3_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable]
+ VARIANT scrollbar3dLightColor();
+
+ [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARSHADOWCOLOR), displaybind, bindable]
+ void scrollbarShadowColor(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARSHADOWCOLOR), displaybind, bindable]
+ VARIANT scrollbarShadowColor();
+
+ [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable]
+ void scrollbarHighlightColor(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable]
+ VARIANT scrollbarHighlightColor();
+
+ [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable]
+ void scrollbarDarkShadowColor(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable]
+ VARIANT scrollbarDarkShadowColor();
+
+ [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARARROWCOLOR), displaybind, bindable]
+ void scrollbarArrowColor(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARARROWCOLOR), displaybind, bindable]
+ VARIANT scrollbarArrowColor();
+
+ [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARTRACKCOLOR), displaybind, bindable]
+ void scrollbarTrackColor(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARTRACKCOLOR), displaybind, bindable]
+ VARIANT scrollbarTrackColor();
+
+ [propput, id(DISPID_IHTMLSTYLE3_WRITINGMODE), displaybind, bindable]
+ void writingMode(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE3_WRITINGMODE), displaybind, bindable]
+ BSTR writingMode();
+
+ [propput, id(DISPID_IHTMLSTYLE3_TEXTALIGNLAST), displaybind, bindable]
+ void textAlignLast(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE3_TEXTALIGNLAST), displaybind, bindable]
+ BSTR textAlignLast();
+
+ [propput, id(DISPID_IHTMLSTYLE3_TEXTKASHIDASPACE), displaybind, bindable]
+ void textKashidaSpace(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE3_TEXTKASHIDASPACE), displaybind, bindable]
+ VARIANT textKashidaSpace();
+
+ [propput, id(DISPID_IHTMLSTYLE4_TEXTOVERFLOW), displaybind, bindable]
+ void textOverflow(BSTR v);
+
+ [propget, id(DISPID_IHTMLSTYLE4_TEXTOVERFLOW), displaybind, bindable]
+ BSTR textOverflow();
+
+ [propput, id(DISPID_IHTMLSTYLE4_MINHEIGHT), displaybind, bindable]
+ void minHeight(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSTYLE4_MINHEIGHT), displaybind, bindable]
+ VARIANT minHeight();
+}
+
/*****************************************************************************
* IHTMLRenderStyle interface
*/
@@ -1675,6 +2523,35 @@ interface IHTMLDOMAttribute : IDispatch
HRESULT specified([retval, out] VARIANT_BOOL *p);
}
+/*****************************************************************************
+ * IHTMLDOMTextNode interface
+ */
+[
+ odl,
+ oleautomation,
+ dual,
+ uuid(3050f4b1-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLDOMTextNode : IDispatch
+{
+ [propput, id(DISPID_IHTMLDOMTEXTNODE_DATA)]
+ HRESULT data([in] BSTR v);
+
+ [propget, id(DISPID_IHTMLDOMTEXTNODE_DATA)]
+ HRESULT data([out, retval] BSTR *p);
+
+ [id(DISPID_IHTMLDOMTEXTNODE_TOSTRING)]
+ HRESULT toString([out, retval] BSTR *String);
+
+ [propget, id(DISPID_IHTMLDOMTEXTNODE_LENGTH)]
+ HRESULT length([out, retval] long *p);
+
+ [id(DISPID_IHTMLDOMTEXTNODE_SPLITTEXT)]
+ HRESULT splitText(
+ [in] long offset,
+ [out, retval] IHTMLDOMNode **pRetNode);
+}
+
/*****************************************************************************
* IHTMLDOMImplementation interface
*/
@@ -1693,6 +2570,168 @@ interface IHTMLDOMImplementation : IDispatch
[retval, out] VARIANT_BOOL *pfHasFeature);
}
+/*****************************************************************************
+ * DispHTMLDOMTextNode dispinterface
+ */
+[
+ hidden,
+ uuid(3050f565-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLDOMTextNode
+{
+properties:
+methods:
+ [propput, id(DISPID_IHTMLDOMTEXTNODE_DATA)]
+ void data(BSTR v);
+
+ [propget, id(DISPID_IHTMLDOMTEXTNODE_DATA)]
+ BSTR data();
+
+ [id(DISPID_IHTMLDOMTEXTNODE_TOSTRING)]
+ BSTR toString();
+
+ [propget, id(DISPID_IHTMLDOMTEXTNODE_LENGTH)]
+ long length();
+
+ [id(DISPID_IHTMLDOMTEXTNODE_SPLITTEXT)]
+ IHTMLDOMNode *splitText([in] long offset);
+
+ [id(DISPID_IHTMLDOMTEXTNODE2_SUBSTRINGDATA)]
+ BSTR substringData(
+ [in] long offset,
+ [in] long Count);
+
+ [id(DISPID_IHTMLDOMTEXTNODE2_APPENDDATA)]
+ void appendData([in] BSTR bstrstring);
+
+ [id(DISPID_IHTMLDOMTEXTNODE2_INSERTDATA)]
+ void insertData(
+ [in] long offset,
+ [in] BSTR bstrstring);
+
+ [id(DISPID_IHTMLDOMTEXTNODE2_DELETEDATA)]
+ void deleteData(
+ [in] long offset,
+ [in] long Count);
+
+ [id(DISPID_IHTMLDOMTEXTNODE2_REPLACEDATA)]
+ void replaceData(
+ [in] long offset,
+ [in] long Count,
+ [in] BSTR bstrstring);
+
+ [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
+ long nodeType();
+
+ [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
+ IHTMLDOMNode *parentNode();
+
+ [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
+ VARIANT_BOOL hasChildNodes();
+
+ [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
+ IDispatch *childNodes();
+
+ [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
+ IDispatch *attributes();
+
+ [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
+ IHTMLDOMNode *insertBefore(
+ [in] IHTMLDOMNode *newChild,
+ [in, optional] VARIANT refChild);
+
+ [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
+ IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
+
+ [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
+ IHTMLDOMNode *replaceChild(
+ [in] IHTMLDOMNode *newChild,
+ [in] IHTMLDOMNode *oldChild);
+
+ [id(DISPID_IHTMLDOMNODE_CLONENODE)]
+ IHTMLDOMNode* cloneNode([in] VARIANT_BOOL fDeep);
+
+ [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
+ IHTMLDOMNode *removeNode([in, defaultvalue(0)] VARIANT_BOOL fDeep);
+
+ [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
+ IHTMLDOMNode *swapNode([in] IHTMLDOMNode *otherNode);
+
+ [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
+ IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
+
+ [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
+ IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+
+ [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
+ BSTR nodeName();
+
+ [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+ void nodeValue(VARIANT v);
+
+ [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+ VARIANT nodeValue();
+
+ [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
+ IHTMLDOMNode *firstChild();
+
+ [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
+ IHTMLDOMNode *lastChild();
+
+ [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
+ IHTMLDOMNode *previousSibling();
+
+ [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
+ IHTMLDOMNode* nextSibling();
+
+ [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
+ IDispatch *ownerDocument();
+}
+
+/*****************************************************************************
+ * IHTMLDOMChildrenCollection interface
+ */
+[
+ odl,
+ oleautomation,
+ dual,
+ uuid(3050f5ab-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLDOMChildrenCollection : IDispatch
+{
+ [propget, id(DISPID_IHTMLDOMCHILDRENCOLLECTION_LENGTH)]
+ HRESULT length([out, retval] long *p);
+
+ [propget, id(DISPID_IHTMLDOMCHILDRENCOLLECTION__NEWENUM), hidden, restricted]
+ HRESULT _newEnum([out, retval] IUnknown **p);
+
+ [id(DISPID_IHTMLDOMCHILDRENCOLLECTION_ITEM)]
+ HRESULT item(
+ [in] long index,
+ [out, retval] IDispatch **ppItem);
+}
+
+/*****************************************************************************
+ * DispDOMChildrenCollection dispinterface
+ */
+[
+ hidden,
+ uuid(3050f577-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispDOMChildrenCollection
+{
+properties:
+methods:
+ [propget, id(DISPID_IHTMLDOMCHILDRENCOLLECTION_LENGTH)]
+ long length();
+
+ [propget, id(DISPID_IHTMLDOMCHILDRENCOLLECTION__NEWENUM), hidden, restricted]
+ IUnknown *_newEnum();
+
+ [id(DISPID_IHTMLDOMCHILDRENCOLLECTION_ITEM)]
+ IDispatch *item([in] long index);
+}
+
interface IHTMLElementCollection;
/*****************************************************************************
@@ -2318,6 +3357,869 @@ interface IHTMLElement2 : IDispatch
[retval, out] IHTMLElementCollection **pelColl);
}
+/*****************************************************************************
+ * IHTMLGenericElement interface
+ */
+[
+ odl,
+ oleautomation,
+ dual,
+ uuid(3050f4b7-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLGenericElement : IDispatch
+{
+ [propget, id(DISPID_IHTMLGENERICELEMENT_RECORDSET), hidden]
+ HRESULT recordset([out, retval] IDispatch **p);
+
+ [id(DISPID_IHTMLGENERICELEMENT_NAMEDRECORDSET)]
+ HRESULT namedRecordset(
+ [in] BSTR dataMember,
+ [in, optional] VARIANT *hierarchy,
+ [out, retval] IDispatch **ppRecordset);
+}
+
+/*****************************************************************************
+ * DispHTMLGenericElement dispinterface
+ */
+[
+ hidden,
+ uuid(3050f563-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLGenericElement
+{
+properties:
+methods:
+ [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
+ void setAttribute(
+ [in] BSTR strAttributeName,
+ [in] VARIANT AttributeValue,
+ [in, defaultvalue(1)] LONG lFlags);
+
+ [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
+ VARIANT getAttribute(
+ [in] BSTR strAttributeName,
+ [in, defaultvalue(0)] LONG lFlags);
+
+ [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
+ VARIANT_BOOL removeAttribute(
+ [in] BSTR strAttributeName,
+ [in, defaultvalue(1)] LONG lFlags);
+
+ [propput, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+ void className(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+ BSTR className();
+
+ [propput, id(DISPID_IHTMLELEMENT_ID), bindable]
+ void id(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ID), bindable]
+ BSTR id();
+
+ [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
+ BSTR tagName();
+
+ [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
+ IHTMLElement *parentElement();
+
+ [propget, id(DISPID_IHTMLELEMENT_STYLE), nonbrowsable]
+ IHTMLStyle *style();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+ void onhelp(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+ VARIANT onhelp();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+ void onclick(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+ VARIANT onclick();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+ void ondblclick(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+ VARIANT ondblclick();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+ void onkeydown(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+ VARIANT onkeydown();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+ void onkeyup(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+ VARIANT onkeyup();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+ void onkeypress(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+ VARIANT onkeypress();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+ void onmouseout(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+ VARIANT onmouseout();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+ void onmouseover(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+ VARIANT onmouseover();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+ void onmousemove(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+ VARIANT onmousemove();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+ void onmousedown(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+ VARIANT onmousedown();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+ void onmouseup(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+ VARIANT onmouseup();
+
+ [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
+ IDispatch *document();
+
+ [propput, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+ void title(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+ BSTR title();
+
+ [propput, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+ void language(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+ BSTR language();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+ void onselectstart(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+ VARIANT onselectstart();
+
+ [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
+ void scrollIntoView([in, optional] VARIANT varargStart);
+
+ [id(DISPID_IHTMLELEMENT_CONTAINS)]
+ VARIANT_BOOL contains([in] IHTMLElement *pChild);
+
+ [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX), bindable]
+ long sourceIndex();
+
+ [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
+ VARIANT recordNumber();
+
+ [propput, id(DISPID_IHTMLELEMENT_LANG)]
+ void lang(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_LANG)]
+ BSTR lang();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
+ long offsetLeft();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
+ long offsetTop();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
+ long offsetWidth();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
+ long offsetHeight();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
+ IHTMLElement *offsetParent();
+
+ [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
+ void innerHTML(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
+ BSTR innerHTML();
+
+ [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+ void innerText(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+ BSTR innerText();
+
+ [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+ void outerHTML(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+ BSTR outerHTML();
+
+ [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+ void outerText(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+ BSTR outerText();
+
+ [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
+ void insertAdjacentHTML(
+ [in] BSTR where,
+ [in] BSTR html);
+
+ [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
+ void insertAdjacentText(
+ [in] BSTR where,
+ [in] BSTR text);
+
+ [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
+ IHTMLElement *parentTextEdit();
+
+ [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
+ VARIANT_BOOL isTextEdit();
+
+ [id(DISPID_IHTMLELEMENT_CLICK)]
+ void click();
+
+ [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
+ IHTMLFiltersCollection *filters();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+ void ondragstart(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+ VARIANT ondragstart();
+
+ [id(DISPID_IHTMLELEMENT_TOSTRING)]
+ BSTR toString();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+ void onbeforeupdate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+ VARIANT onbeforeupdate();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+ void onafterupdate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+ VARIANT onafterupdate();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+ void onerrorupdate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+ VARIANT onerrorupdate();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+ void onrowexit(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+ VARIANT onrowexit();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+ void onrowenter(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+ VARIANT onrowenter();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+ void ondatasetchanged(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+ VARIANT ondatasetchanged();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+ void ondataavailable(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+ VARIANT ondataavailable();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+ void ondatasetcomplete(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+ VARIANT ondatasetcomplete();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+ void onfilterchange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+ VARIANT onfilterchange();
+
+ [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
+ IDispatch *children();
+
+ [propget, id(DISPID_IHTMLELEMENT_ALL)]
+ IDispatch *all();
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
+ BSTR scopeName();
+
+ [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
+ void setCapture([in, defaultvalue(-1)] VARIANT_BOOL containerCapture);
+
+ [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
+ void releaseCapture();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+ void onlosecapture(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+ VARIANT onlosecapture();
+
+ [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
+ BSTR componentFromPoint(
+ [in] long x,
+ [in] long y);
+
+ [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
+ void doScroll([in, optional] VARIANT component);
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+ void onscroll(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+ VARIANT onscroll();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+ void ondrag(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+ VARIANT ondrag();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+ void ondragend(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+ VARIANT ondragend();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+ void ondragenter(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+ VARIANT ondragenter();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+ void ondragover(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+ VARIANT ondragover();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+ void ondragleave(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+ VARIANT ondragleave();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+ void ondrop(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+ VARIANT ondrop();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+ void onbeforecut(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+ VARIANT onbeforecut();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+ void oncut(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+ VARIANT oncut();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+ void onbeforecopy(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+ VARIANT onbeforecopy();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+ void oncopy(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+ VARIANT oncopy();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+ void onbeforepaste(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+ VARIANT onbeforepaste();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+ void onpaste(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+ VARIANT onpaste();
+
+ [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
+ IHTMLCurrentStyle *currentStyle();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+ void onpropertychange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+ VARIANT onpropertychange();
+
+ [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
+ IHTMLRectCollection *getClientRects();
+
+ [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
+ IHTMLRect *getBoundingClientRect();
+
+ [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
+ void setExpression(
+ [in] BSTR propname,
+ [in] BSTR expression,
+ [in, defaultvalue("")] BSTR language);
+
+ [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
+ VARIANT getExpression([in] BSTR propname);
+
+ [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
+ VARIANT_BOOL removeExpression([in] BSTR propname);
+
+ [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+ void tabIndex(short v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+ short tabIndex();
+
+ [id(DISPID_IHTMLELEMENT2_FOCUS)]
+ void focus();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+ void accessKey(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+ BSTR accessKey();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+ void onblur(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+ VARIANT onblur();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+ void onfocus(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+ VARIANT onfocus();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+ void onresize(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+ VARIANT onresize();
+
+ [id(DISPID_IHTMLELEMENT2_BLUR)]
+ void blur();
+
+ [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
+ void addFilter([in] IUnknown *pUnk);
+
+ [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
+ void removeFilter([in] IUnknown *pUnk);
+
+ [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
+ long clientHeight();
+
+ [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
+ long clientWidth();
+
+ [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
+ long clientTop();
+
+ [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
+ long clientLeft();
+
+ [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
+ VARIANT_BOOL attachEvent(
+ [in] BSTR event,
+ [in] IDispatch *pDisp);
+
+ [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
+ void detachEvent(
+ [in] BSTR event,
+ [in] IDispatch *pDisp);
+
+ [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
+ VARIANT readyState();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+ void onreadystatechange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+ VARIANT onreadystatechange();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+ void onrowsdelete(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+ VARIANT onrowsdelete();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+ void onrowsinserted(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+ VARIANT onrowsinserted();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+ void oncellchange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+ VARIANT oncellchange();
+
+ [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+ void dir(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+ BSTR dir();
+
+ [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
+ IDispatch *createControlRange();
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
+ long scrollHeight();
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
+ long scrollWidth();
+
+ [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+ void scrollTop(long v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+ long scrollTop();
+
+ [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+ void scrollLeft(long v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+ long scrollLeft();
+
+ [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
+ void clearAttributes();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+ void oncontextmenu(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+ VARIANT oncontextmenu();
+
+ [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
+ IHTMLElement *insertAdjacentElement(
+ [in] BSTR where,
+ [in] IHTMLElement *insertedElement);
+
+ [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
+ IHTMLElement *applyElement(
+ [in] IHTMLElement *apply,
+ [in] BSTR where);
+
+ [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
+ BSTR getAdjacentText([in] BSTR where);
+
+ [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
+ BSTR replaceAdjacentText(
+ [in] BSTR where,
+ [in] BSTR newText);
+
+ [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
+ VARIANT_BOOL canHaveChildren();
+
+ [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
+ long addBehavior(
+ [in] BSTR bstrUrl,
+ [in, optional] VARIANT *pvarFactory);
+
+ [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
+ VARIANT_BOOL removeBehavior([in] long cookie);
+
+ [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
+ IHTMLStyle *runtimeStyle();
+
+ [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
+ IDispatch *behaviorUrns();
+
+ [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
+ void tagUrn(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
+ BSTR tagUrn();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+ void onbeforeeditfocus(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+ VARIANT onbeforeeditfocus();
+
+ [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
+ long readyStateValue();
+
+ [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
+ IHTMLElementCollection *getElementsByTagName([in] BSTR v);
+
+ [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)]
+ void mergeAttributes(
+ [in] IHTMLElement *mergeThis,
+ [in, optional] VARIANT *pvarFlags);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
+ VARIANT_BOOL isMultiLine();
+
+ [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
+ VARIANT_BOOL canHaveHTML();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+ void onlayoutcomplete(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+ VARIANT onlayoutcomplete();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+ void onpage(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+ VARIANT onpage();
+
+ [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+ void inflateBlock(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+ VARIANT_BOOL inflateBlock();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+ void onbeforedeactivate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+ VARIANT onbeforedeactivate();
+
+ [id(DISPID_IHTMLELEMENT3_SETACTIVE)]
+ void setActive();
+
+ [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+ void contentEditable(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+ BSTR contentEditable();
+
+ [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
+ VARIANT_BOOL isContentEditable();
+
+ [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+ void hideFocus(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+ VARIANT_BOOL hideFocus();
+
+ [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+ void disabled(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+ VARIANT_BOOL disabled();
+
+ [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
+ VARIANT_BOOL isDisabled();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+ void onmove(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+ VARIANT onmove();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+ void oncontrolselect(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+ VARIANT oncontrolselect();
+
+ [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
+ VARIANT_BOOL fireEvent(
+ [in] BSTR bstrEventName,
+ [in, optional] VARIANT *pvarEventObject);
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+ void onresizestart(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+ VARIANT onresizestart();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+ void onresizeend(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+ VARIANT onresizeend();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+ void onmovestart(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+ VARIANT onmovestart();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+ void onmoveend(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+ VARIANT onmoveend();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+ void onmouseenter(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+ VARIANT onmouseenter();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+ void onmouseleave(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+ VARIANT onmouseleave();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+ void onactivate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+ VARIANT onactivate();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+ void ondeactivate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+ VARIANT ondeactivate();
+
+ [id(DISPID_IHTMLELEMENT3_DRAGDROP)]
+ VARIANT_BOOL dragDrop();
+
+ [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
+ LONG glyphMode();
+
+ [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+ void onmousewheel(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+ VARIANT onmousewheel();
+
+ [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
+ void normalize();
+
+ [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
+ IHTMLDOMAttribute *getAttributeNode([in] BSTR bstrname);
+
+ [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
+ IHTMLDOMAttribute *setAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+ [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
+ IHTMLDOMAttribute *removeAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+ [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+ void onbeforeactivate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+ VARIANT onbeforeactivate();
+
+ [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+ void onfocusin(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+ VARIANT onfocusin();
+
+ [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+ void onfocusout(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+ VARIANT onfocusout();
+
+ [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
+ long uniqueNumber();
+
+ [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
+ BSTR uniqueID();
+
+ [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
+ long nodeType();
+
+ [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
+ IHTMLDOMNode *parentNode();
+
+ [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
+ VARIANT_BOOL hasChildNodes();
+
+ [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
+ IDispatch *childNodes();
+
+ [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
+ IDispatch *attributes();
+
+ [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
+ IHTMLDOMNode *insertBefore(
+ [in] IHTMLDOMNode *newChild,
+ [in, optional] VARIANT refChild);
+
+ [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
+ IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
+
+ [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
+ IHTMLDOMNode *replaceChild(
+ [in] IHTMLDOMNode *newChild,
+ [in] IHTMLDOMNode *oldChild);
+
+ [id(DISPID_IHTMLDOMNODE_CLONENODE)]
+ IHTMLDOMNode *cloneNode([in] VARIANT_BOOL fDeep);
+
+ [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
+ IHTMLDOMNode *removeNode([in, defaultvalue(0)] VARIANT_BOOL fDeep);
+
+ [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
+ IHTMLDOMNode *swapNode([in] IHTMLDOMNode *otherNode);
+
+ [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
+ IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
+
+ [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
+ IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+
+ [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
+ BSTR nodeName();
+
+ [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+ void nodeValue(VARIANT v);
+
+ [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+ VARIANT nodeValue();
+
+ [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
+ IHTMLDOMNode *firstChild();
+
+ [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
+ IHTMLDOMNode *lastChild();
+
+ [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
+ IHTMLDOMNode *previousSibling();
+
+ [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
+ IHTMLDOMNode *nextSibling();
+
+ [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
+ IDispatch *ownerDocument();
+
+ [propget, id(DISPID_IHTMLGENERICELEMENT_RECORDSET), hidden]
+ IDispatch *recordset();
+
+ [id(DISPID_IHTMLGENERICELEMENT_NAMEDRECORDSET)]
+ IDispatch *namedRecordset(
+ [in] BSTR dataMember,
+ [in, optional] VARIANT *hierarchy);
+}
+
/*****************************************************************************
* IHTMLStyleSheetRule interface
*/
@@ -2917,6 +4819,1005 @@ interface IHTMLImageElementFactory : IDispatch
[retval, out] IHTMLImgElement **elem);
}
+/*****************************************************************************
+ * DispHTMLImg interface
+ */
+[
+ hidden,
+ uuid(3050f51c-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLImg
+{
+properties:
+methods:
+ [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
+ void setAttribute(
+ [in] BSTR strAttributeName,
+ [in] VARIANT AttributeValue,
+ [in, defaultvalue(1)] LONG lFlags);
+
+ [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
+ VARIANT getAttribute(
+ [in] BSTR strAttributeName,
+ [in, defaultvalue(0)] LONG lFlags);
+
+ [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
+ VARIANT_BOOL removeAttribute(
+ [in] BSTR strAttributeName,
+ [in, defaultvalue(1)] LONG lFlags);
+
+ [propput, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+ void className(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+ BSTR className();
+
+ [propput, id(DISPID_IHTMLELEMENT_ID), bindable]
+ void id(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ID), bindable]
+ BSTR id();
+
+ [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
+ BSTR tagName();
+
+ [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
+ IHTMLElement *parentElement();
+
+ [propget, id(DISPID_IHTMLELEMENT_STYLE), nonbrowsable]
+ IHTMLStyle *style();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+ void onhelp(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+ VARIANT onhelp();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+ void onclick(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+ VARIANT onclick();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+ void ondblclick(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+ VARIANT ondblclick();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+ void onkeydown(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+ VARIANT onkeydown();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+ void onkeyup(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+ VARIANT onkeyup();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+ void onkeypress(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+ VARIANT onkeypress();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+ void onmouseout(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+ VARIANT onmouseout();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+ void onmouseover(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+ VARIANT onmouseover();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+ void onmousemove(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+ VARIANT onmousemove();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+ void onmousedown(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+ VARIANT onmousedown();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+ void onmouseup(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+ VARIANT onmouseup();
+
+ [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
+ IDispatch *document();
+
+ [propput, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+ void title(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+ BSTR title();
+
+ [propput, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+ void language(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+ BSTR language();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+ void onselectstart(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+ VARIANT onselectstart();
+
+ [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
+ void scrollIntoView([in, optional] VARIANT varargStart);
+
+ [id(DISPID_IHTMLELEMENT_CONTAINS)]
+ VARIANT_BOOL contains([in] IHTMLElement *pChild);
+
+ [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX), bindable]
+ long sourceIndex();
+
+ [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
+ VARIANT recordNumber();
+
+ [propput, id(DISPID_IHTMLELEMENT_LANG)]
+ void lang(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_LANG)]
+ BSTR lang();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
+ long offsetLeft();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
+ long offsetTop();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
+ long offsetWidth();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
+ long offsetHeight();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
+ IHTMLElement *offsetParent();
+
+ [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
+ void innerHTML(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
+ BSTR innerHTML();
+
+ [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+ void innerText(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+ BSTR innerText();
+
+ [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+ void outerHTML(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+ BSTR outerHTML();
+
+ [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+ void outerText(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+ BSTR outerText();
+
+ [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
+ void insertAdjacentHTML(
+ [in] BSTR where,
+ [in] BSTR html);
+
+ [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
+ void insertAdjacentText(
+ [in] BSTR where,
+ [in] BSTR text);
+
+ [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
+ IHTMLElement *parentTextEdit();
+
+ [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
+ VARIANT_BOOL isTextEdit();
+
+ [id(DISPID_IHTMLELEMENT_CLICK)]
+ void click();
+
+ [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
+ IHTMLFiltersCollection *filters();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+ void ondragstart(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+ VARIANT ondragstart();
+
+ [id(DISPID_IHTMLELEMENT_TOSTRING)]
+ BSTR toString();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+ void onbeforeupdate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+ VARIANT onbeforeupdate();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+ void onafterupdate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+ VARIANT onafterupdate();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+ void onerrorupdate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+ VARIANT onerrorupdate();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+ void onrowexit(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+ VARIANT onrowexit();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+ void onrowenter(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+ VARIANT onrowenter();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+ void ondatasetchanged(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+ VARIANT ondatasetchanged();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+ void ondataavailable(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+ VARIANT ondataavailable();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+ void ondatasetcomplete(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+ VARIANT ondatasetcomplete();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+ void onfilterchange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+ VARIANT onfilterchange();
+
+ [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
+ IDispatch *children();
+
+ [propget, id(DISPID_IHTMLELEMENT_ALL)]
+ IDispatch *all();
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
+ BSTR scopeName();
+
+ [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
+ void setCapture([in, defaultvalue(-1)] VARIANT_BOOL containerCapture);
+
+ [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
+ void releaseCapture();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+ void onlosecapture(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+ VARIANT onlosecapture();
+
+ [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
+ BSTR componentFromPoint(
+ [in] long x,
+ [in] long y);
+
+ [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
+ void doScroll([in, optional] VARIANT component);
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+ void onscroll(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+ VARIANT onscroll();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+ void ondrag(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+ VARIANT ondrag();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+ void ondragend(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+ VARIANT ondragend();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+ void ondragenter(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+ VARIANT ondragenter();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+ void ondragover(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+ VARIANT ondragover();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+ void ondragleave(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+ VARIANT ondragleave();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+ void ondrop(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+ VARIANT ondrop();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+ void onbeforecut(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+ VARIANT onbeforecut();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+ void oncut(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+ VARIANT oncut();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+ void onbeforecopy(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+ VARIANT onbeforecopy();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+ void oncopy(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+ VARIANT oncopy();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+ void onbeforepaste(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+ VARIANT onbeforepaste();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+ void onpaste(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+ VARIANT onpaste();
+
+ [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
+ IHTMLCurrentStyle *currentStyle();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+ void onpropertychange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+ VARIANT onpropertychange();
+
+ [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
+ IHTMLRectCollection *getClientRects();
+
+ [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
+ IHTMLRect *getBoundingClientRect();
+
+ [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
+ void setExpression(
+ [in] BSTR propname,
+ [in] BSTR expression,
+ [in, defaultvalue("")] BSTR language);
+
+ [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
+ VARIANT getExpression([in] BSTR propname);
+
+ [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
+ VARIANT_BOOL removeExpression([in] BSTR propname);
+
+ [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+ void tabIndex(short v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+ short tabIndex();
+
+ [id(DISPID_IHTMLELEMENT2_FOCUS)]
+ void focus();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+ void accessKey(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+ BSTR accessKey();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+ void onblur(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+ VARIANT onblur();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+ void onfocus(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+ VARIANT onfocus();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+ void onresize(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+ VARIANT onresize();
+
+ [id(DISPID_IHTMLELEMENT2_BLUR)]
+ void blur();
+
+ [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
+ void addFilter([in] IUnknown *pUnk);
+
+ [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
+ void removeFilter([in] IUnknown *pUnk);
+
+ [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
+ long clientHeight();
+
+ [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
+ long clientWidth();
+
+ [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
+ long clientTop();
+
+ [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
+ long clientLeft();
+
+ [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
+ VARIANT_BOOL attachEvent(
+ [in] BSTR event,
+ [in] IDispatch *pDisp);
+
+ [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
+ void detachEvent(
+ [in] BSTR event,
+ [in] IDispatch *pDisp);
+
+ [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
+ VARIANT readyState();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+ void onreadystatechange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+ VARIANT onreadystatechange();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+ void onrowsdelete(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+ VARIANT onrowsdelete();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+ void onrowsinserted(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+ VARIANT onrowsinserted();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+ void oncellchange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+ VARIANT oncellchange();
+
+ [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+ void dir(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+ BSTR dir();
+
+ [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
+ IDispatch *createControlRange();
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
+ long scrollHeight();
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
+ long scrollWidth();
+
+ [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+ void scrollTop(long v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+ long scrollTop();
+
+ [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+ void scrollLeft(long v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+ long scrollLeft();
+
+ [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
+ void clearAttributes();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+ void oncontextmenu(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+ VARIANT oncontextmenu();
+
+ [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
+ IHTMLElement *insertAdjacentElement(
+ [in] BSTR where,
+ [in] IHTMLElement *insertedElement);
+
+ [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
+ IHTMLElement *applyElement(
+ [in] IHTMLElement *apply,
+ [in] BSTR where);
+
+ [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
+ BSTR getAdjacentText([in] BSTR where);
+
+ [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
+ BSTR replaceAdjacentText(
+ [in] BSTR where,
+ [in] BSTR newText);
+
+ [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
+ VARIANT_BOOL canHaveChildren();
+
+ [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
+ long addBehavior(
+ [in] BSTR bstrUrl,
+ [in, optional] VARIANT *pvarFactory);
+
+ [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
+ VARIANT_BOOL removeBehavior([in] long cookie);
+
+ [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
+ IHTMLStyle *runtimeStyle();
+
+ [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
+ IDispatch *behaviorUrns();
+
+ [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
+ void tagUrn(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
+ BSTR tagUrn();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+ void onbeforeeditfocus(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+ VARIANT onbeforeeditfocus();
+
+ [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
+ long readyStateValue();
+
+ [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
+ IHTMLElementCollection *getElementsByTagName([in] BSTR v);
+
+ [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)]
+ void mergeAttributes(
+ [in] IHTMLElement *mergeThis,
+ [in, optional] VARIANT *pvarFlags);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
+ VARIANT_BOOL isMultiLine();
+
+ [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
+ VARIANT_BOOL canHaveHTML();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+ void onlayoutcomplete(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+ VARIANT onlayoutcomplete();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+ void onpage(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+ VARIANT onpage();
+
+ [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+ void inflateBlock(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+ VARIANT_BOOL inflateBlock();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+ void onbeforedeactivate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+ VARIANT onbeforedeactivate();
+
+ [id(DISPID_IHTMLELEMENT3_SETACTIVE)]
+ void setActive();
+
+ [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+ void contentEditable(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+ BSTR contentEditable();
+
+ [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
+ VARIANT_BOOL isContentEditable();
+
+ [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+ void hideFocus(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+ VARIANT_BOOL hideFocus();
+
+ [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+ void disabled(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+ VARIANT_BOOL disabled();
+
+ [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
+ VARIANT_BOOL isDisabled();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+ void onmove(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+ VARIANT onmove();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+ void oncontrolselect(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+ VARIANT oncontrolselect();
+
+ [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
+ VARIANT_BOOL fireEvent(
+ [in] BSTR bstrEventName,
+ [in, optional] VARIANT *pvarEventObject);
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+ void onresizestart(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+ VARIANT onresizestart();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+ void onresizeend(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+ VARIANT onresizeend();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+ void onmovestart(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+ VARIANT onmovestart();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+ void onmoveend(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+ VARIANT onmoveend();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+ void onmouseenter(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+ VARIANT onmouseenter();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+ void onmouseleave(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+ VARIANT onmouseleave();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+ void onactivate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+ VARIANT onactivate();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+ void ondeactivate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+ VARIANT ondeactivate();
+
+ [id(DISPID_IHTMLELEMENT3_DRAGDROP)]
+ VARIANT_BOOL dragDrop();
+
+ [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
+ LONG glyphMode();
+
+ [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+ void onmousewheel(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+ VARIANT onmousewheel();
+
+ [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
+ void normalize();
+
+ [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
+ IHTMLDOMAttribute *getAttributeNode([in] BSTR bstrname);
+
+ [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
+ IHTMLDOMAttribute *setAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+ [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
+ IHTMLDOMAttribute *removeAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+ [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+ void onbeforeactivate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+ VARIANT onbeforeactivate();
+
+ [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+ void onfocusin(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+ VARIANT onfocusin();
+
+ [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+ void onfocusout(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+ VARIANT onfocusout();
+
+ [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
+ long uniqueNumber();
+
+ [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
+ BSTR uniqueID();
+
+ [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
+ long nodeType();
+
+ [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
+ IHTMLDOMNode *parentNode();
+
+ [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
+ VARIANT_BOOL hasChildNodes();
+
+ [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
+ IDispatch *childNodes();
+
+ [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
+ IDispatch *attributes();
+
+ [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
+ IHTMLDOMNode *insertBefore(
+ [in] IHTMLDOMNode *newChild,
+ [in, optional] VARIANT refChild);
+
+ [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
+ IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
+
+ [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
+ IHTMLDOMNode *replaceChild(
+ [in] IHTMLDOMNode *newChild,
+ [in] IHTMLDOMNode *oldChild);
+
+ [id(DISPID_IHTMLDOMNODE_CLONENODE)]
+ IHTMLDOMNode *cloneNode([in] VARIANT_BOOL fDeep);
+
+ [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
+ IHTMLDOMNode *removeNode([in, defaultvalue(0)] VARIANT_BOOL fDeep);
+
+ [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
+ IHTMLDOMNode *swapNode([in] IHTMLDOMNode *otherNode);
+
+ [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
+ IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
+
+ [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
+ IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+
+ [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
+ BSTR nodeName();
+
+ [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+ void nodeValue(VARIANT v);
+
+ [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+ VARIANT nodeValue();
+
+ [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
+ IHTMLDOMNode *firstChild();
+
+ [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
+ IHTMLDOMNode *lastChild();
+
+ [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
+ IHTMLDOMNode *previousSibling();
+
+ [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
+ IHTMLDOMNode *nextSibling();
+
+ [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
+ IDispatch *ownerDocument();
+
+ [propput, id(DISPID_IHTMLDATABINDING_DATAFLD)]
+ void dataFld(BSTR v);
+
+ [propget, id(DISPID_IHTMLDATABINDING_DATAFLD)]
+ BSTR dataFld();
+
+ [propput, id(DISPID_IHTMLDATABINDING_DATASRC)]
+ void dataSrc(BSTR v);
+
+ [propget, id(DISPID_IHTMLDATABINDING_DATASRC)]
+ BSTR dataSrc();
+
+ [propput, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
+ void dataFormatAs(BSTR v);
+
+ [propget, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
+ BSTR dataFormatAs();
+
+ [propput, id(DISPID_IHTMLIMGELEMENT_ISMAP), displaybind, bindable]
+ void isMap(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLIMGELEMENT_ISMAP), displaybind, bindable]
+ VARIANT_BOOL isMap();
+
+ [propput, id(DISPID_IHTMLIMGELEMENT_USEMAP), displaybind, bindable]
+ void useMap(BSTR v);
+
+ [propget, id(DISPID_IHTMLIMGELEMENT_USEMAP), displaybind, bindable]
+ BSTR useMap();
+
+ [propget, id(DISPID_IHTMLIMGELEMENT_MIMETYPE)]
+ BSTR mimeType();
+
+ [propget, id(DISPID_IHTMLIMGELEMENT_FILESIZE)]
+ BSTR fileSize();
+
+ [propget, id(DISPID_IHTMLIMGELEMENT_FILECREATEDDATE)]
+ BSTR fileCreatedDate();
+
+ [propget, id(DISPID_IHTMLIMGELEMENT_FILEMODIFIEDDATE)]
+ BSTR fileModifiedDate();
+
+ [propget, id(DISPID_IHTMLIMGELEMENT_FILEUPDATEDDATE)]
+ BSTR fileUpdatedDate();
+
+ [propget, id(DISPID_IHTMLIMGELEMENT_PROTOCOL)]
+ BSTR protocol();
+
+ [propget, id(DISPID_IHTMLIMGELEMENT_HREF)]
+ BSTR href();
+
+ [propget, id(DISPID_IHTMLIMGELEMENT_NAMEPROP)]
+ BSTR nameProp();
+
+ [propput, id(DISPID_IHTMLIMGELEMENT_BORDER), displaybind, bindable]
+ void border(VARIANT v);
+
+ [propget, id(DISPID_IHTMLIMGELEMENT_BORDER), displaybind, bindable]
+ VARIANT border();
+
+ [propput, id(DISPID_IHTMLIMGELEMENT_VSPACE), displaybind, bindable]
+ void vspace(long v);
+
+ [propget, id(DISPID_IHTMLIMGELEMENT_VSPACE), displaybind, bindable]
+ long vspace();
+
+ [propput, id(DISPID_IHTMLIMGELEMENT_HSPACE), displaybind, bindable]
+ void hspace(long v);
+
+ [propget, id(DISPID_IHTMLIMGELEMENT_HSPACE), displaybind, bindable]
+ long hspace();
+
+ [propput, id(DISPID_IHTMLIMGELEMENT_ALT), displaybind, bindable]
+ void alt(BSTR v);
+
+ [propget, id(DISPID_IHTMLIMGELEMENT_ALT), displaybind, bindable]
+ BSTR alt();
+
+ [propput, id(DISPID_IHTMLIMGELEMENT_SRC), displaybind, bindable]
+ void src(BSTR v);
+
+ [propget, id(DISPID_IHTMLIMGELEMENT_SRC), displaybind, bindable]
+ BSTR src();
+
+ [propput, id(DISPID_IHTMLIMGELEMENT_LOWSRC), displaybind, bindable]
+ void lowsrc(BSTR v);
+
+ [propget, id(DISPID_IHTMLIMGELEMENT_LOWSRC), displaybind, bindable]
+ BSTR lowsrc();
+
+ [propput, id(DISPID_IHTMLIMGELEMENT_VRML), displaybind, bindable]
+ void vrml(BSTR v);
+
+ [propget, id(DISPID_IHTMLIMGELEMENT_VRML), displaybind, bindable]
+ BSTR vrml();
+
+ [propput, id(DISPID_IHTMLIMGELEMENT_DYNSRC), displaybind, bindable]
+ void dynsrc(BSTR v);
+
+ [propget, id(DISPID_IHTMLIMGELEMENT_DYNSRC), displaybind, bindable]
+ BSTR dynsrc();
+
+ [propget, id(DISPID_IHTMLIMGELEMENT_COMPLETE)]
+ VARIANT_BOOL complete();
+
+ [propput, id(DISPID_IHTMLIMGELEMENT_LOOP), displaybind, bindable]
+ void loop(VARIANT v);
+
+ [propget, id(DISPID_IHTMLIMGELEMENT_LOOP), displaybind, bindable]
+ VARIANT loop();
+
+ [propput, id(DISPID_IHTMLIMGELEMENT_ALIGN), displaybind, bindable]
+ void align(BSTR v);
+
+ [propget, id(DISPID_IHTMLIMGELEMENT_ALIGN), displaybind, bindable]
+ BSTR align();
+
+ [propput, id(DISPID_IHTMLIMGELEMENT_ONLOAD), displaybind, bindable]
+ void onload(VARIANT v);
+
+ [propget, id(DISPID_IHTMLIMGELEMENT_ONLOAD), displaybind, bindable]
+ VARIANT onload();
+
+ [propput, id(DISPID_IHTMLIMGELEMENT_ONERROR), displaybind, bindable]
+ void onerror(VARIANT v);
+
+ [propget, id(DISPID_IHTMLIMGELEMENT_ONERROR), displaybind, bindable]
+ VARIANT onerror();
+
+ [propput, id(DISPID_IHTMLIMGELEMENT_ONABORT), displaybind, bindable]
+ void onabort(VARIANT v);
+
+ [propget, id(DISPID_IHTMLIMGELEMENT_ONABORT), displaybind, bindable]
+ VARIANT onabort();
+
+ [propput, id(DISPID_IHTMLIMGELEMENT_NAME), displaybind, bindable]
+ void name(BSTR v);
+
+ [propget, id(DISPID_IHTMLIMGELEMENT_NAME), displaybind, bindable]
+ BSTR name();
+
+ [propput, id(DISPID_IHTMLIMGELEMENT_WIDTH)]
+ void width(long v);
+
+ [propget, id(DISPID_IHTMLIMGELEMENT_WIDTH)]
+ long width();
+
+ [propput, id(DISPID_IHTMLIMGELEMENT_HEIGHT)]
+ void height(long v);
+
+ [propget, id(DISPID_IHTMLIMGELEMENT_HEIGHT)]
+ long height();
+
+ [propput, id(DISPID_IHTMLIMGELEMENT_START), displaybind, bindable]
+ void start(BSTR v);
+
+ [propget, id(DISPID_IHTMLIMGELEMENT_START), displaybind, bindable]
+ BSTR start();
+
+ [propput, id(DISPID_IHTMLIMGELEMENT2_LONGDESC), displaybind, bindable]
+ void longDesc(BSTR v);
+
+ [propget, id(DISPID_IHTMLIMGELEMENT2_LONGDESC), displaybind, bindable]
+ BSTR longDesc();
+}
+
/*****************************************************************************
* IHTMLBodyElement interface
*/
@@ -3228,6 +6129,45 @@ interface IHTMLElementCollection : IDispatch
[retval, out] IDispatch **pdisp);
}
+/*****************************************************************************
+ * DispHTMLElementCollection dispinterface
+ */
+[
+ hidden,
+ uuid(3050f56b-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLElementCollection
+{
+properties:
+methods:
+ [id(DISPID_IHTMLELEMENTCOLLECTION_TOSTRING)]
+ BSTR toString();
+
+ [propput, id(DISPID_IHTMLELEMENTCOLLECTION_LENGTH)]
+ void length(long v);
+
+ [propget, id(DISPID_IHTMLELEMENTCOLLECTION_LENGTH)]
+ long length();
+
+ [propget, id(DISPID_IHTMLELEMENTCOLLECTION__NEWENUM), hidden, restricted]
+ IUnknown *_newEnum();
+
+ [id(DISPID_IHTMLELEMENTCOLLECTION_ITEM)]
+ IDispatch *item(
+ [in, optional] VARIANT name,
+ [in, optional] VARIANT index);
+
+ [id(DISPID_IHTMLELEMENTCOLLECTION_TAGS)]
+ IDispatch *tags(
+ [in] VARIANT tagName);
+
+ [id(DISPID_IHTMLELEMENTCOLLECTION2_URNS)]
+ IDispatch *urns([in] VARIANT urn);
+
+ [id(DISPID_IHTMLELEMENTCOLLECTION3_NAMEDITEM)]
+ IDispatch *namedItem([in] BSTR name);
+}
+
/*****************************************************************************
* IHTMLSelectElement interface
*/
@@ -3319,6 +6259,934 @@ interface IHTMLSelectElement : IDispatch
[retval, out] IDispatch **pdisp);
}
+/*****************************************************************************
+ * DispHTMLSelectElement dispinterface
+ */
+[
+ hidden,
+ uuid(3050f531-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLSelectElement
+{
+properties:
+methods:
+ [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
+ void setAttribute(
+ [in] BSTR strAttributeName,
+ [in] VARIANT AttributeValue,
+ [in, defaultvalue(1)] LONG lFlags);
+
+ [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
+ VARIANT getAttribute(
+ [in] BSTR strAttributeName,
+ [in, defaultvalue(0)] LONG lFlags);
+
+ [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
+ VARIANT_BOOL removeAttribute(
+ [in] BSTR strAttributeName,
+ [in, defaultvalue(1)] LONG lFlags);
+
+ [propput, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+ void className(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+ BSTR className();
+
+ [propput, id(DISPID_IHTMLELEMENT_ID), bindable]
+ void id(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ID), bindable]
+ BSTR id();
+
+ [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
+ BSTR tagName();
+
+ [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
+ IHTMLElement *parentElement();
+
+ [propget, id(DISPID_IHTMLELEMENT_STYLE), nonbrowsable]
+ IHTMLStyle *style();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+ void onhelp(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+ VARIANT onhelp();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+ void onclick(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+ VARIANT onclick();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+ void ondblclick(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+ VARIANT ondblclick();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+ void onkeydown(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+ VARIANT onkeydown();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+ void onkeyup(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+ VARIANT onkeyup();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+ void onkeypress(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+ VARIANT onkeypress();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+ void onmouseout(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+ VARIANT onmouseout();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+ void onmouseover(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+ VARIANT onmouseover();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+ void onmousemove(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+ VARIANT onmousemove();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+ void onmousedown(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+ VARIANT onmousedown();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+ void onmouseup(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+ VARIANT onmouseup();
+
+ [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
+ IDispatch *document();
+
+ [propput, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+ void title(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+ BSTR title();
+
+ [propput, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+ void language(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+ BSTR language();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+ void onselectstart(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+ VARIANT onselectstart();
+
+ [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
+ void scrollIntoView([in, optional] VARIANT varargStart);
+
+ [id(DISPID_IHTMLELEMENT_CONTAINS)]
+ VARIANT_BOOL contains([in] IHTMLElement *pChild);
+
+ [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX), bindable]
+ long sourceIndex();
+
+ [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
+ VARIANT recordNumber();
+
+ [propput, id(DISPID_IHTMLELEMENT_LANG)]
+ void lang(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_LANG)]
+ BSTR lang();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
+ long offsetLeft();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
+ long offsetTop();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
+ long offsetWidth();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
+ long offsetHeight();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
+ IHTMLElement *offsetParent();
+
+ [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
+ void innerHTML(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
+ BSTR innerHTML();
+
+ [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+ void innerText(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+ BSTR innerText();
+
+ [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+ void outerHTML(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+ BSTR outerHTML();
+
+ [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+ void outerText(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+ BSTR outerText();
+
+ [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
+ void insertAdjacentHTML(
+ [in] BSTR where,
+ [in] BSTR html);
+
+ [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
+ void insertAdjacentText(
+ [in] BSTR where,
+ [in] BSTR text);
+
+ [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
+ IHTMLElement *parentTextEdit();
+
+ [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
+ VARIANT_BOOL isTextEdit();
+
+ [id(DISPID_IHTMLELEMENT_CLICK)]
+ void click();
+
+ [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
+ IHTMLFiltersCollection *filters();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+ void ondragstart(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+ VARIANT ondragstart();
+
+ [id(DISPID_IHTMLELEMENT_TOSTRING)]
+ BSTR toString();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+ void onbeforeupdate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+ VARIANT onbeforeupdate();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+ void onafterupdate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+ VARIANT onafterupdate();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+ void onerrorupdate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+ VARIANT onerrorupdate();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+ void onrowexit(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+ VARIANT onrowexit();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+ void onrowenter(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+ VARIANT onrowenter();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+ void ondatasetchanged(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+ VARIANT ondatasetchanged();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+ void ondataavailable(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+ VARIANT ondataavailable();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+ void ondatasetcomplete(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+ VARIANT ondatasetcomplete();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+ void onfilterchange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+ VARIANT onfilterchange();
+
+ [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
+ IDispatch *children();
+
+ [propget, id(DISPID_IHTMLELEMENT_ALL)]
+ IDispatch *all();
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
+ BSTR scopeName();
+
+ [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
+ void setCapture([in, defaultvalue(-1)] VARIANT_BOOL containerCapture);
+
+ [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
+ void releaseCapture();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+ void onlosecapture(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+ VARIANT onlosecapture();
+
+ [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
+ BSTR componentFromPoint(
+ [in] long x,
+ [in] long y);
+
+ [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
+ void doScroll([in, optional] VARIANT component);
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+ void onscroll(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+ VARIANT onscroll();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+ void ondrag(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+ VARIANT ondrag();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+ void ondragend(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+ VARIANT ondragend();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+ void ondragenter(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+ VARIANT ondragenter();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+ void ondragover(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+ VARIANT ondragover();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+ void ondragleave(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+ VARIANT ondragleave();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+ void ondrop(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+ VARIANT ondrop();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+ void onbeforecut(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+ VARIANT onbeforecut();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+ void oncut(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+ VARIANT oncut();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+ void onbeforecopy(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+ VARIANT onbeforecopy();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+ void oncopy(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+ VARIANT oncopy();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+ void onbeforepaste(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+ VARIANT onbeforepaste();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+ void onpaste(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+ VARIANT onpaste();
+
+ [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
+ IHTMLCurrentStyle *currentStyle();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+ void onpropertychange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+ VARIANT onpropertychange();
+
+ [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
+ IHTMLRectCollection *getClientRects();
+
+ [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
+ IHTMLRect *getBoundingClientRect();
+
+ [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
+ void setExpression(
+ [in] BSTR propname,
+ [in] BSTR expression,
+ [in, defaultvalue("")] BSTR language);
+
+ [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
+ VARIANT getExpression([in] BSTR propname);
+
+ [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
+ VARIANT_BOOL removeExpression([in] BSTR propname);
+
+ [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+ void tabIndex(short v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+ short tabIndex();
+
+ [id(DISPID_IHTMLELEMENT2_FOCUS)]
+ void focus();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+ void accessKey(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+ BSTR accessKey();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+ void onblur(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+ VARIANT onblur();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+ void onfocus(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+ VARIANT onfocus();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+ void onresize(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+ VARIANT onresize();
+
+ [id(DISPID_IHTMLELEMENT2_BLUR)]
+ void blur();
+
+ [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
+ void addFilter([in] IUnknown *pUnk);
+
+ [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
+ void removeFilter([in] IUnknown *pUnk);
+
+ [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
+ long clientHeight();
+
+ [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
+ long clientWidth();
+
+ [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
+ long clientTop();
+
+ [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
+ long clientLeft();
+
+ [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
+ VARIANT_BOOL attachEvent(
+ [in] BSTR event,
+ [in] IDispatch *pDisp);
+
+ [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
+ void detachEvent(
+ [in] BSTR event,
+ [in] IDispatch *pDisp);
+
+ [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
+ VARIANT readyState();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+ void onreadystatechange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+ VARIANT onreadystatechange();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+ void onrowsdelete(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+ VARIANT onrowsdelete();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+ void onrowsinserted(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+ VARIANT onrowsinserted();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+ void oncellchange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+ VARIANT oncellchange();
+
+ [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+ void dir(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+ BSTR dir();
+
+ [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
+ IDispatch *createControlRange();
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
+ long scrollHeight();
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
+ long scrollWidth();
+
+ [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+ void scrollTop(long v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+ long scrollTop();
+
+ [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+ void scrollLeft(long v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+ long scrollLeft();
+
+ [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
+ void clearAttributes();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+ void oncontextmenu(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+ VARIANT oncontextmenu();
+
+ [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
+ IHTMLElement *insertAdjacentElement(
+ [in] BSTR where,
+ [in] IHTMLElement *insertedElement);
+
+ [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
+ IHTMLElement *applyElement(
+ [in] IHTMLElement *apply,
+ [in] BSTR where);
+
+ [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
+ BSTR getAdjacentText([in] BSTR where);
+
+ [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
+ BSTR replaceAdjacentText(
+ [in] BSTR where,
+ [in] BSTR newText);
+
+ [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
+ VARIANT_BOOL canHaveChildren();
+
+ [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
+ long addBehavior(
+ [in] BSTR bstrUrl,
+ [in, optional] VARIANT *pvarFactory);
+
+ [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
+ VARIANT_BOOL removeBehavior([in] long cookie);
+
+ [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
+ IHTMLStyle *runtimeStyle();
+
+ [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
+ IDispatch *behaviorUrns();
+
+ [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
+ void tagUrn(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
+ BSTR tagUrn();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+ void onbeforeeditfocus(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+ VARIANT onbeforeeditfocus();
+
+ [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
+ long readyStateValue();
+
+ [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
+ IHTMLElementCollection *getElementsByTagName([in] BSTR v);
+
+ [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)]
+ void mergeAttributes(
+ [in] IHTMLElement *mergeThis,
+ [in, optional] VARIANT *pvarFlags);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
+ VARIANT_BOOL isMultiLine();
+
+ [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
+ VARIANT_BOOL canHaveHTML();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+ void onlayoutcomplete(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+ VARIANT onlayoutcomplete();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+ void onpage(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+ VARIANT onpage();
+
+ [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+ void inflateBlock(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+ VARIANT_BOOL inflateBlock();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+ void onbeforedeactivate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+ VARIANT onbeforedeactivate();
+
+ [id(DISPID_IHTMLELEMENT3_SETACTIVE)]
+ void setActive();
+
+ [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+ void contentEditable(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+ BSTR contentEditable();
+
+ [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
+ VARIANT_BOOL isContentEditable();
+
+ [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+ void hideFocus(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+ VARIANT_BOOL hideFocus();
+
+ [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+ void disabled(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+ VARIANT_BOOL disabled();
+
+ [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
+ VARIANT_BOOL isDisabled();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+ void onmove(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+ VARIANT onmove();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+ void oncontrolselect(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+ VARIANT oncontrolselect();
+
+ [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
+ VARIANT_BOOL fireEvent(
+ [in] BSTR bstrEventName,
+ [in, optional] VARIANT *pvarEventObject);
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+ void onresizestart(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+ VARIANT onresizestart();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+ void onresizeend(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+ VARIANT onresizeend();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+ void onmovestart(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+ VARIANT onmovestart();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+ void onmoveend(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+ VARIANT onmoveend();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+ void onmouseenter(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+ VARIANT onmouseenter();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+ void onmouseleave(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+ VARIANT onmouseleave();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+ void onactivate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+ VARIANT onactivate();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+ void ondeactivate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+ VARIANT ondeactivate();
+
+ [id(DISPID_IHTMLELEMENT3_DRAGDROP)]
+ VARIANT_BOOL dragDrop();
+
+ [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
+ LONG glyphMode();
+
+ [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+ void onmousewheel(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+ VARIANT onmousewheel();
+
+ [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
+ void normalize();
+
+ [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
+ IHTMLDOMAttribute *getAttributeNode([in] BSTR bstrname);
+
+ [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
+ IHTMLDOMAttribute *setAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+ [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
+ IHTMLDOMAttribute *removeAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+ [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+ void onbeforeactivate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+ VARIANT onbeforeactivate();
+
+ [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+ void onfocusin(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+ VARIANT onfocusin();
+
+ [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+ void onfocusout(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+ VARIANT onfocusout();
+
+ [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
+ long uniqueNumber();
+
+ [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
+ BSTR uniqueID();
+
+ [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
+ long nodeType();
+
+ [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
+ IHTMLDOMNode *parentNode();
+
+ [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
+ VARIANT_BOOL hasChildNodes();
+
+ [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
+ IDispatch *childNodes();
+
+ [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
+ IDispatch *attributes();
+
+ [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
+ IHTMLDOMNode *insertBefore(
+ [in] IHTMLDOMNode *newChild,
+ [in, optional] VARIANT refChild);
+
+ [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
+ IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
+
+ [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
+ IHTMLDOMNode *replaceChild(
+ [in] IHTMLDOMNode *newChild,
+ [in] IHTMLDOMNode *oldChild);
+
+ [id(DISPID_IHTMLDOMNODE_CLONENODE)]
+ IHTMLDOMNode *cloneNode([in] VARIANT_BOOL fDeep);
+
+ [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
+ IHTMLDOMNode *removeNode([in, defaultvalue(0)] VARIANT_BOOL fDeep);
+
+ [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
+ IHTMLDOMNode *swapNode([in] IHTMLDOMNode *otherNode);
+
+ [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
+ IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
+
+ [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
+ IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+
+ [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
+ BSTR nodeName();
+
+ [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+ void nodeValue(VARIANT v);
+
+ [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+ VARIANT nodeValue();
+
+ [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
+ IHTMLDOMNode *firstChild();
+
+ [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
+ IHTMLDOMNode *lastChild();
+
+ [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
+ IHTMLDOMNode *previousSibling();
+
+ [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
+ IHTMLDOMNode *nextSibling();
+
+ [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
+ IDispatch *ownerDocument();
+
+ [propput, id(DISPID_IHTMLDATABINDING_DATAFLD)]
+ void dataFld(BSTR v);
+
+ [propget, id(DISPID_IHTMLDATABINDING_DATAFLD)]
+ BSTR dataFld();
+
+ [propput, id(DISPID_IHTMLDATABINDING_DATASRC)]
+ void dataSrc(BSTR v);
+
+ [propget, id(DISPID_IHTMLDATABINDING_DATASRC)]
+ BSTR dataSrc();
+
+ [propput, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
+ void dataFormatAs(BSTR v);
+
+ [propget, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
+ BSTR dataFormatAs();
+
+ [propput, id(DISPID_IHTMLSELECTELEMENT_SIZE), displaybind, bindable]
+ void size(long v);
+
+ [propget, id(DISPID_IHTMLSELECTELEMENT_SIZE), displaybind, bindable]
+ long size();
+
+ [propput, id(DISPID_IHTMLSELECTELEMENT_MULTIPLE), displaybind, bindable]
+ void multiple(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLSELECTELEMENT_MULTIPLE), displaybind, bindable]
+ VARIANT_BOOL multiple();
+
+ [propput, id(DISPID_IHTMLSELECTELEMENT_NAME), displaybind, bindable]
+ void name(BSTR v);
+
+ [propget, id(DISPID_IHTMLSELECTELEMENT_NAME), displaybind, bindable]
+ BSTR name();
+
+ [propget, id(DISPID_IHTMLSELECTELEMENT_OPTIONS)]
+ IDispatch *options();
+
+ [propput, id(DISPID_IHTMLSELECTELEMENT_ONCHANGE), displaybind, bindable]
+ void onchange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSELECTELEMENT_ONCHANGE), displaybind, bindable]
+ VARIANT onchange();
+
+ [propput, id(DISPID_IHTMLSELECTELEMENT_SELECTEDINDEX)]
+ void selectedIndex(long v);
+
+ [propget, id(DISPID_IHTMLSELECTELEMENT_SELECTEDINDEX)]
+ long selectedIndex();
+
+ [propget, id(DISPID_IHTMLSELECTELEMENT_TYPE), displaybind, bindable]
+ BSTR type();
+
+ [propput, id(DISPID_IHTMLSELECTELEMENT_VALUE), displaybind, bindable]
+ void value(BSTR v);
+
+ [propget, id(DISPID_IHTMLSELECTELEMENT_VALUE), displaybind, bindable]
+ BSTR value();
+
+ [propget, id(DISPID_IHTMLSELECTELEMENT_FORM)]
+ IHTMLFormElement *form();
+
+ [id(DISPID_IHTMLSELECTELEMENT_ADD)]
+ void add(
+ [in] IHTMLElement *element,
+ [in, optional] VARIANT before);
+
+ [id(DISPID_IHTMLSELECTELEMENT_REMOVE)]
+ void remove([in, defaultvalue(-1)] long index);
+
+ [propput, id(DISPID_IHTMLSELECTELEMENT_LENGTH)]
+ void length(long v);
+
+ [propget, id(DISPID_IHTMLSELECTELEMENT_LENGTH)]
+ long length();
+
+ [propget, id(DISPID_IHTMLSELECTELEMENT__NEWENUM), hidden, restricted]
+ IUnknown *_newEnum();
+
+ [id(DISPID_IHTMLSELECTELEMENT_ITEM)]
+ IDispatch *item(
+ [in, optional] VARIANT name,
+ [in, optional] VARIANT index);
+
+ [id(DISPID_IHTMLSELECTELEMENT_TAGS)]
+ IDispatch *tags([in] VARIANT tagName);
+
+ [id(DISPID_IHTMLSELECTELEMENT2_URNS)]
+ IDispatch *urns([in] VARIANT urn);
+
+ [id(DISPID_IHTMLSELECTELEMENT4_NAMEDITEM)]
+ IDispatch *namedItem([in] BSTR name);
+}
+
/*****************************************************************************
* IHTMLSelectionObject interface
*/
@@ -3408,6 +7276,897 @@ interface IHTMLOptionElementFactory : IDispatch
[retval, out] IHTMLOptionElement **optelem);
}
+/*****************************************************************************
+ * DispHTMLOptionElement dispinterface
+ */
+[
+ hidden,
+ uuid(3050f52b-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLOptionElement
+{
+properties:
+methods:
+ [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
+ void setAttribute(
+ [in] BSTR strAttributeName,
+ [in] VARIANT AttributeValue,
+ [in, defaultvalue(1)] LONG lFlags);
+
+ [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
+ VARIANT getAttribute(
+ [in] BSTR strAttributeName,
+ [in, defaultvalue(0)] LONG lFlags);
+
+ [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
+ VARIANT_BOOL removeAttribute(
+ [in] BSTR strAttributeName,
+ [in, defaultvalue(1)] LONG lFlags);
+
+ [propput, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+ void className(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+ BSTR className();
+
+ [propput, id(DISPID_IHTMLELEMENT_ID), bindable]
+ void id(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ID), bindable]
+ BSTR id();
+
+ [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
+ BSTR tagName();
+
+ [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
+ IHTMLElement *parentElement();
+
+ [propget, id(DISPID_IHTMLELEMENT_STYLE), nonbrowsable]
+ IHTMLStyle *style();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+ void onhelp(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+ VARIANT onhelp();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+ void onclick(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+ VARIANT onclick();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+ void ondblclick(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+ VARIANT ondblclick();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+ void onkeydown(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+ VARIANT onkeydown();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+ void onkeyup(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+ VARIANT onkeyup();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+ void onkeypress(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+ VARIANT onkeypress();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+ void onmouseout(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+ VARIANT onmouseout();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+ void onmouseover(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+ VARIANT onmouseover();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+ void onmousemove(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+ VARIANT onmousemove();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+ void onmousedown(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+ VARIANT onmousedown();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+ void onmouseup(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+ VARIANT onmouseup();
+
+ [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
+ IDispatch *document();
+
+ [propput, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+ void title(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+ BSTR title();
+
+ [propput, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+ void language(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+ BSTR language();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+ void onselectstart(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+ VARIANT onselectstart();
+
+ [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
+ void scrollIntoView([in, optional] VARIANT varargStart);
+
+ [id(DISPID_IHTMLELEMENT_CONTAINS)]
+ VARIANT_BOOL contains([in] IHTMLElement *pChild);
+
+ [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX), bindable]
+ long sourceIndex();
+
+ [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
+ VARIANT recordNumber();
+
+ [propput, id(DISPID_IHTMLELEMENT_LANG)]
+ void lang(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_LANG)]
+ BSTR lang();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
+ long offsetLeft();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
+ long offsetTop();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
+ long offsetWidth();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
+ long offsetHeight();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
+ IHTMLElement *offsetParent();
+
+ [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
+ void innerHTML(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
+ BSTR innerHTML();
+
+ [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+ void innerText(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+ BSTR innerText();
+
+ [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+ void outerHTML(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+ BSTR outerHTML();
+
+ [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+ void outerText(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+ BSTR outerText();
+
+ [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
+ void insertAdjacentHTML(
+ [in] BSTR where,
+ [in] BSTR html);
+
+ [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
+ void insertAdjacentText(
+ [in] BSTR where,
+ [in] BSTR text);
+
+ [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
+ IHTMLElement *parentTextEdit();
+
+ [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
+ VARIANT_BOOL isTextEdit();
+
+ [id(DISPID_IHTMLELEMENT_CLICK)]
+ void click();
+
+ [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
+ IHTMLFiltersCollection *filters();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+ void ondragstart(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+ VARIANT ondragstart();
+
+ [id(DISPID_IHTMLELEMENT_TOSTRING)]
+ BSTR toString();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+ void onbeforeupdate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+ VARIANT onbeforeupdate();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+ void onafterupdate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+ VARIANT onafterupdate();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+ void onerrorupdate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+ VARIANT onerrorupdate();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+ void onrowexit(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+ VARIANT onrowexit();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+ void onrowenter(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+ VARIANT onrowenter();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+ void ondatasetchanged(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+ VARIANT ondatasetchanged();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+ void ondataavailable(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+ VARIANT ondataavailable();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+ void ondatasetcomplete(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+ VARIANT ondatasetcomplete();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+ void onfilterchange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+ VARIANT onfilterchange();
+
+ [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
+ IDispatch *children();
+
+ [propget, id(DISPID_IHTMLELEMENT_ALL)]
+ IDispatch *all();
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
+ BSTR scopeName();
+
+ [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
+ void setCapture([in, defaultvalue(-1)] VARIANT_BOOL containerCapture);
+
+ [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
+ void releaseCapture();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+ void onlosecapture(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+ VARIANT onlosecapture();
+
+ [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
+ BSTR componentFromPoint(
+ [in] long x,
+ [in] long y);
+
+ [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
+ void doScroll([in, optional] VARIANT component);
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+ void onscroll(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+ VARIANT onscroll();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+ void ondrag(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+ VARIANT ondrag();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+ void ondragend(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+ VARIANT ondragend();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+ void ondragenter(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+ VARIANT ondragenter();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+ void ondragover(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+ VARIANT ondragover();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+ void ondragleave(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+ VARIANT ondragleave();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+ void ondrop(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+ VARIANT ondrop();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+ void onbeforecut(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+ VARIANT onbeforecut();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+ void oncut(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+ VARIANT oncut();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+ void onbeforecopy(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+ VARIANT onbeforecopy();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+ void oncopy(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+ VARIANT oncopy();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+ void onbeforepaste(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+ VARIANT onbeforepaste();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+ void onpaste(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+ VARIANT onpaste();
+
+ [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
+ IHTMLCurrentStyle *currentStyle();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+ void onpropertychange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+ VARIANT onpropertychange();
+
+ [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
+ IHTMLRectCollection *getClientRects();
+
+ [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
+ IHTMLRect *getBoundingClientRect();
+
+ [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
+ void setExpression(
+ [in] BSTR propname,
+ [in] BSTR expression,
+ [in, defaultvalue("")] BSTR language);
+
+ [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
+ VARIANT getExpression([in] BSTR propname);
+
+ [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
+ VARIANT_BOOL removeExpression([in] BSTR propname);
+
+ [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+ void tabIndex(short v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+ short tabIndex();
+
+ [id(DISPID_IHTMLELEMENT2_FOCUS)]
+ void focus();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+ void accessKey(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+ BSTR accessKey();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+ void onblur(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+ VARIANT onblur();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+ void onfocus(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+ VARIANT onfocus();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+ void onresize(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+ VARIANT onresize();
+
+ [id(DISPID_IHTMLELEMENT2_BLUR)]
+ void blur();
+
+ [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
+ void addFilter([in] IUnknown *pUnk);
+
+ [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
+ void removeFilter([in] IUnknown *pUnk);
+
+ [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
+ long clientHeight();
+
+ [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
+ long clientWidth();
+
+ [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
+ long clientTop();
+
+ [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
+ long clientLeft();
+
+ [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
+ VARIANT_BOOL attachEvent(
+ [in] BSTR event,
+ [in] IDispatch *pDisp);
+
+ [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
+ void detachEvent(
+ [in] BSTR event,
+ [in] IDispatch *pDisp);
+
+ [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
+ VARIANT readyState();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+ void onreadystatechange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+ VARIANT onreadystatechange();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+ void onrowsdelete(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+ VARIANT onrowsdelete();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+ void onrowsinserted(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+ VARIANT onrowsinserted();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+ void oncellchange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+ VARIANT oncellchange();
+
+ [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+ void dir(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+ BSTR dir();
+
+ [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
+ IDispatch *createControlRange();
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
+ long scrollHeight();
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
+ long scrollWidth();
+
+ [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+ void scrollTop(long v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+ long scrollTop();
+
+ [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+ void scrollLeft(long v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+ long scrollLeft();
+
+ [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
+ void clearAttributes();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+ void oncontextmenu(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+ VARIANT oncontextmenu();
+
+ [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
+ IHTMLElement *insertAdjacentElement(
+ [in] BSTR where,
+ [in] IHTMLElement *insertedElement);
+
+ [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
+ IHTMLElement *applyElement(
+ [in] IHTMLElement *apply,
+ [in] BSTR where);
+
+ [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
+ BSTR getAdjacentText([in] BSTR where);
+
+ [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
+ BSTR replaceAdjacentText(
+ [in] BSTR where,
+ [in] BSTR newText);
+
+ [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
+ VARIANT_BOOL canHaveChildren();
+
+ [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
+ long addBehavior(
+ [in] BSTR bstrUrl,
+ [in, optional] VARIANT *pvarFactory);
+
+ [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
+ VARIANT_BOOL removeBehavior([in] long cookie);
+
+ [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
+ IHTMLStyle *runtimeStyle();
+
+ [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
+ IDispatch *behaviorUrns();
+
+ [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
+ void tagUrn(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
+ BSTR tagUrn();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+ void onbeforeeditfocus(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+ VARIANT onbeforeeditfocus();
+
+ [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
+ long readyStateValue();
+
+ [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
+ IHTMLElementCollection *getElementsByTagName([in] BSTR v);
+
+ [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)]
+ void mergeAttributes(
+ [in] IHTMLElement *mergeThis,
+ [in, optional] VARIANT *pvarFlags);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
+ VARIANT_BOOL isMultiLine();
+
+ [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
+ VARIANT_BOOL canHaveHTML();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+ void onlayoutcomplete(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+ VARIANT onlayoutcomplete();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+ void onpage(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+ VARIANT onpage();
+
+ [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+ void inflateBlock(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+ VARIANT_BOOL inflateBlock();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+ void onbeforedeactivate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+ VARIANT onbeforedeactivate();
+
+ [id(DISPID_IHTMLELEMENT3_SETACTIVE)]
+ void setActive();
+
+ [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+ void contentEditable(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+ BSTR contentEditable();
+
+ [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
+ VARIANT_BOOL isContentEditable();
+
+ [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+ void hideFocus(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+ VARIANT_BOOL hideFocus();
+
+ [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+ void disabled(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+ VARIANT_BOOL disabled();
+
+ [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
+ VARIANT_BOOL isDisabled();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+ void onmove(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+ VARIANT onmove();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+ void oncontrolselect(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+ VARIANT oncontrolselect();
+
+ [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
+ VARIANT_BOOL fireEvent(
+ [in] BSTR bstrEventName,
+ [in, optional] VARIANT *pvarEventObject);
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+ void onresizestart(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+ VARIANT onresizestart();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+ void onresizeend(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+ VARIANT onresizeend();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+ void onmovestart(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+ VARIANT onmovestart();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+ void onmoveend(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+ VARIANT onmoveend();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+ void onmouseenter(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+ VARIANT onmouseenter();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+ void onmouseleave(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+ VARIANT onmouseleave();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+ void onactivate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+ VARIANT onactivate();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+ void ondeactivate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+ VARIANT ondeactivate();
+
+ [id(DISPID_IHTMLELEMENT3_DRAGDROP)]
+ VARIANT_BOOL dragDrop();
+
+ [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
+ LONG glyphMode();
+
+ [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+ void onmousewheel(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+ VARIANT onmousewheel();
+
+ [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
+ void normalize();
+
+ [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
+ IHTMLDOMAttribute *getAttributeNode([in] BSTR bstrname);
+
+ [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
+ IHTMLDOMAttribute *setAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+ [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
+ IHTMLDOMAttribute *removeAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+ [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+ void onbeforeactivate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+ VARIANT onbeforeactivate();
+
+ [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+ void onfocusin(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+ VARIANT onfocusin();
+
+ [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+ void onfocusout(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+ VARIANT onfocusout();
+
+ [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
+ long uniqueNumber();
+
+ [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
+ BSTR uniqueID();
+
+ [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
+ long nodeType();
+
+ [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
+ IHTMLDOMNode *parentNode();
+
+ [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
+ VARIANT_BOOL hasChildNodes();
+
+ [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
+ IDispatch *childNodes();
+
+ [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
+ IDispatch *attributes();
+
+ [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
+ IHTMLDOMNode *insertBefore(
+ [in] IHTMLDOMNode *newChild,
+ [in, optional] VARIANT refChild);
+
+ [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
+ IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
+
+ [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
+ IHTMLDOMNode *replaceChild(
+ [in] IHTMLDOMNode *newChild,
+ [in] IHTMLDOMNode *oldChild);
+
+ [id(DISPID_IHTMLDOMNODE_CLONENODE)]
+ IHTMLDOMNode *cloneNode([in] VARIANT_BOOL fDeep);
+
+ [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
+ IHTMLDOMNode *removeNode([in, defaultvalue(0)] VARIANT_BOOL fDeep);
+
+ [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
+ IHTMLDOMNode *swapNode([in] IHTMLDOMNode *otherNode);
+
+ [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
+ IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
+
+ [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
+ IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+
+ [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
+ BSTR nodeName();
+
+ [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+ void nodeValue(VARIANT v);
+
+ [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+ VARIANT nodeValue();
+
+ [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
+ IHTMLDOMNode *firstChild();
+
+ [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
+ IHTMLDOMNode *lastChild();
+
+ [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
+ IHTMLDOMNode *previousSibling();
+
+ [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
+ IHTMLDOMNode *nextSibling();
+
+ [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
+ IDispatch *ownerDocument();
+
+ [propput, id(DISPID_IHTMLDATABINDING_DATAFLD)]
+ void dataFld(BSTR v);
+
+ [propget, id(DISPID_IHTMLDATABINDING_DATAFLD)]
+ BSTR dataFld();
+
+ [propput, id(DISPID_IHTMLDATABINDING_DATASRC)]
+ void dataSrc(BSTR v);
+
+ [propget, id(DISPID_IHTMLDATABINDING_DATASRC)]
+ BSTR dataSrc();
+
+ [propput, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
+ void dataFormatAs(BSTR v);
+
+ [propget, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
+ BSTR dataFormatAs();
+
+ [propput, id(DISPID_IHTMLOPTIONELEMENT_SELECTED)]
+ void selected(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLOPTIONELEMENT_SELECTED)]
+ VARIANT_BOOL selected();
+
+ [propput, id(DISPID_IHTMLOPTIONELEMENT_VALUE)]
+ void value(BSTR v);
+
+ [propget, id(DISPID_IHTMLOPTIONELEMENT_VALUE)]
+ BSTR value();
+
+ [propput, id(DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED)]
+ void defaultSelected(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED)]
+ VARIANT_BOOL defaultSelected();
+
+ [propput, id(DISPID_IHTMLOPTIONELEMENT_INDEX)]
+ void index(LONG v);
+
+ [propget, id(DISPID_IHTMLOPTIONELEMENT_INDEX)]
+ LONG index();
+
+ [propput, id(DISPID_IHTMLOPTIONELEMENT_TEXT)]
+ void text(BSTR v);
+
+ [propget, id(DISPID_IHTMLOPTIONELEMENT_TEXT)]
+ BSTR text();
+
+ [propget, id(DISPID_IHTMLOPTIONELEMENT_FORM)]
+ IHTMLFormElement *form();
+
+ [propput, id(DISPID_IHTMLOPTIONELEMENT3_LABEL), displaybind, bindable]
+ void label(BSTR v);
+
+ [propget, id(DISPID_IHTMLOPTIONELEMENT3_LABEL), displaybind, bindable]
+ BSTR label();
+}
+
/*****************************************************************************
* IHTMLInputElement interface
*/
@@ -3699,6 +8458,1053 @@ interface IHTMLInputTextElement : IDispatch
HRESULT createTextRange([retval, out] IHTMLTxtRange **range);
}
+[
+ hidden,
+ uuid(3050f57d-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLInputElement
+{
+properties:
+methods:
+ [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
+ void setAttribute(
+ [in] BSTR strAttributeName,
+ [in] VARIANT AttributeValue,
+ [in, defaultvalue(1)] LONG lFlags);
+
+ [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
+ VARIANT getAttribute(
+ [in] BSTR strAttributeName,
+ [in, defaultvalue(0)] LONG lFlags);
+
+ [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
+ VARIANT_BOOL removeAttribute(
+ [in] BSTR strAttributeName,
+ [in, defaultvalue(1)] LONG lFlags);
+
+ [propput, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+ void className(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+ BSTR className();
+
+ [propput, id(DISPID_IHTMLELEMENT_ID), bindable]
+ void id(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ID), bindable]
+ BSTR id();
+
+ [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
+ BSTR tagName();
+
+ [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
+ IHTMLElement *parentElement();
+
+ [propget, id(DISPID_IHTMLELEMENT_STYLE), nonbrowsable]
+ IHTMLStyle *style();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+ void onhelp(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+ VARIANT onhelp();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+ void onclick(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+ VARIANT onclick();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+ void ondblclick(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+ VARIANT ondblclick();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+ void onkeydown(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+ VARIANT onkeydown();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+ void onkeyup(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+ VARIANT onkeyup();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+ void onkeypress(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+ VARIANT onkeypress();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+ void onmouseout(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+ VARIANT onmouseout();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+ void onmouseover(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+ VARIANT onmouseover();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+ void onmousemove(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+ VARIANT onmousemove();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+ void onmousedown(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+ VARIANT onmousedown();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+ void onmouseup(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+ VARIANT onmouseup();
+
+ [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
+ IDispatch *document();
+
+ [propput, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+ void title(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+ BSTR title();
+
+ [propput, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+ void language(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+ BSTR language();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+ void onselectstart(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+ VARIANT onselectstart();
+
+ [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
+ void scrollIntoView([in, optional] VARIANT varargStart);
+
+ [id(DISPID_IHTMLELEMENT_CONTAINS)]
+ VARIANT_BOOL contains([in] IHTMLElement *pChild);
+
+ [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX), bindable]
+ long sourceIndex();
+
+ [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
+ VARIANT recordNumber();
+
+ [propput, id(DISPID_IHTMLELEMENT_LANG)]
+ void lang(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_LANG)]
+ BSTR lang();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
+ long offsetLeft();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
+ long offsetTop();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
+ long offsetWidth();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
+ long offsetHeight();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
+ IHTMLElement *offsetParent();
+
+ [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
+ void innerHTML(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
+ BSTR innerHTML();
+
+ [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+ void innerText(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+ BSTR innerText();
+
+ [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+ void outerHTML(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+ BSTR outerHTML();
+
+ [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+ void outerText(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+ BSTR outerText();
+
+ [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
+ void insertAdjacentHTML(
+ [in] BSTR where,
+ [in] BSTR html);
+
+ [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
+ void insertAdjacentText(
+ [in] BSTR where,
+ [in] BSTR text);
+
+ [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
+ IHTMLElement *parentTextEdit();
+
+ [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
+ VARIANT_BOOL isTextEdit();
+
+ [id(DISPID_IHTMLELEMENT_CLICK)]
+ void click();
+
+ [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
+ IHTMLFiltersCollection *filters();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+ void ondragstart(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+ VARIANT ondragstart();
+
+ [id(DISPID_IHTMLELEMENT_TOSTRING)]
+ BSTR toString();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+ void onbeforeupdate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+ VARIANT onbeforeupdate();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+ void onafterupdate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+ VARIANT onafterupdate();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+ void onerrorupdate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+ VARIANT onerrorupdate();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+ void onrowexit(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+ VARIANT onrowexit();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+ void onrowenter(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+ VARIANT onrowenter();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+ void ondatasetchanged(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+ VARIANT ondatasetchanged();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+ void ondataavailable(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+ VARIANT ondataavailable();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+ void ondatasetcomplete(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+ VARIANT ondatasetcomplete();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+ void onfilterchange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+ VARIANT onfilterchange();
+
+ [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
+ IDispatch *children();
+
+ [propget, id(DISPID_IHTMLELEMENT_ALL)]
+ IDispatch *all();
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
+ BSTR scopeName();
+
+ [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
+ void setCapture([in, defaultvalue(-1)] VARIANT_BOOL containerCapture);
+
+ [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
+ void releaseCapture();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+ void onlosecapture(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+ VARIANT onlosecapture();
+
+ [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
+ BSTR componentFromPoint(
+ [in] long x,
+ [in] long y);
+
+ [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
+ void doScroll([in, optional] VARIANT component);
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+ void onscroll(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+ VARIANT onscroll();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+ void ondrag(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+ VARIANT ondrag();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+ void ondragend(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+ VARIANT ondragend();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+ void ondragenter(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+ VARIANT ondragenter();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+ void ondragover(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+ VARIANT ondragover();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+ void ondragleave(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+ VARIANT ondragleave();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+ void ondrop(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+ VARIANT ondrop();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+ void onbeforecut(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+ VARIANT onbeforecut();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+ void oncut(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+ VARIANT oncut();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+ void onbeforecopy(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+ VARIANT onbeforecopy();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+ void oncopy(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+ VARIANT oncopy();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+ void onbeforepaste(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+ VARIANT onbeforepaste();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+ void onpaste(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+ VARIANT onpaste();
+
+ [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
+ IHTMLCurrentStyle *currentStyle();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+ void onpropertychange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+ VARIANT onpropertychange();
+
+ [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
+ IHTMLRectCollection *getClientRects();
+
+ [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
+ IHTMLRect *getBoundingClientRect();
+
+ [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
+ void setExpression(
+ [in] BSTR propname,
+ [in] BSTR expression,
+ [in, defaultvalue("")] BSTR language);
+
+ [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
+ VARIANT getExpression([in] BSTR propname);
+
+ [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
+ VARIANT_BOOL removeExpression([in] BSTR propname);
+
+ [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+ void tabIndex(short v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+ short tabIndex();
+
+ [id(DISPID_IHTMLELEMENT2_FOCUS)]
+ void focus();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+ void accessKey(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+ BSTR accessKey();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+ void onblur(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+ VARIANT onblur();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+ void onfocus(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+ VARIANT onfocus();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+ void onresize(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+ VARIANT onresize();
+
+ [id(DISPID_IHTMLELEMENT2_BLUR)]
+ void blur();
+
+ [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
+ void addFilter([in] IUnknown *pUnk);
+
+ [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
+ void removeFilter([in] IUnknown *pUnk);
+
+ [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
+ long clientHeight();
+
+ [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
+ long clientWidth();
+
+ [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
+ long clientTop();
+
+ [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
+ long clientLeft();
+
+ [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
+ VARIANT_BOOL attachEvent(
+ [in] BSTR event,
+ [in] IDispatch *pDisp);
+
+ [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
+ void detachEvent(
+ [in] BSTR event,
+ [in] IDispatch *pDisp);
+
+ [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
+ VARIANT readyState();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+ void onreadystatechange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+ VARIANT onreadystatechange();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+ void onrowsdelete(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+ VARIANT onrowsdelete();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+ void onrowsinserted(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+ VARIANT onrowsinserted();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+ void oncellchange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+ VARIANT oncellchange();
+
+ [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+ void dir(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+ BSTR dir();
+
+ [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
+ IDispatch *createControlRange();
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
+ long scrollHeight();
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
+ long scrollWidth();
+
+ [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+ void scrollTop(long v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+ long scrollTop();
+
+ [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+ void scrollLeft(long v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+ long scrollLeft();
+
+ [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
+ void clearAttributes();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+ void oncontextmenu(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+ VARIANT oncontextmenu();
+
+ [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
+ IHTMLElement *insertAdjacentElement(
+ [in] BSTR where,
+ [in] IHTMLElement *insertedElement);
+
+ [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
+ IHTMLElement *applyElement(
+ [in] IHTMLElement *apply,
+ [in] BSTR where);
+
+ [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
+ BSTR getAdjacentText([in] BSTR where);
+
+ [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
+ BSTR replaceAdjacentText(
+ [in] BSTR where,
+ [in] BSTR newText);
+
+ [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
+ VARIANT_BOOL canHaveChildren();
+
+ [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
+ long addBehavior(
+ [in] BSTR bstrUrl,
+ [in, optional] VARIANT *pvarFactory);
+
+ [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
+ VARIANT_BOOL removeBehavior([in] long cookie);
+
+ [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
+ IHTMLStyle *runtimeStyle();
+
+ [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
+ IDispatch *behaviorUrns();
+
+ [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
+ void tagUrn(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
+ BSTR tagUrn();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+ void onbeforeeditfocus(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+ VARIANT onbeforeeditfocus();
+
+ [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
+ long readyStateValue();
+
+ [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
+ IHTMLElementCollection *getElementsByTagName([in] BSTR v);
+
+ [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)]
+ void mergeAttributes(
+ [in] IHTMLElement *mergeThis,
+ [in, optional] VARIANT *pvarFlags);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
+ VARIANT_BOOL isMultiLine();
+
+ [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
+ VARIANT_BOOL canHaveHTML();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+ void onlayoutcomplete(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+ VARIANT onlayoutcomplete();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+ void onpage(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+ VARIANT onpage();
+
+ [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+ void inflateBlock(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+ VARIANT_BOOL inflateBlock();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+ void onbeforedeactivate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+ VARIANT onbeforedeactivate();
+
+ [id(DISPID_IHTMLELEMENT3_SETACTIVE)]
+ void setActive();
+
+ [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+ void contentEditable(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+ BSTR contentEditable();
+
+ [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
+ VARIANT_BOOL isContentEditable();
+
+ [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+ void hideFocus(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+ VARIANT_BOOL hideFocus();
+
+ [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+ void disabled(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+ VARIANT_BOOL disabled();
+
+ [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
+ VARIANT_BOOL isDisabled();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+ void onmove(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+ VARIANT onmove();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+ void oncontrolselect(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+ VARIANT oncontrolselect();
+
+ [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
+ VARIANT_BOOL fireEvent(
+ [in] BSTR bstrEventName,
+ [in, optional] VARIANT *pvarEventObject);
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+ void onresizestart(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+ VARIANT onresizestart();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+ void onresizeend(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+ VARIANT onresizeend();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+ void onmovestart(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+ VARIANT onmovestart();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+ void onmoveend(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+ VARIANT onmoveend();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+ void onmouseenter(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+ VARIANT onmouseenter();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+ void onmouseleave(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+ VARIANT onmouseleave();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+ void onactivate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+ VARIANT onactivate();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+ void ondeactivate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+ VARIANT ondeactivate();
+
+ [id(DISPID_IHTMLELEMENT3_DRAGDROP)]
+ VARIANT_BOOL dragDrop();
+
+ [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
+ LONG glyphMode();
+
+ [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+ void onmousewheel(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+ VARIANT onmousewheel();
+
+ [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
+ void normalize();
+
+ [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
+ IHTMLDOMAttribute *getAttributeNode([in] BSTR bstrname);
+
+ [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
+ IHTMLDOMAttribute *setAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+ [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
+ IHTMLDOMAttribute *removeAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+ [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+ void onbeforeactivate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+ VARIANT onbeforeactivate();
+
+ [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+ void onfocusin(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+ VARIANT onfocusin();
+
+ [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+ void onfocusout(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+ VARIANT onfocusout();
+
+ [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
+ long uniqueNumber();
+
+ [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
+ BSTR uniqueID();
+
+ [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
+ long nodeType();
+
+ [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
+ IHTMLDOMNode *parentNode();
+
+ [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
+ VARIANT_BOOL hasChildNodes();
+
+ [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
+ IDispatch *childNodes();
+
+ [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
+ IDispatch *attributes();
+
+ [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
+ IHTMLDOMNode *insertBefore(
+ [in] IHTMLDOMNode *newChild,
+ [in, optional] VARIANT refChild);
+
+ [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
+ IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
+
+ [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
+ IHTMLDOMNode *replaceChild(
+ [in] IHTMLDOMNode *newChild,
+ [in] IHTMLDOMNode *oldChild);
+
+ [id(DISPID_IHTMLDOMNODE_CLONENODE)]
+ IHTMLDOMNode *cloneNode([in] VARIANT_BOOL fDeep);
+
+ [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
+ IHTMLDOMNode *removeNode([in, defaultvalue(0)] VARIANT_BOOL fDeep);
+
+ [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
+ IHTMLDOMNode *swapNode([in] IHTMLDOMNode *otherNode);
+
+ [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
+ IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
+
+ [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
+ IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+
+ [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
+ BSTR nodeName();
+
+ [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+ void nodeValue(VARIANT v);
+
+ [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+ VARIANT nodeValue();
+
+ [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
+ IHTMLDOMNode *firstChild();
+
+ [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
+ IHTMLDOMNode *lastChild();
+
+ [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
+ IHTMLDOMNode *previousSibling();
+
+ [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
+ IHTMLDOMNode *nextSibling();
+
+ [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
+ IDispatch *ownerDocument();
+
+ [propput, id(DISPID_IHTMLDATABINDING_DATAFLD)]
+ void dataFld(BSTR v);
+
+ [propget, id(DISPID_IHTMLDATABINDING_DATAFLD)]
+ BSTR dataFld();
+
+ [propput, id(DISPID_IHTMLDATABINDING_DATASRC)]
+ void dataSrc(BSTR v);
+
+ [propget, id(DISPID_IHTMLDATABINDING_DATASRC)]
+ BSTR dataSrc();
+
+ [propput, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
+ void dataFormatAs(BSTR v);
+
+ [propget, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
+ BSTR dataFormatAs();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_TYPE)]
+ void type(BSTR v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_TYPE)]
+ BSTR type();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_VALUE), displaybind, bindable]
+ void value(BSTR v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_VALUE), displaybind, bindable]
+ BSTR value();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_NAME), displaybind, bindable]
+ void name(BSTR v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_NAME), displaybind, bindable]
+ BSTR name();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_STATUS)]
+ void status(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_STATUS)]
+ VARIANT_BOOL status();
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_FORM)]
+ IHTMLFormElement *form();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_SIZE), displaybind, bindable]
+ void size(long v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_SIZE), displaybind, bindable]
+ long size();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_MAXLENGTH), displaybind, bindable]
+ void maxLength(long v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_MAXLENGTH), displaybind, bindable]
+ long maxLength();
+
+ [id(DISPID_IHTMLINPUTELEMENT_SELECT)]
+ void select();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_ONCHANGE), displaybind, bindable]
+ void onchange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_ONCHANGE), displaybind, bindable]
+ VARIANT onchange();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_ONSELECT), displaybind, bindable]
+ void onselect(VARIANT v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_ONSELECT), displaybind, bindable]
+ VARIANT onselect();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
+ void defaultValue(BSTR v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
+ BSTR defaultValue();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_READONLY), displaybind, bindable]
+ void readOnly(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_READONLY), displaybind, bindable]
+ VARIANT_BOOL readOnly();
+
+ [id(DISPID_IHTMLINPUTELEMENT_CREATETEXTRANGE)]
+ IHTMLTxtRange *createTextRange();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_INDETERMINATE), bindable]
+ void indeterminate(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_INDETERMINATE), bindable]
+ VARIANT_BOOL indeterminate();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_DEFAULTCHECKED), bindable]
+ void defaultChecked(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_DEFAULTCHECKED), bindable]
+ VARIANT_BOOL defaultChecked();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_CHECKED), bindable]
+ void checked(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_CHECKED), bindable]
+ VARIANT_BOOL checked();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_BORDER), displaybind, bindable]
+ void border(VARIANT v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_BORDER), displaybind, bindable]
+ VARIANT border();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_VSPACE), displaybind, bindable]
+ void vspace(long v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_VSPACE), displaybind, bindable]
+ long vspace();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_HSPACE), displaybind, bindable]
+ void hspace(long v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_HSPACE), displaybind, bindable]
+ long hspace();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_ALT), displaybind, bindable]
+ void alt(BSTR v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_ALT), displaybind, bindable]
+ BSTR alt();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_SRC), displaybind, bindable]
+ void src(BSTR v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_SRC), displaybind, bindable]
+ BSTR src();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_LOWSRC), displaybind, bindable]
+ void lowsrc(BSTR v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_LOWSRC), displaybind, bindable]
+ BSTR lowsrc();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_VRML), displaybind, bindable]
+ void vrml(BSTR v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_VRML), displaybind, bindable]
+ BSTR vrml();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_DYNSRC), displaybind, bindable]
+ void dynsrc(BSTR v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_DYNSRC), displaybind, bindable]
+ BSTR dynsrc();
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_COMPLETE)]
+ VARIANT_BOOL complete();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_LOOP), displaybind, bindable]
+ void loop(VARIANT v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_LOOP), displaybind, bindable]
+ VARIANT loop();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_ALIGN), displaybind, bindable]
+ void align(BSTR v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_ALIGN), displaybind, bindable]
+ BSTR align();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_ONLOAD), displaybind, bindable]
+ void onload(VARIANT v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_ONLOAD), displaybind, bindable]
+ VARIANT onload();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_ONERROR), displaybind, bindable]
+ void onerror(VARIANT v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_ONERROR), displaybind, bindable]
+ VARIANT onerror();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_ONABORT), displaybind, bindable]
+ void onabort(VARIANT v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_ONABORT), displaybind, bindable]
+ VARIANT onabort();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_WIDTH)]
+ void width(long v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_WIDTH)]
+ long width();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_HEIGHT)]
+ void height(long v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_HEIGHT)]
+ long height();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT_START), displaybind, bindable]
+ void start(BSTR v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT_START), displaybind, bindable]
+ BSTR start();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT2_ACCEPT), displaybind, bindable]
+ void accept(BSTR v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT2_ACCEPT), displaybind, bindable]
+ BSTR accept();
+
+ [propput, id(DISPID_IHTMLINPUTELEMENT2_USEMAP), displaybind, bindable]
+ void useMap(BSTR v);
+
+ [propget, id(DISPID_IHTMLINPUTELEMENT2_USEMAP), displaybind, bindable]
+ BSTR useMap();
+}
+
/*****************************************************************************
* IHTMLTextAreaElement interface
*/
@@ -3789,6 +9595,840 @@ interface IHTMLTextAreaElement : IDispatch
HRESULT createTextRange([retval, out] IHTMLTxtRange **range);
}
+/*****************************************************************************
+ * DispHTMLUnknownElement interface
+ */
+[
+ hidden,
+ uuid(3050f539-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLUnknownElement
+{
+properties:
+methods:
+ [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
+ void setAttribute(
+ [in] BSTR strAttributeName,
+ [in] VARIANT AttributeValue,
+ [in, defaultvalue(1)] LONG lFlags);
+
+ [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
+ VARIANT getAttribute(
+ [in] BSTR strAttributeName,
+ [in, defaultvalue(0)] LONG lFlags);
+
+ [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
+ VARIANT_BOOL removeAttribute(
+ [in] BSTR strAttributeName,
+ [in, defaultvalue(1)] LONG lFlags);
+
+ [propput, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+ void className(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+ BSTR className();
+
+ [propput, id(DISPID_IHTMLELEMENT_ID), bindable]
+ void id(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ID), bindable]
+ BSTR id();
+
+ [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
+ BSTR tagName();
+
+ [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
+ IHTMLElement *parentElement();
+
+ [propget, id(DISPID_IHTMLELEMENT_STYLE), nonbrowsable]
+ IHTMLStyle *style();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+ void onhelp(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+ VARIANT onhelp();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+ void onclick(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+ VARIANT onclick();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+ void ondblclick(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+ VARIANT ondblclick();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+ void onkeydown(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+ VARIANT onkeydown();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+ void onkeyup(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+ VARIANT onkeyup();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+ void onkeypress(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+ VARIANT onkeypress();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+ void onmouseout(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+ VARIANT onmouseout();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+ void onmouseover(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+ VARIANT onmouseover();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+ void onmousemove(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+ VARIANT onmousemove();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+ void onmousedown(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+ VARIANT onmousedown();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+ void onmouseup(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+ VARIANT onmouseup();
+
+ [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
+ IDispatch *document();
+
+ [propput, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+ void title(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+ BSTR title();
+
+ [propput, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+ void language(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+ BSTR language();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+ void onselectstart(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+ VARIANT onselectstart();
+
+ [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
+ void scrollIntoView([in, optional] VARIANT varargStart);
+
+ [id(DISPID_IHTMLELEMENT_CONTAINS)]
+ VARIANT_BOOL contains([in] IHTMLElement *pChild);
+
+ [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX), bindable]
+ long sourceIndex();
+
+ [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
+ VARIANT recordNumber();
+
+ [propput, id(DISPID_IHTMLELEMENT_LANG)]
+ void lang(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_LANG)]
+ BSTR lang();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
+ long offsetLeft();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
+ long offsetTop();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
+ long offsetWidth();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
+ long offsetHeight();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
+ IHTMLElement *offsetParent();
+
+ [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
+ void innerHTML(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
+ BSTR innerHTML();
+
+ [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+ void innerText(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+ BSTR innerText();
+
+ [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+ void outerHTML(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+ BSTR outerHTML();
+
+ [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+ void outerText(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+ BSTR outerText();
+
+ [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
+ void insertAdjacentHTML(
+ [in] BSTR where,
+ [in] BSTR html);
+
+ [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
+ void insertAdjacentText(
+ [in] BSTR where,
+ [in] BSTR text);
+
+ [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
+ IHTMLElement *parentTextEdit();
+
+ [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
+ VARIANT_BOOL isTextEdit();
+
+ [id(DISPID_IHTMLELEMENT_CLICK)]
+ void click();
+
+ [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
+ IHTMLFiltersCollection *filters();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+ void ondragstart(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+ VARIANT ondragstart();
+
+ [id(DISPID_IHTMLELEMENT_TOSTRING)]
+ BSTR toString();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+ void onbeforeupdate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+ VARIANT onbeforeupdate();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+ void onafterupdate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+ VARIANT onafterupdate();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+ void onerrorupdate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+ VARIANT onerrorupdate();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+ void onrowexit(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+ VARIANT onrowexit();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+ void onrowenter(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+ VARIANT onrowenter();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+ void ondatasetchanged(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+ VARIANT ondatasetchanged();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+ void ondataavailable(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+ VARIANT ondataavailable();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+ void ondatasetcomplete(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+ VARIANT ondatasetcomplete();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+ void onfilterchange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+ VARIANT onfilterchange();
+
+ [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
+ IDispatch *children();
+
+ [propget, id(DISPID_IHTMLELEMENT_ALL)]
+ IDispatch *all();
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
+ BSTR scopeName();
+
+ [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
+ void setCapture([in, defaultvalue(-1)] VARIANT_BOOL containerCapture);
+
+ [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
+ void releaseCapture();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+ void onlosecapture(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+ VARIANT onlosecapture();
+
+ [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
+ BSTR componentFromPoint(
+ [in] long x,
+ [in] long y);
+
+ [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
+ void doScroll([in, optional] VARIANT component);
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+ void onscroll(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+ VARIANT onscroll();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+ void ondrag(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+ VARIANT ondrag();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+ void ondragend(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+ VARIANT ondragend();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+ void ondragenter(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+ VARIANT ondragenter();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+ void ondragover(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+ VARIANT ondragover();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+ void ondragleave(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+ VARIANT ondragleave();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+ void ondrop(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+ VARIANT ondrop();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+ void onbeforecut(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+ VARIANT onbeforecut();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+ void oncut(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+ VARIANT oncut();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+ void onbeforecopy(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+ VARIANT onbeforecopy();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+ void oncopy(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+ VARIANT oncopy();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+ void onbeforepaste(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+ VARIANT onbeforepaste();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+ void onpaste(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+ VARIANT onpaste();
+
+ [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
+ IHTMLCurrentStyle *currentStyle();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+ void onpropertychange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+ VARIANT onpropertychange();
+
+ [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
+ IHTMLRectCollection *getClientRects();
+
+ [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
+ IHTMLRect *getBoundingClientRect();
+
+ [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
+ void setExpression(
+ [in] BSTR propname,
+ [in] BSTR expression,
+ [in, defaultvalue("")] BSTR language);
+
+ [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
+ VARIANT getExpression([in] BSTR propname);
+
+ [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
+ VARIANT_BOOL removeExpression([in] BSTR propname);
+
+ [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+ void tabIndex(short v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+ short tabIndex();
+
+ [id(DISPID_IHTMLELEMENT2_FOCUS)]
+ void focus();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+ void accessKey(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+ BSTR accessKey();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+ void onblur(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+ VARIANT onblur();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+ void onfocus(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+ VARIANT onfocus();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+ void onresize(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+ VARIANT onresize();
+
+ [id(DISPID_IHTMLELEMENT2_BLUR)]
+ void blur();
+
+ [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
+ void addFilter([in] IUnknown *pUnk);
+
+ [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
+ void removeFilter([in] IUnknown *pUnk);
+
+ [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
+ long clientHeight();
+
+ [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
+ long clientWidth();
+
+ [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
+ long clientTop();
+
+ [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
+ long clientLeft();
+
+ [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
+ VARIANT_BOOL attachEvent(
+ [in] BSTR event,
+ [in] IDispatch *pDisp);
+
+ [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
+ void detachEvent(
+ [in] BSTR event,
+ [in] IDispatch *pDisp);
+
+ [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
+ VARIANT readyState();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+ void onreadystatechange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+ VARIANT onreadystatechange();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+ void onrowsdelete(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+ VARIANT onrowsdelete();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+ void onrowsinserted(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+ VARIANT onrowsinserted();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+ void oncellchange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+ VARIANT oncellchange();
+
+ [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+ void dir(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+ BSTR dir();
+
+ [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
+ IDispatch *createControlRange();
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
+ long scrollHeight();
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
+ long scrollWidth();
+
+ [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+ void scrollTop(long v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+ long scrollTop();
+
+ [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+ void scrollLeft(long v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+ long scrollLeft();
+
+ [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
+ void clearAttributes();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+ void oncontextmenu(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+ VARIANT oncontextmenu();
+
+ [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
+ IHTMLElement *insertAdjacentElement(
+ [in] BSTR where,
+ [in] IHTMLElement *insertedElement);
+
+ [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
+ IHTMLElement *applyElement(
+ [in] IHTMLElement *apply,
+ [in] BSTR where);
+
+ [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
+ BSTR getAdjacentText([in] BSTR where);
+
+ [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
+ BSTR replaceAdjacentText(
+ [in] BSTR where,
+ [in] BSTR newText);
+
+ [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
+ VARIANT_BOOL canHaveChildren();
+
+ [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
+ long addBehavior(
+ [in] BSTR bstrUrl,
+ [in, optional] VARIANT *pvarFactory);
+
+ [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
+ VARIANT_BOOL removeBehavior([in] long cookie);
+
+ [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
+ IHTMLStyle *runtimeStyle();
+
+ [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
+ IDispatch *behaviorUrns();
+
+ [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
+ void tagUrn(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
+ BSTR tagUrn();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+ void onbeforeeditfocus(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+ VARIANT onbeforeeditfocus();
+
+ [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
+ long readyStateValue();
+
+ [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
+ IHTMLElementCollection *getElementsByTagName([in] BSTR v);
+
+ [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)]
+ void mergeAttributes(
+ [in] IHTMLElement *mergeThis,
+ [in, optional] VARIANT *pvarFlags);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
+ VARIANT_BOOL isMultiLine();
+
+ [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
+ VARIANT_BOOL canHaveHTML();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+ void onlayoutcomplete(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+ VARIANT onlayoutcomplete();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+ void onpage(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+ VARIANT onpage();
+
+ [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+ void inflateBlock(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+ VARIANT_BOOL inflateBlock();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+ void onbeforedeactivate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+ VARIANT onbeforedeactivate();
+
+ [id(DISPID_IHTMLELEMENT3_SETACTIVE)]
+ void setActive();
+
+ [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+ void contentEditable(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+ BSTR contentEditable();
+
+ [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
+ VARIANT_BOOL isContentEditable();
+
+ [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+ void hideFocus(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+ VARIANT_BOOL hideFocus();
+
+ [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+ void disabled(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+ VARIANT_BOOL disabled();
+
+ [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
+ VARIANT_BOOL isDisabled();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+ void onmove(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+ VARIANT onmove();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+ void oncontrolselect(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+ VARIANT oncontrolselect();
+
+ [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
+ VARIANT_BOOL fireEvent(
+ [in] BSTR bstrEventName,
+ [in, optional] VARIANT *pvarEventObject);
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+ void onresizestart(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+ VARIANT onresizestart();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+ void onresizeend(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+ VARIANT onresizeend();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+ void onmovestart(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+ VARIANT onmovestart();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+ void onmoveend(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+ VARIANT onmoveend();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+ void onmouseenter(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+ VARIANT onmouseenter();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+ void onmouseleave(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+ VARIANT onmouseleave();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+ void onactivate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+ VARIANT onactivate();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+ void ondeactivate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+ VARIANT ondeactivate();
+
+ [id(DISPID_IHTMLELEMENT3_DRAGDROP)]
+ VARIANT_BOOL dragDrop();
+
+ [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
+ LONG glyphMode();
+
+ [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+ void onmousewheel(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+ VARIANT onmousewheel();
+
+ [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
+ void normalize();
+
+ [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
+ IHTMLDOMAttribute *getAttributeNode([in] BSTR bstrname);
+
+ [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
+ IHTMLDOMAttribute *setAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+ [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
+ IHTMLDOMAttribute *removeAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+ [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+ void onbeforeactivate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+ VARIANT onbeforeactivate();
+
+ [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+ void onfocusin(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+ VARIANT onfocusin();
+
+ [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+ void onfocusout(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+ VARIANT onfocusout();
+
+ [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
+ long uniqueNumber();
+
+ [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
+ BSTR uniqueID();
+
+ [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
+ long nodeType();
+
+ [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
+ IHTMLDOMNode *parentNode();
+
+ [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
+ VARIANT_BOOL hasChildNodes();
+
+ [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
+ IDispatch *childNodes();
+
+ [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
+ IDispatch *attributes();
+
+ [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
+ IHTMLDOMNode *insertBefore(
+ [in] IHTMLDOMNode *newChild,
+ [in, optional] VARIANT refChild);
+
+ [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
+ IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
+
+ [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
+ IHTMLDOMNode *replaceChild(
+ [in] IHTMLDOMNode *newChild,
+ [in] IHTMLDOMNode *oldChild);
+
+ [id(DISPID_IHTMLDOMNODE_CLONENODE)]
+ IHTMLDOMNode *cloneNode([in] VARIANT_BOOL fDeep);
+
+ [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
+ IHTMLDOMNode *removeNode([in, defaultvalue(0)] VARIANT_BOOL fDeep);
+
+ [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
+ IHTMLDOMNode *swapNode([in] IHTMLDOMNode *otherNode);
+
+ [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
+ IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
+
+ [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
+ IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+
+ [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
+ BSTR nodeName();
+
+ [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+ void nodeValue(VARIANT v);
+
+ [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+ VARIANT nodeValue();
+
+ [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
+ IHTMLDOMNode *firstChild();
+
+ [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
+ IHTMLDOMNode *lastChild();
+
+ [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
+ IHTMLDOMNode *previousSibling();
+
+ [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
+ IHTMLDOMNode *nextSibling();
+
+ [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
+ IDispatch *ownerDocument();
+}
+
/*****************************************************************************
* IOmHistory interface
*/
@@ -3913,10 +10553,10 @@ interface IHTMLOpsProfile : IDispatch
* IOmNavigator interface
*/
[
- odl,
- oleautomation,
- dual,
- uuid(FECEAAA5-8405-11CF-8BA1-00AA00476DA6)
+ odl,
+ oleautomation,
+ dual,
+ uuid(FECEAAA5-8405-11CF-8BA1-00AA00476DA6)
]
interface IOmNavigator : IDispatch
{
@@ -4053,6 +10693,46 @@ interface IHTMLLocation : IDispatch
HRESULT toString([retval, out] BSTR *String);
}
+/*****************************************************************************
+ * IHTMLDataTransfer interface
+ */
+[
+ odl,
+ oleautomation,
+ dual,
+ uuid(3050f4b3-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLDataTransfer : IDispatch
+{
+ [id(DISPID_IHTMLDATATRANSFER_SETDATA)]
+ HRESULT setData(
+ [in] BSTR format,
+ [in] VARIANT *data,
+ [out, retval] VARIANT_BOOL *pret);
+
+ [id(DISPID_IHTMLDATATRANSFER_GETDATA)]
+ HRESULT getData(
+ [in] BSTR format,
+ [out, retval] VARIANT *pvarRet);
+
+ [id(DISPID_IHTMLDATATRANSFER_CLEARDATA)]
+ HRESULT clearData(
+ [in] BSTR format,
+ [out, retval] VARIANT_BOOL *pret);
+
+ [propput, id(DISPID_IHTMLDATATRANSFER_DROPEFFECT)]
+ HRESULT dropEffect([in] BSTR v);
+
+ [propget, id(DISPID_IHTMLDATATRANSFER_DROPEFFECT)]
+ HRESULT dropEffect([out, retval] BSTR *p);
+
+ [propput, id(DISPID_IHTMLDATATRANSFER_EFFECTALLOWED)]
+ HRESULT effectAllowed([in] BSTR v);
+
+ [propget, id(DISPID_IHTMLDATATRANSFER_EFFECTALLOWED)]
+ HRESULT effectAllowed([out, retval] BSTR *p);
+}
+
/*****************************************************************************
* IHTMLEventObj interface
*/
@@ -4446,6 +11126,359 @@ interface IHTMLWindow2 : IHTMLFramesCollection2
HRESULT external([retval, out] IDispatch **p);
}
+/*****************************************************************************
+ * IHTMLWindow3 interface
+ */
+[
+ odl,
+ oleautomation,
+ dual,
+ uuid(3050f4ae-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLWindow3 : IDispatch
+{
+ [propget, id(DISPID_IHTMLWINDOW3_SCREENLEFT)]
+ HRESULT screenLeft([out, retval] long *p);
+
+ [propget, id(DISPID_IHTMLWINDOW3_SCREENTOP)]
+ HRESULT screenTop([out, retval] long *p);
+
+ [id(DISPID_IHTMLWINDOW3_ATTACHEVENT)]
+ HRESULT attachEvent(
+ [in] BSTR event,
+ [in] IDispatch *pDisp,
+ [out, retval] VARIANT_BOOL *pfResult);
+
+ [id(DISPID_IHTMLWINDOW3_DETACHEVENT)]
+ HRESULT detachEvent(
+ [in] BSTR event,
+ [in] IDispatch *pDisp);
+
+ [id(DISPID_IHTMLWINDOW3_SETTIMEOUT)]
+ HRESULT setTimeout(
+ [in] VARIANT *expression,
+ [in] long msec,
+ [in, optional] VARIANT *language,
+ [out, retval] long *timerID);
+
+ [id(DISPID_IHTMLWINDOW3_SETINTERVAL)]
+ HRESULT setInterval(
+ [in] VARIANT *expression,
+ [in] long msec,
+ [in, optional] VARIANT *language,
+ [out, retval] long *timerID);
+
+ [id(DISPID_IHTMLWINDOW3_PRINT)]
+ HRESULT print();
+
+ [propput, id(DISPID_IHTMLWINDOW3_ONBEFOREPRINT), displaybind, bindable]
+ HRESULT onbeforeprint([in] VARIANT v);
+
+ [propget, id(DISPID_IHTMLWINDOW3_ONBEFOREPRINT), displaybind, bindable]
+ HRESULT onbeforeprint([out, retval] VARIANT *p);
+
+ [propput, id(DISPID_IHTMLWINDOW3_ONAFTERPRINT), displaybind, bindable]
+ HRESULT onafterprint([in] VARIANT v);
+
+ [propget, id(DISPID_IHTMLWINDOW3_ONAFTERPRINT), displaybind, bindable]
+ HRESULT onafterprint([out, retval] VARIANT *p);
+
+ [propget, id(DISPID_IHTMLWINDOW3_CLIPBOARDDATA)]
+ HRESULT clipboardData([out, retval] IHTMLDataTransfer **p);
+
+ [id(DISPID_IHTMLWINDOW3_SHOWMODELESSDIALOG)]
+ HRESULT showModelessDialog(
+ [in, defaultvalue("")] BSTR url,
+ [in, optional] VARIANT *varArgIn,
+ [in, optional] VARIANT *options,
+ [out, retval] IHTMLWindow2 **pDialog);
+}
+
+/*****************************************************************************
+ * DispHTMLWindow2 dispinterface
+ */
+[
+ hidden,
+ uuid(3050f55d-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLWindow2
+{
+properties:
+methods:
+ [id(DISPID_IHTMLFRAMESCOLLECTION2_ITEM)]
+ VARIANT item([in] VARIANT *pvarIndex);
+
+ [propget, id(DISPID_IHTMLFRAMESCOLLECTION2_LENGTH)]
+ long length();
+
+ [propget, id(DISPID_IHTMLWINDOW2_FRAMES)]
+ IHTMLFramesCollection2 *frames();
+
+ [propput, id(DISPID_IHTMLWINDOW2_DEFAULTSTATUS)]
+ void defaultStatus(BSTR v);
+
+ [propget, id(DISPID_IHTMLWINDOW2_DEFAULTSTATUS)]
+ BSTR defaultStatus();
+
+ [propput, id(DISPID_IHTMLWINDOW2_STATUS)]
+ void status(BSTR v);
+
+ [propget, id(DISPID_IHTMLWINDOW2_STATUS)]
+ BSTR status();
+
+ [id(DISPID_IHTMLWINDOW2_CLEARTIMEOUT)]
+ void clearTimeout([in] long timerID);
+
+ [id(DISPID_IHTMLWINDOW2_ALERT)]
+ void alert([in, defaultvalue("")] BSTR message);
+
+ [id(DISPID_IHTMLWINDOW2_CONFIRM)]
+ VARIANT_BOOL confirm([in, defaultvalue("")] BSTR message);
+
+ [id(DISPID_IHTMLWINDOW2_PROMPT)]
+ VARIANT prompt(
+ [in, defaultvalue("")] BSTR message,
+ [in, defaultvalue("undefined")] BSTR defstr);
+
+ [propget, id(DISPID_IHTMLWINDOW2_IMAGE)]
+ IHTMLImageElementFactory *Image();
+
+ [propget, id(DISPID_IHTMLWINDOW2_LOCATION)]
+ IHTMLLocation *location();
+
+ [propget, id(DISPID_IHTMLWINDOW2_HISTORY)]
+ IOmHistory *history();
+
+ [id(DISPID_IHTMLWINDOW2_CLOSE)]
+ void close();
+
+ [propput, id(DISPID_IHTMLWINDOW2_OPENER)]
+ void opener(VARIANT v);
+
+ [propget, id(DISPID_IHTMLWINDOW2_OPENER)]
+ VARIANT opener();
+
+ [propget, id(DISPID_IHTMLWINDOW2_NAVIGATOR)]
+ IOmNavigator *navigator();
+
+ [propput, id(DISPID_IHTMLWINDOW2_NAME)]
+ void name(BSTR v);
+
+ [propget, id(DISPID_IHTMLWINDOW2_NAME)]
+ BSTR name();
+
+ [propget, id(DISPID_IHTMLWINDOW2_PARENT)]
+ IHTMLWindow2 *parent();
+
+ [id(DISPID_IHTMLWINDOW2_OPEN)]
+ IHTMLWindow2 *open(
+ [in, defaultvalue("")] BSTR url,
+ [in, defaultvalue("")] BSTR name,
+ [in, defaultvalue("")] BSTR features,
+ [in, defaultvalue(0)] VARIANT_BOOL replace);
+
+ [propget, id(DISPID_IHTMLWINDOW2_SELF)]
+ IHTMLWindow2 *self();
+
+ [propget, id(DISPID_IHTMLWINDOW2_TOP)]
+ IHTMLWindow2 *top();
+
+ [propget, id(DISPID_IHTMLWINDOW2_WINDOW)]
+ IHTMLWindow2 *window();
+
+ [id(DISPID_IHTMLWINDOW2_NAVIGATE)]
+ void navigate([in] BSTR url);
+
+ [propput, id(DISPID_IHTMLWINDOW2_ONFOCUS), displaybind, bindable]
+ void onfocus(VARIANT v);
+
+ [propget, id(DISPID_IHTMLWINDOW2_ONFOCUS), displaybind, bindable]
+ VARIANT onfocus();
+
+ [propput, id(DISPID_IHTMLWINDOW2_ONBLUR), displaybind, bindable]
+ void onblur(VARIANT v);
+
+ [propget, id(DISPID_IHTMLWINDOW2_ONBLUR), displaybind, bindable]
+ VARIANT onblur();
+
+ [propget, id(DISPID_IHTMLWINDOW2_ONLOAD), displaybind, bindable]
+ VARIANT onload();
+
+ [propput, id(DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD), displaybind, bindable]
+ void onbeforeunload(VARIANT v);
+
+ [propget, id(DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD), displaybind, bindable]
+ VARIANT onbeforeunload();
+
+ [propput, id(DISPID_IHTMLWINDOW2_ONUNLOAD), displaybind, bindable]
+ void onunload(VARIANT v);
+
+ [propget, id(DISPID_IHTMLWINDOW2_ONUNLOAD), displaybind, bindable]
+ VARIANT onunload();
+
+ [propput, id(DISPID_IHTMLWINDOW2_ONHELP), displaybind, bindable]
+ void onhelp(VARIANT v);
+
+ [propget, id(DISPID_IHTMLWINDOW2_ONHELP), displaybind, bindable]
+ VARIANT onhelp();
+
+ [propput, id(DISPID_IHTMLWINDOW2_ONERROR), displaybind, bindable]
+ void onerror(VARIANT v);
+
+ [propget, id(DISPID_IHTMLWINDOW2_ONERROR), displaybind, bindable]
+ VARIANT onerror();
+
+ [propput, id(DISPID_IHTMLWINDOW2_ONRESIZE), displaybind, bindable]
+ void onresize(VARIANT v);
+
+ [propget, id(DISPID_IHTMLWINDOW2_ONRESIZE), displaybind, bindable]
+ VARIANT onresize();
+
+ [propput, id(DISPID_IHTMLWINDOW2_ONSCROLL), displaybind, bindable]
+ void onscroll(VARIANT v);
+
+ [propget, id(DISPID_IHTMLWINDOW2_ONSCROLL), displaybind, bindable]
+ VARIANT onscroll();
+
+ [propget, id(DISPID_IHTMLWINDOW2_DOCUMENT), source]
+ IHTMLDocument2 *document();
+
+ [propget, id(DISPID_IHTMLWINDOW2_EVENT)]
+ IHTMLEventObj *event();
+
+ [propget, id(DISPID_IHTMLWINDOW2__NEWENUM), hidden, restricted]
+ IUnknown *_newEnum();
+
+ [id(DISPID_IHTMLWINDOW2_SHOWMODALDIALOG)]
+ VARIANT showModalDialog(
+ [in] BSTR dialog,
+ [in, optional] VARIANT *varArgIn,
+ [in, optional] VARIANT *varOptions);
+
+ [id(DISPID_IHTMLWINDOW2_SHOWHELP)]
+ void showHelp(
+ [in] BSTR helpURL,
+ [in, optional] VARIANT helpArg,
+ [in, defaultvalue("")] BSTR features);
+
+ [propget, id(DISPID_IHTMLWINDOW2_SCREEN)]
+ IHTMLScreen *screen();
+
+ [propget, id(DISPID_IHTMLWINDOW2_OPTION)]
+ IHTMLOptionElementFactory *Option();
+
+ [id(DISPID_IHTMLWINDOW2_FOCUS)]
+ void focus();
+
+ [propget, id(DISPID_IHTMLWINDOW2_CLOSED)]
+ VARIANT_BOOL closed();
+
+ [id(DISPID_IHTMLWINDOW2_BLUR)]
+ void blur();
+
+ [id(DISPID_IHTMLWINDOW2_SCROLL)]
+ void scroll([in] long x, [in] long y);
+
+ [propget, id(DISPID_IHTMLWINDOW2_CLIENTINFORMATION)]
+ IOmNavigator *clientInformation();
+
+ [id(DISPID_IHTMLWINDOW2_CLEARINTERVAL)]
+ void clearInterval([in] long timerID);
+
+ [propput, id(DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)]
+ void offscreenBuffering(VARIANT v);
+
+ [propget, id(DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)]
+ VARIANT offscreenBuffering();
+
+ [id(DISPID_IHTMLWINDOW2_EXECSCRIPT)]
+ VARIANT execScript(
+ [in] BSTR _code,
+ [in, defaultvalue("JScript")] BSTR language);
+
+ [id(DISPID_IHTMLWINDOW2_TOSTRING)]
+ BSTR toString();
+
+ [id(DISPID_IHTMLWINDOW2_SCROLLBY)]
+ void scrollBy([in] long x, [in] long y);
+
+ [id(DISPID_IHTMLWINDOW2_SCROLLTO)]
+ void scrollTo([in] long x, [in] long y);
+
+ [id(DISPID_IHTMLWINDOW2_MOVETO)]
+ void moveTo([in] long x, [in] long y);
+
+ [id(DISPID_IHTMLWINDOW2_MOVEBY)]
+ void moveBy([in] long x, [in] long y);
+
+ [id(DISPID_IHTMLWINDOW2_RESIZETO)]
+ void resizeTo([in] long x, [in] long y);
+
+ [id(DISPID_IHTMLWINDOW2_RESIZEBY)]
+ void resizeBy([in] long x, [in] long y);
+
+ [propget, id(DISPID_IHTMLWINDOW2_EXTERNAL)]
+ IDispatch *external();
+
+ [propget, id(DISPID_IHTMLWINDOW3_SCREENLEFT)]
+ long screenLeft();
+
+ [propget, id(DISPID_IHTMLWINDOW3_SCREENTOP)]
+ long screenTop();
+
+ [id(DISPID_IHTMLWINDOW3_ATTACHEVENT)]
+ VARIANT_BOOL attachEvent(
+ [in] BSTR event,
+ [in] IDispatch *pDisp);
+
+ [id(DISPID_IHTMLWINDOW3_DETACHEVENT)]
+ void detachEvent(
+ [in] BSTR event,
+ [in] IDispatch *pDisp);
+
+ [id(DISPID_IHTMLWINDOW3_SETTIMEOUT)]
+ long setTimeout(
+ [in] VARIANT *expression,
+ [in] long msec,
+ [in, optional] VARIANT *language);
+
+ [id(DISPID_IHTMLWINDOW3_SETINTERVAL)]
+ long setInterval(
+ [in] VARIANT *expression,
+ [in] long msec,
+ [in, optional] VARIANT *language);
+
+ [id(DISPID_IHTMLWINDOW3_PRINT)]
+ void print();
+
+ [propput, id(DISPID_IHTMLWINDOW3_ONBEFOREPRINT), displaybind, bindable]
+ void onbeforeprint(VARIANT v);
+
+ [propget, id(DISPID_IHTMLWINDOW3_ONBEFOREPRINT), displaybind, bindable]
+ VARIANT onbeforeprint();
+
+ [propput, id(DISPID_IHTMLWINDOW3_ONAFTERPRINT), displaybind, bindable]
+ void onafterprint(VARIANT v);
+
+ [propget, id(DISPID_IHTMLWINDOW3_ONAFTERPRINT), displaybind, bindable]
+ VARIANT onafterprint();
+
+ [propget, id(DISPID_IHTMLWINDOW3_CLIPBOARDDATA)]
+ IHTMLDataTransfer *clipboardData();
+
+ [id(DISPID_IHTMLWINDOW3_SHOWMODELESSDIALOG)]
+ IHTMLWindow2 *showModelessDialog(
+ [in, defaultvalue("")] BSTR url,
+ [in, optional] VARIANT *varArgIn,
+ [in, optional] VARIANT *options);
+
+ [id(DISPID_IHTMLWINDOW4_CREATEPOPUP)]
+ IDispatch *createPopup([in, optional] VARIANT *varArgIn);
+
+ [propget, id(DISPID_IHTMLWINDOW4_FRAMEELEMENT)]
+ IHTMLFrameBase *frameElement();
+}
+
/*****************************************************************************
* HTMLDocumentEvents2 interface
*/
@@ -6236,6 +13269,955 @@ coclass HTMLDocument
interface IHTMLDOMNode2;
}
+/*****************************************************************************
+ * IHTMLCommentElement interface
+ */
+[
+ odl,
+ oleautomation,
+ dual,
+ uuid(3050f20c-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLCommentElement : IDispatch
+{
+ [propput, id(DISPID_IHTMLCOMMENTELEMENT_TEXT), displaybind, bindable]
+ HRESULT text([in] BSTR v);
+
+ [propget, id(DISPID_IHTMLCOMMENTELEMENT_TEXT), displaybind, bindable]
+ HRESULT text([out, retval] BSTR *p);
+
+ [propput, id(DISPID_IHTMLCOMMENTELEMENT_ATOMIC), displaybind, bindable]
+ HRESULT atomic([in] long v);
+
+ [propget, id(DISPID_IHTMLCOMMENTELEMENT_ATOMIC), displaybind, bindable]
+ HRESULT atomic([out, retval] long *p);
+}
+
+/*****************************************************************************
+ * IHTMLCommentElement2 interface
+ */
+[
+ odl,
+ oleautomation,
+ dual,
+ uuid(3050f813-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLCommentElement2 : IDispatch
+{
+ [propput, id(DISPID_IHTMLCOMMENTELEMENT2_DATA)]
+ HRESULT data([in] BSTR v);
+
+ [propget, id(DISPID_IHTMLCOMMENTELEMENT2_DATA)]
+ HRESULT data([out, retval] BSTR *p);
+
+ [propget, id(DISPID_IHTMLCOMMENTELEMENT2_LENGTH)]
+ HRESULT length([out, retval] long *p);
+
+ [id(DISPID_IHTMLCOMMENTELEMENT2_SUBSTRINGDATA)]
+ HRESULT substringData(
+ [in] long offset,
+ [in] long Count,
+ [out, retval] BSTR *pbstrsubString);
+
+ [id(DISPID_IHTMLCOMMENTELEMENT2_APPENDDATA)]
+ HRESULT appendData([in] BSTR bstrstring);
+
+ [id(DISPID_IHTMLCOMMENTELEMENT2_INSERTDATA)]
+ HRESULT insertData(
+ [in] long offset,
+ [in] BSTR bstrstring);
+
+ [id(DISPID_IHTMLCOMMENTELEMENT2_DELETEDATA)]
+ HRESULT deleteData(
+ [in] long offset,
+ [in] long Count);
+
+ [id(DISPID_IHTMLCOMMENTELEMENT2_REPLACEDATA)]
+ HRESULT replaceData(
+ [in] long offset,
+ [in] long Count,
+ [in] BSTR bstrstring);
+}
+
+/*****************************************************************************
+ * DispHTMLCommentElement dispinterface
+ */
+[
+ hidden,
+ uuid(3050f50a-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLCommentElement
+{
+properties:
+methods:
+ [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
+ void setAttribute(
+ [in] BSTR strAttributeName,
+ [in] VARIANT AttributeValue,
+ [in, defaultvalue(1)] LONG lFlags);
+
+ [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
+ VARIANT getAttribute(
+ [in] BSTR strAttributeName,
+ [in, defaultvalue(0)] LONG lFlags);
+
+ [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
+ VARIANT_BOOL removeAttribute(
+ [in] BSTR strAttributeName,
+ [in, defaultvalue(1)] LONG lFlags);
+
+ [propput, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+ void className(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+ BSTR className();
+
+ [propput, id(DISPID_IHTMLELEMENT_ID), bindable]
+ void id(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ID), bindable]
+ BSTR id();
+
+ [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
+ BSTR tagName();
+
+ [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
+ IHTMLElement *parentElement();
+
+ [propget, id(DISPID_IHTMLELEMENT_STYLE), nonbrowsable]
+ IHTMLStyle *style();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+ void onhelp(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+ VARIANT onhelp();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+ void onclick(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+ VARIANT onclick();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+ void ondblclick(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+ VARIANT ondblclick();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+ void onkeydown(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+ VARIANT onkeydown();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+ void onkeyup(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+ VARIANT onkeyup();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+ void onkeypress(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+ VARIANT onkeypress();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+ void onmouseout(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+ VARIANT onmouseout();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+ void onmouseover(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+ VARIANT onmouseover();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+ void onmousemove(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+ VARIANT onmousemove();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+ void onmousedown(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+ VARIANT onmousedown();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+ void onmouseup(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+ VARIANT onmouseup();
+
+ [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
+ IDispatch *document();
+
+ [propput, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+ void title(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+ BSTR title();
+
+ [propput, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+ void language(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+ BSTR language();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+ void onselectstart(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+ VARIANT onselectstart();
+
+ [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
+ void scrollIntoView([in, optional] VARIANT varargStart);
+
+ [id(DISPID_IHTMLELEMENT_CONTAINS)]
+ VARIANT_BOOL contains([in] IHTMLElement *pChild);
+
+ [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX), bindable]
+ long sourceIndex();
+
+ [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
+ VARIANT recordNumber();
+
+ [propput, id(DISPID_IHTMLELEMENT_LANG)]
+ void lang(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_LANG)]
+ BSTR lang();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
+ long offsetLeft();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
+ long offsetTop();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
+ long offsetWidth();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
+ long offsetHeight();
+
+ [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
+ IHTMLElement *offsetParent();
+
+ [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
+ void innerHTML(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
+ BSTR innerHTML();
+
+ [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+ void innerText(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+ BSTR innerText();
+
+ [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+ void outerHTML(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+ BSTR outerHTML();
+
+ [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+ void outerText(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+ BSTR outerText();
+
+ [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
+ void insertAdjacentHTML(
+ [in] BSTR where,
+ [in] BSTR html);
+
+ [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
+ void insertAdjacentText(
+ [in] BSTR where,
+ [in] BSTR text);
+
+ [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
+ IHTMLElement *parentTextEdit();
+
+ [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
+ VARIANT_BOOL isTextEdit();
+
+ [id(DISPID_IHTMLELEMENT_CLICK)]
+ void click();
+
+ [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
+ IHTMLFiltersCollection *filters();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+ void ondragstart(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+ VARIANT ondragstart();
+
+ [id(DISPID_IHTMLELEMENT_TOSTRING)]
+ BSTR toString();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+ void onbeforeupdate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+ VARIANT onbeforeupdate();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+ void onafterupdate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+ VARIANT onafterupdate();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+ void onerrorupdate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+ VARIANT onerrorupdate();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+ void onrowexit(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+ VARIANT onrowexit();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+ void onrowenter(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+ VARIANT onrowenter();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+ void ondatasetchanged(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+ VARIANT ondatasetchanged();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+ void ondataavailable(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+ VARIANT ondataavailable();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+ void ondatasetcomplete(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+ VARIANT ondatasetcomplete();
+
+ [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+ void onfilterchange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+ VARIANT onfilterchange();
+
+ [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
+ IDispatch *children();
+
+ [propget, id(DISPID_IHTMLELEMENT_ALL)]
+ IDispatch *all();
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
+ BSTR scopeName();
+
+ [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
+ void setCapture([in, defaultvalue(-1)] VARIANT_BOOL containerCapture);
+
+ [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
+ void releaseCapture();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+ void onlosecapture(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+ VARIANT onlosecapture();
+
+ [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
+ BSTR componentFromPoint(
+ [in] long x,
+ [in] long y);
+
+ [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
+ void doScroll([in, optional] VARIANT component);
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+ void onscroll(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+ VARIANT onscroll();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+ void ondrag(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+ VARIANT ondrag();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+ void ondragend(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+ VARIANT ondragend();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+ void ondragenter(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+ VARIANT ondragenter();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+ void ondragover(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+ VARIANT ondragover();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+ void ondragleave(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+ VARIANT ondragleave();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+ void ondrop(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+ VARIANT ondrop();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+ void onbeforecut(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+ VARIANT onbeforecut();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+ void oncut(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+ VARIANT oncut();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+ void onbeforecopy(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+ VARIANT onbeforecopy();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+ void oncopy(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+ VARIANT oncopy();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+ void onbeforepaste(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+ VARIANT onbeforepaste();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+ void onpaste(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+ VARIANT onpaste();
+
+ [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
+ IHTMLCurrentStyle *currentStyle();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+ void onpropertychange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+ VARIANT onpropertychange();
+
+ [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
+ IHTMLRectCollection *getClientRects();
+
+ [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
+ IHTMLRect *getBoundingClientRect();
+
+ [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
+ void setExpression(
+ [in] BSTR propname,
+ [in] BSTR expression,
+ [in, defaultvalue("")] BSTR language);
+
+ [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
+ VARIANT getExpression([in] BSTR propname);
+
+ [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
+ VARIANT_BOOL removeExpression([in] BSTR propname);
+
+ [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+ void tabIndex(short v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+ short tabIndex();
+
+ [id(DISPID_IHTMLELEMENT2_FOCUS)]
+ void focus();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+ void accessKey(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+ BSTR accessKey();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+ void onblur(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+ VARIANT onblur();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+ void onfocus(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+ VARIANT onfocus();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+ void onresize(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+ VARIANT onresize();
+
+ [id(DISPID_IHTMLELEMENT2_BLUR)]
+ void blur();
+
+ [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
+ void addFilter([in] IUnknown *pUnk);
+
+ [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
+ void removeFilter([in] IUnknown *pUnk);
+
+ [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
+ long clientHeight();
+
+ [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
+ long clientWidth();
+
+ [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
+ long clientTop();
+
+ [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
+ long clientLeft();
+
+ [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
+ VARIANT_BOOL attachEvent(
+ [in] BSTR event,
+ [in] IDispatch *pDisp);
+
+ [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
+ void detachEvent(
+ [in] BSTR event,
+ [in] IDispatch *pDisp);
+
+ [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
+ VARIANT readyState();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+ void onreadystatechange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+ VARIANT onreadystatechange();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+ void onrowsdelete(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+ VARIANT onrowsdelete();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+ void onrowsinserted(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+ VARIANT onrowsinserted();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+ void oncellchange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+ VARIANT oncellchange();
+
+ [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+ void dir(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+ BSTR dir();
+
+ [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
+ IDispatch *createControlRange();
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
+ long scrollHeight();
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
+ long scrollWidth();
+
+ [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+ void scrollTop(long v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+ long scrollTop();
+
+ [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+ void scrollLeft(long v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+ long scrollLeft();
+
+ [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
+ void clearAttributes();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+ void oncontextmenu(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+ VARIANT oncontextmenu();
+
+ [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
+ IHTMLElement *insertAdjacentElement(
+ [in] BSTR where,
+ [in] IHTMLElement *insertedElement);
+
+ [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
+ IHTMLElement *applyElement(
+ [in] IHTMLElement *apply,
+ [in] BSTR where);
+
+ [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
+ BSTR getAdjacentText([in] BSTR where);
+
+ [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
+ BSTR replaceAdjacentText(
+ [in] BSTR where,
+ [in] BSTR newText);
+
+ [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
+ VARIANT_BOOL canHaveChildren();
+
+ [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
+ long addBehavior(
+ [in] BSTR bstrUrl,
+ [in, optional] VARIANT *pvarFactory);
+
+ [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
+ VARIANT_BOOL removeBehavior([in] long cookie);
+
+ [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
+ IHTMLStyle *runtimeStyle();
+
+ [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
+ IDispatch *behaviorUrns();
+
+ [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
+ void tagUrn(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
+ BSTR tagUrn();
+
+ [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+ void onbeforeeditfocus(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+ VARIANT onbeforeeditfocus();
+
+ [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
+ long readyStateValue();
+
+ [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
+ IHTMLElementCollection *getElementsByTagName([in] BSTR v);
+
+ [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)]
+ void mergeAttributes(
+ [in] IHTMLElement *mergeThis,
+ [in, optional] VARIANT *pvarFlags);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
+ VARIANT_BOOL isMultiLine();
+
+ [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
+ VARIANT_BOOL canHaveHTML();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+ void onlayoutcomplete(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+ VARIANT onlayoutcomplete();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+ void onpage(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+ VARIANT onpage();
+
+ [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+ void inflateBlock(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+ VARIANT_BOOL inflateBlock();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+ void onbeforedeactivate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+ VARIANT onbeforedeactivate();
+
+ [id(DISPID_IHTMLELEMENT3_SETACTIVE)]
+ void setActive();
+
+ [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+ void contentEditable(BSTR v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+ BSTR contentEditable();
+
+ [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
+ VARIANT_BOOL isContentEditable();
+
+ [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+ void hideFocus(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+ VARIANT_BOOL hideFocus();
+
+ [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+ void disabled(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+ VARIANT_BOOL disabled();
+
+ [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
+ VARIANT_BOOL isDisabled();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+ void onmove(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+ VARIANT onmove();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+ void oncontrolselect(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+ VARIANT oncontrolselect();
+
+ [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
+ VARIANT_BOOL fireEvent(
+ [in] BSTR bstrEventName,
+ [in, optional] VARIANT *pvarEventObject);
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+ void onresizestart(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+ VARIANT onresizestart();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+ void onresizeend(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+ VARIANT onresizeend();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+ void onmovestart(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+ VARIANT onmovestart();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+ void onmoveend(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+ VARIANT onmoveend();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+ void onmouseenter(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+ VARIANT onmouseenter();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+ void onmouseleave(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+ VARIANT onmouseleave();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+ void onactivate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+ VARIANT onactivate();
+
+ [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+ void ondeactivate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+ VARIANT ondeactivate();
+
+ [id(DISPID_IHTMLELEMENT3_DRAGDROP)]
+ VARIANT_BOOL dragDrop();
+
+ [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
+ LONG glyphMode();
+
+ [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+ void onmousewheel(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+ VARIANT onmousewheel();
+
+ [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
+ void normalize();
+
+ [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
+ IHTMLDOMAttribute *getAttributeNode([in] BSTR bstrname);
+
+ [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
+ IHTMLDOMAttribute *setAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+ [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
+ IHTMLDOMAttribute *removeAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+ [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+ void onbeforeactivate(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+ VARIANT onbeforeactivate();
+
+ [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+ void onfocusin(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+ VARIANT onfocusin();
+
+ [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+ void onfocusout(VARIANT v);
+
+ [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+ VARIANT onfocusout();
+
+ [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
+ long uniqueNumber();
+
+ [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
+ BSTR uniqueID();
+
+ [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
+ long nodeType();
+
+ [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
+ IHTMLDOMNode *parentNode();
+
+ [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
+ VARIANT_BOOL hasChildNodes();
+
+ [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
+ IDispatch *childNodes();
+
+ [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
+ IDispatch *attributes();
+
+ [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
+ IHTMLDOMNode *insertBefore(
+ [in] IHTMLDOMNode *newChild,
+ [in, optional] VARIANT refChild);
+
+ [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
+ IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
+
+ [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
+ IHTMLDOMNode *replaceChild(
+ [in] IHTMLDOMNode *newChild,
+ [in] IHTMLDOMNode *oldChild);
+
+ [id(DISPID_IHTMLDOMNODE_CLONENODE)]
+ IHTMLDOMNode *cloneNode([in] VARIANT_BOOL fDeep);
+
+ [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
+ IHTMLDOMNode *removeNode([in, defaultvalue(0)] VARIANT_BOOL fDeep);
+
+ [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
+ IHTMLDOMNode *swapNode([in] IHTMLDOMNode *otherNode);
+
+ [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
+ IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
+
+ [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
+ IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+
+ [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
+ BSTR nodeName();
+
+ [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+ void nodeValue(VARIANT v);
+
+ [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+ VARIANT nodeValue();
+
+ [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
+ IHTMLDOMNode *firstChild();
+
+ [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
+ IHTMLDOMNode *lastChild();
+
+ [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
+ IHTMLDOMNode *previousSibling();
+
+ [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
+ IHTMLDOMNode *nextSibling();
+
+ [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
+ IDispatch *ownerDocument();
+
+ [propput, id(DISPID_IHTMLCOMMENTELEMENT_TEXT), displaybind, bindable]
+ void text(BSTR v);
+
+ [propget, id(DISPID_IHTMLCOMMENTELEMENT_TEXT), displaybind, bindable]
+ BSTR text();
+
+ [propput, id(DISPID_IHTMLCOMMENTELEMENT_ATOMIC), displaybind, bindable]
+ void atomic(long v);
+
+ [propget, id(DISPID_IHTMLCOMMENTELEMENT_ATOMIC), displaybind, bindable]
+ long atomic();
+
+ [propput, id(DISPID_IHTMLCOMMENTELEMENT2_DATA)]
+ void data(BSTR v);
+
+ [propget, id(DISPID_IHTMLCOMMENTELEMENT2_DATA)]
+ BSTR data();
+
+ [propget, id(DISPID_IHTMLCOMMENTELEMENT2_LENGTH)]
+ long length();
+
+ [id(DISPID_IHTMLCOMMENTELEMENT2_SUBSTRINGDATA)]
+ BSTR substringData(
+ [in] long offset,
+ [in] long Count);
+
+ [id(DISPID_IHTMLCOMMENTELEMENT2_APPENDDATA)]
+ void appendData([in] BSTR bstrstring);
+
+ [id(DISPID_IHTMLCOMMENTELEMENT2_INSERTDATA)]
+ void insertData(
+ [in] long offset,
+ [in] BSTR bstrstring);
+
+ [id(DISPID_IHTMLCOMMENTELEMENT2_DELETEDATA)]
+ void deleteData(
+ [in] long offset,
+ [in] long Count);
+
+ [id(DISPID_IHTMLCOMMENTELEMENT2_REPLACEDATA)]
+ void replaceData(
+ [in] long offset,
+ [in] long Count,
+ [in] BSTR bstrstring);
+}
+
/*****************************************************************************
* HTMLTableEvents dispinterface
*/
@@ -6737,6 +14719,72 @@ interface IHTMLScriptElement2 : IDispatch
HRESULT charset([retval, out] BSTR *p);
}
+/*****************************************************************************
+ * IHTMLFrameBase interface
+ */
+[
+ odl,
+ oleautomation,
+ dual,
+ uuid(3050f311-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLFrameBase : IDispatch
+{
+ [propput, id(DISPID_IHTMLFRAMEBASE_SRC)]
+ HRESULT src([in] BSTR v);
+
+ [propget, id(DISPID_IHTMLFRAMEBASE_SRC)]
+ HRESULT src([out, retval] BSTR *p);
+
+ [propput, id(DISPID_IHTMLFRAMEBASE_NAME)]
+ HRESULT name([in] BSTR v);
+
+ [propget, id(DISPID_IHTMLFRAMEBASE_NAME)]
+ HRESULT name([out, retval] BSTR *p);
+
+ [propput, id(DISPID_IHTMLFRAMEBASE_BORDER)]
+ HRESULT border([in] VARIANT v);
+
+ [propget, id(DISPID_IHTMLFRAMEBASE_BORDER)]
+ HRESULT border([out, retval] VARIANT *p);
+
+ [propput, id(DISPID_IHTMLFRAMEBASE_FRAMEBORDER)]
+ HRESULT frameBorder([in] BSTR v);
+
+ [propget, id(DISPID_IHTMLFRAMEBASE_FRAMEBORDER)]
+ HRESULT frameBorder([out, retval] BSTR *p);
+
+ [propput, id(DISPID_IHTMLFRAMEBASE_FRAMESPACING)]
+ HRESULT frameSpacing([in] VARIANT v);
+
+ [propget, id(DISPID_IHTMLFRAMEBASE_FRAMESPACING)]
+ HRESULT frameSpacing([out, retval] VARIANT *p);
+
+ [propput, id(DISPID_IHTMLFRAMEBASE_MARGINWIDTH)]
+ HRESULT marginWidth([in] VARIANT v);
+
+ [propget, id(DISPID_IHTMLFRAMEBASE_MARGINWIDTH)]
+ HRESULT marginWidth([out, retval] VARIANT *p);
+
+ [propput, id(DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)]
+ HRESULT marginHeight([in] VARIANT v);
+
+ [propget, id(DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)]
+ HRESULT marginHeight([out, retval] VARIANT *p);
+
+ [propput, id(DISPID_IHTMLFRAMEBASE_NORESIZE)]
+ HRESULT noResize([in] VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLFRAMEBASE_NORESIZE)]
+ HRESULT noResize([out, retval] VARIANT_BOOL *p);
+
+ [propput, id(DISPID_IHTMLFRAMEBASE_SCROLLING)]
+ HRESULT scrolling([in] BSTR v);
+
+ [propget, id(DISPID_IHTMLFRAMEBASE_SCROLLING)]
+ HRESULT scrolling([out, retval] BSTR *p);
+}
+
/*****************************************************************************
* IHTMLFrameBase2 interface
*/
diff --git a/reactos/include/psdk/psdk.rbuild b/reactos/include/psdk/psdk.rbuild
index 7394fede3a9..2e404c1ba54 100644
--- a/reactos/include/psdk/psdk.rbuild
+++ b/reactos/include/psdk/psdk.rbuild
@@ -1,6 +1,8 @@
+ activaut.idl
+ activdbg.idl
activscp.idl
control.idl
dimm.idl
diff --git a/reactos/include/psdk/urlhist.idl b/reactos/include/psdk/urlhist.idl
index 7d5843e9fbf..0dde4829aa0 100644
--- a/reactos/include/psdk/urlhist.idl
+++ b/reactos/include/psdk/urlhist.idl
@@ -41,7 +41,7 @@ typedef enum _ADDURL_FLAG
interface IEnumSTATURL : IUnknown
{
typedef [unique] IEnumSTATURL *LPENUMSTATURL;
-
+
typedef struct _STATURL
{
DWORD cbSize;
@@ -78,7 +78,7 @@ interface IEnumSTATURL : IUnknown
interface IUrlHistoryStg : IUnknown
{
typedef [unique] IUrlHistoryStg *LPURLHISTORYSTG;
-
+
HRESULT AddUrl(
[in] LPCOLESTR pocsUrl,
[in, unique] LPCOLESTR pocsTitle,
@@ -92,14 +92,14 @@ interface IUrlHistoryStg : IUnknown
[in] LPCOLESTR pocsUrl,
[in] DWORD dwFlags,
[in, out, unique] LPSTATURL lpSTATURL);
-
+
HRESULT BindToObject(
[in] LPCOLESTR pocsUrl,
[in] REFIID riid,
[out, iid_is(riid)] void **ppvOut);
HRESULT EnumUrls(
- [out] IEnumSTATURL **ppEnum);
+ [out] IEnumSTATURL **ppEnum);
}
/*****************************************************************************
diff --git a/reactos/include/psdk/urlmon.idl b/reactos/include/psdk/urlmon.idl
index 9e03543c303..83bc58bb5a2 100644
--- a/reactos/include/psdk/urlmon.idl
+++ b/reactos/include/psdk/urlmon.idl
@@ -833,7 +833,8 @@ interface IInternetProtocolInfo : IUnknown
QUERY_IS_CACHED_OR_MAPPED,
QUERY_USES_CACHE,
QUERY_IS_SECURE,
- QUERY_IS_SAFE
+ QUERY_IS_SAFE,
+ QUERY_USES_HISTORYFOLDER
} QUERYOPTION;
HRESULT ParseUrl(