Signed-off-by: Alex Henrie alexhenrie24@gmail.com --- v4: Added threading attribute to DHTMLEdit and DHTMLSafe --- include/Makefile.in | 2 + include/dhtmldid.h | 67 +++++ include/dhtmled.idl | 718 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 787 insertions(+) create mode 100644 include/dhtmldid.h create mode 100644 include/dhtmled.idl
diff --git a/include/Makefile.in b/include/Makefile.in index fa1e42738b..430c4733af 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -58,6 +58,7 @@ IDL_SRCS = \ ddstream.idl \ devenum.idl \ devicetopology.idl \ + dhtmled.idl \ dimm.idl \ dispex.idl \ docobj.idl \ @@ -342,6 +343,7 @@ HEADER_SRCS = \ devpkey.h \ devpropdef.h \ dhcpcsdk.h \ + dhtmldid.h \ difxapi.h \ digitalv.h \ dinput.h \ diff --git a/include/dhtmldid.h b/include/dhtmldid.h new file mode 100644 index 0000000000..85c286a102 --- /dev/null +++ b/include/dhtmldid.h @@ -0,0 +1,67 @@ +/* + * Copyright 2017 Alex Henrie + * + * 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 + */ + +#define DISPID_LOADDOCUMENT 1 +#define DISPID_EXECCOMMAND 2 +#define DISPID_QUERYSTATUS 3 +#define DISPID_SAVEDOCUMENT 4 +#define DISPID_SETCONTEXTMENU 5 +#define DISPID_DOCUMENT 6 +#define DISPID_ACTIVATEAPPLETS 7 +#define DISPID_ACTIVATEACTIVEXCONTROLS 8 +#define DISPID_ACTIVATEDTCS 9 +#define DISPID_SHOWDETAILS 11 +#define DISPID_SHOWBORDERS 12 +#define DISPID_DHTMLEDITAPPEARANCE 13 +#define DISPID_DHTMLEDITSCROLLBARS 14 +#define DISPID_SCROLLBARAPPEARANCE 15 +#define DISPID_SOURCECODEPRESERVATION 16 +#define DISPID_DOCUMENTHTML 17 +#define DISPID_ABSOLUTEDROPMODE 18 +#define DISPID_SNAPTOGRIDX 19 +#define DISPID_SNAPTOGRIDY 20 +#define DISPID_SNAPTOGRID 21 +#define DISPID_ISDIRTY 22 +#define DISPID_CURRENTDOCUMENTPATH 23 +#define DISPID_BASEURL 24 +#define DISPID_DOCUMENTTITLE 25 +#define DISPID_BROWSEMODE 26 +#define DISPID_NEWDOCUMENT 27 +#define DISPID_PRINT 28 +#define DISPID_LOADURL 29 +#define DISPID_USEDIVONCR 30 +#define DISPID_FILTERSRCCODE 31 +#define DISPID_REFRESHDOC 32 +#define DISPID_BUSY 33 + +#define DISPID_DOCUMENTCOMPLETE 1 +#define DISPID_DISPLAYCHANGED 2 +#define DISPID_SHOWCONTEXTMENU 3 +#define DISPID_CONTEXTMENUACTION 4 +#define DISPID_ONMOUSEDOWN 5 +#define DISPID_ONMOUSEMOVE 6 +#define DISPID_ONMOUSEUP 7 +#define DISPID_ONMOUSEOUT 8 +#define DISPID_ONMOUSEOVER 9 +#define DISPID_ONCLICK 10 +#define DISPID_ONDBLCLICK 11 +#define DISPID_ONKEYDOWN 12 +#define DISPID_ONKEYPRESS 13 +#define DISPID_ONKEYUP 14 +#define DISPID_ONBLUR 15 +#define DISPID_ONREADYSTATECHANGE 16 diff --git a/include/dhtmled.idl b/include/dhtmled.idl new file mode 100644 index 0000000000..ce65fb98d2 --- /dev/null +++ b/include/dhtmled.idl @@ -0,0 +1,718 @@ +/* + * Copyright 2017 Alex Henrie + * + * 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 "oaidl.idl"; +import "ocidl.idl"; +import "docobj.idl"; +import "mshtml.idl"; + +#include "dhtmldid.h" + +[ + uuid(683364a1-b37d-11d1-adc5-006008a5848c), + version(1.0) +] +library DHTMLEDLib +{ + importlib("stdole2.tlb"); + + typedef + [ + uuid(7179FC44-B2E4-11d1-ADC5-006008A5848C) + ] + enum DHTMLEDITAPPEARANCE { + DEAPPEARANCE_FLAT, + DEAPPEARANCE_3D + } DHTMLEDITAPPEARANCE; + + typedef + [ + uuid(bf82426a-b961-11d1-adc5-006008a5848c) + ] + enum DHTMLEDITCMDF { + DECMDF_NOTSUPPORTED = 0, + DECMDF_DISABLED = 1, + DECMDF_ENABLED = 3, + DECMDF_LATCHED = 7, + DECMDF_NINCHED = 11 + } DHTMLEDITCMDF; + + typedef enum DHTMLEDITCMDID { + DECMD_BOLD = 5000, + DECMD_COPY = 5002, + DECMD_CUT, + DECMD_DELETE, + DECMD_DELETECELLS, + DECMD_DELETECOLS, + DECMD_DELETEROWS, + DECMD_FINDTEXT, + DECMD_FONT, + DECMD_GETBACKCOLOR, + DECMD_GETBLOCKFMT, + DECMD_GETBLOCKFMTNAMES, + DECMD_GETFONTNAME, + DECMD_GETFONTSIZE, + DECMD_GETFORECOLOR, + DECMD_HYPERLINK, + DECMD_IMAGE, + DECMD_INDENT, + DECMD_INSERTCELL, + DECMD_INSERTCOL, + DECMD_INSERTROW, + DECMD_INSERTTABLE, + DECMD_ITALIC, + DECMD_JUSTIFYCENTER, + DECMD_JUSTIFYLEFT, + DECMD_JUSTIFYRIGHT, + DECMD_LOCK_ELEMENT, + DECMD_MAKE_ABSOLUTE, + DECMD_MERGECELLS, + DECMD_ORDERLIST, + DECMD_OUTDENT, + DECMD_PASTE, + DECMD_REDO, + DECMD_REMOVEFORMAT, + DECMD_SELECTALL, + DECMD_SEND_BACKWARD, + DECMD_BRING_FORWARD, + DECMD_SEND_BELOW_TEXT, + DECMD_BRING_ABOVE_TEXT, + DECMD_SEND_TO_BACK, + DECMD_BRING_TO_FRONT, + DECMD_SETBACKCOLOR, + DECMD_SETBLOCKFMT, + DECMD_SETFONTNAME, + DECMD_SETFONTSIZE, + DECMD_SETFORECOLOR, + DECMD_SPLITCELL, + DECMD_UNDERLINE, + DECMD_UNDO, + DECMD_UNLINK, + DECMD_UNORDERLIST, + DECMD_PROPERTIES + } DHTMLEDITCMDID; + + [ + object, + uuid(ce04b590-2b1f-11d2-8d1e-00a0c959bc0a), + dual, + pointer_default(unique) + ] + interface IDHTMLSafe : IDispatch + { + [ + id(DISPID_EXECCOMMAND) + ] + HRESULT ExecCommand( + [in] DHTMLEDITCMDID cmd_id, + [in, defaultvalue(OLECMDEXECOPT_DODEFAULT)] OLECMDEXECOPT options, + [in, optional] VARIANT *code_in, + [out, retval] VARIANT *code_out + ); + + [ + id(DISPID_QUERYSTATUS) + ] + HRESULT QueryStatus( + [in] DHTMLEDITCMDID cmd_id, + [out, retval] DHTMLEDITCMDF *status + ); + + [ + id(DISPID_SETCONTEXTMENU) + ] + HRESULT SetContextMenu( + [in] VARIANT *strings, + [in] VARIANT *states + ); + + [ + id(DISPID_NEWDOCUMENT) + ] + HRESULT NewDocument(); + + [ + id(DISPID_LOADURL) + ] + HRESULT LoadURL( + [in] BSTR url + ); + + [ + id(DISPID_FILTERSRCCODE) + ] + HRESULT FilterSourceCode( + [in] BSTR in, + [out, retval] BSTR *out + ); + + [ + id(DISPID_REFRESHDOC) + ] + HRESULT Refresh(); + + [ + propget, + id(DISPID_DOCUMENT) + ] + HRESULT DOM( + [out, retval] IHTMLDocument2 **value + ); + + [ + propget, + id(DISPID_DOCUMENTHTML) + ] + HRESULT DocumentHTML( + [out, retval] BSTR *value + ); + + [ + propput, + id(DISPID_DOCUMENTHTML) + ] + HRESULT DocumentHTML( + [in] BSTR html + ); + + [ + propget, + id(DISPID_ACTIVATEAPPLETS) + ] + HRESULT ActivateApplets( + [out, retval] VARIANT_BOOL *value + ); + + [ + propput, + id(DISPID_ACTIVATEAPPLETS) + ] + HRESULT ActivateApplets( + [in] VARIANT_BOOL value + ); + + [ + propget, + id(DISPID_ACTIVATEACTIVEXCONTROLS) + ] + HRESULT ActivateActiveXControls( + [out, retval] VARIANT_BOOL *value + ); + + [ + propput, + id(DISPID_ACTIVATEACTIVEXCONTROLS) + ] + HRESULT ActivateActiveXControls( + [in] VARIANT_BOOL value + ); + + [ + propget, + id(DISPID_ACTIVATEDTCS) + ] + HRESULT ActivateDTCs( + [out, retval] VARIANT_BOOL *value + ); + + [ + propput, + id(DISPID_ACTIVATEDTCS) + ] + HRESULT ActivateDTCs( + [in] VARIANT_BOOL value + ); + + [ + propget, + id(DISPID_SHOWDETAILS) + ] + HRESULT ShowDetails( + [out, retval] VARIANT_BOOL *value + ); + + [ + propput, + id(DISPID_SHOWDETAILS) + ] + HRESULT ShowDetails( + [in] VARIANT_BOOL value + ); + + [ + propget, + id(DISPID_SHOWBORDERS) + ] + HRESULT ShowBorders( + [out, retval] VARIANT_BOOL *value + ); + + [ + propput, + id(DISPID_SHOWBORDERS) + ] + HRESULT ShowBorders( + [in] VARIANT_BOOL value + ); + + [ + propget, + id(DISPID_DHTMLEDITAPPEARANCE) + ] + HRESULT Appearance( + [out, retval] DHTMLEDITAPPEARANCE *value + ); + + [ + propput, + id(DISPID_DHTMLEDITAPPEARANCE) + ] + HRESULT Appearance( + [in] DHTMLEDITAPPEARANCE value + ); + + [ + propget, + id(DISPID_DHTMLEDITSCROLLBARS) + ] + HRESULT Scrollbars( + [out, retval] VARIANT_BOOL *value + ); + + [ + propput, + id(DISPID_DHTMLEDITSCROLLBARS) + ] + HRESULT Scrollbars( + [in] VARIANT_BOOL value + ); + + [ + propget, + id(DISPID_SCROLLBARAPPEARANCE) + ] + HRESULT ScrollbarAppearance( + [out, retval] DHTMLEDITAPPEARANCE *value + ); + + [ + propput, + id(DISPID_SCROLLBARAPPEARANCE) + ] + HRESULT ScrollbarAppearance( + [in] DHTMLEDITAPPEARANCE value + ); + + [ + propget, + id(DISPID_SOURCECODEPRESERVATION) + ] + HRESULT SourceCodePreservation( + [out, retval] VARIANT_BOOL *value + ); + + [ + propput, + id(DISPID_SOURCECODEPRESERVATION) + ] + HRESULT SourceCodePreservation( + [in] VARIANT_BOOL value + ); + + [ + propget, + id(DISPID_ABSOLUTEDROPMODE) + ] + HRESULT AbsoluteDropMode( + [out, retval] VARIANT_BOOL *value + ); + + [ + propput, + id(DISPID_ABSOLUTEDROPMODE) + ] + HRESULT AbsoluteDropMode( + [in] VARIANT_BOOL value + ); + + [ + propget, + id(DISPID_SNAPTOGRIDX) + ] + HRESULT SnapToGridX( + [out, retval] long *value + ); + + [ + propput, + id(DISPID_SNAPTOGRIDX) + ] + HRESULT SnapToGridX( + [in] long value + ); + + [ + propget, + id(DISPID_SNAPTOGRIDY) + ] + HRESULT SnapToGridY( + [out, retval] long *value + ); + + [ + propput, + id(DISPID_SNAPTOGRIDY) + ] + HRESULT SnapToGridY( + [in] long value + ); + + [ + propget, + id(DISPID_SNAPTOGRID) + ] + HRESULT SnapToGrid( + [out, retval] VARIANT_BOOL *value + ); + + [ + propput, + id(DISPID_SNAPTOGRID) + ] + HRESULT SnapToGrid( + [in] VARIANT_BOOL value + ); + + [ + propget, + id(DISPID_ISDIRTY) + ] + HRESULT IsDirty( + [out, retval] VARIANT_BOOL *value + ); + + [ + propget, + id(DISPID_CURRENTDOCUMENTPATH) + ] + HRESULT CurrentDocumentPath( + [out, retval] BSTR *value + ); + + [ + propget, + id(DISPID_BASEURL) + ] + HRESULT BaseURL( + [out, retval] BSTR *value + ); + + [ + propput, + id(DISPID_BASEURL) + ] + HRESULT BaseURL( + [in] BSTR value + ); + + [ + propget, + id(DISPID_DOCUMENTTITLE) + ] + HRESULT DocumentTitle( + [out, retval] BSTR *value + ); + + [ + propget, + id(DISPID_USEDIVONCR) + ] + HRESULT UseDivOnCarriageReturn( + [out, retval] VARIANT_BOOL *value + ); + + [ + propput, + id(DISPID_USEDIVONCR) + ] + HRESULT UseDivOnCarriageReturn( + [in] VARIANT_BOOL value + ); + + [ + propget, + id(DISPID_BUSY) + ] + HRESULT Busy( + [out, retval] VARIANT_BOOL *value + ); + }; + + [ + uuid(d1fc78e8-b380-11d1-adc5-006008a5848c) + ] + dispinterface _DHTMLSafeEvents + { + properties: + methods: + [ + id(DISPID_DOCUMENTCOMPLETE) + ] + void DocumentComplete(); + + [ + id(DISPID_DISPLAYCHANGED) + ] + void DisplayChanged(); + + [ + id(DISPID_SHOWCONTEXTMENU) + ] + void ShowContextMenu( + [in] long x, + [in] long y + ); + + [ + id(DISPID_CONTEXTMENUACTION) + ] + void ContextMenuAction( + [in] long index + ); + + [ + id(DISPID_ONMOUSEDOWN) + ] + void onmousedown(); + + [ + id(DISPID_ONMOUSEMOVE) + ] + void onmousemove(); + + [ + id(DISPID_ONMOUSEUP) + ] + void onmouseup(); + + [ + id(DISPID_ONMOUSEOUT) + ] + void onmouseout(); + + [ + id(DISPID_ONMOUSEOVER) + ] + void onmouseover(); + + [ + id(DISPID_ONCLICK) + ] + void onclick(); + + [ + id(DISPID_ONDBLCLICK) + ] + void ondblclick(); + + [ + id(DISPID_ONKEYDOWN) + ] + void onkeydown(); + + [ + id(DISPID_ONKEYPRESS) + ] + void onkeypress(); + + [ + id(DISPID_ONKEYUP) + ] + void onkeyup(); + + [ + id(DISPID_ONBLUR) + ] + void onblur(); + + [ + id(DISPID_ONREADYSTATECHANGE) + ] + void onreadystatechange(); + }; + + [ + uuid(2d360201-fff5-11d1-8d03-00a0c959bc0a), + threading(apartment) + ] + coclass DHTMLSafe + { + [default] interface IDHTMLSafe; + [default, source] interface _DHTMLSafeEvents; + }; + + [ + uuid(ce04b591-2b1f-11d2-8d1e-00a0c959bc0a), + dual, + pointer_default(unique) + ] + interface IDHTMLEdit : IDHTMLSafe + { + [ + id(DISPID_LOADDOCUMENT) + ] + HRESULT LoadDocument( + [in] VARIANT *path, + [in, optional] VARIANT *prompt + ); + + [ + id(DISPID_SAVEDOCUMENT) + ] + HRESULT SaveDocument( + [in] VARIANT *path, + [in, optional] VARIANT *prompt + ); + + [ + id(DISPID_PRINT) + ] + HRESULT PrintDocument( + [in, optional] VARIANT *prompt + ); + + [ + propget, + id(DISPID_BROWSEMODE) + ] + HRESULT BrowseMode( + [out, retval] VARIANT_BOOL *value + ); + + [ + propput, + id(DISPID_BROWSEMODE) + ] + HRESULT BrowseMode( + [in] VARIANT_BOOL value + ); + }; + + [ + uuid(588d5040-cf28-11d1-8cd3-00a0c959bc0a) + ] + dispinterface _DHTMLEditEvents + { + properties: + methods: + [ + id(DISPID_DOCUMENTCOMPLETE) + ] + void DocumentComplete(); + + [ + id(DISPID_DISPLAYCHANGED) + ] + void DisplayChanged(); + + [ + id(DISPID_SHOWCONTEXTMENU) + ] + void ShowContextMenu( + [in] long x, + [in] long y + ); + + [ + id(DISPID_CONTEXTMENUACTION) + ] + void ContextMenuAction( + [in] long index + ); + + [ + id(DISPID_ONMOUSEDOWN) + ] + void onmousedown(); + + [ + id(DISPID_ONMOUSEMOVE) + ] + void onmousemove(); + + [ + id(DISPID_ONMOUSEUP) + ] + void onmouseup(); + + [ + id(DISPID_ONMOUSEOUT) + ] + void onmouseout(); + + [ + id(DISPID_ONMOUSEOVER) + ] + void onmouseover(); + + [ + id(DISPID_ONCLICK) + ] + void onclick(); + + [ + id(DISPID_ONDBLCLICK) + ] + void ondblclick(); + + [ + id(DISPID_ONKEYDOWN) + ] + void onkeydown(); + + [ + id(DISPID_ONKEYPRESS) + ] + void onkeypress(); + + [ + id(DISPID_ONKEYUP) + ] + void onkeyup(); + + [ + id(DISPID_ONBLUR) + ] + void onblur(); + + [ + id(DISPID_ONREADYSTATECHANGE) + ] + void onreadystatechange(); + }; + + [ + uuid(2d360200-fff5-11d1-8d03-00a0c959bc0a), + threading(apartment) + ] + coclass DHTMLEdit + { + [default] interface IDHTMLEdit; + [default, source] interface _DHTMLEditEvents; + }; +}
On 07.12.2017 21:13, Alex Henrie wrote:
uuid(2d360200-fff5-11d1-8d03-00a0c959bc0a),
threading(apartment)
Since it's a widl extension, it requires __WIDL__ ifdef. See exdisp.idl for an example. Also, progid and vi_progid.
Thanks,
Jacek