add an IDL file for Richedit's OLE interface
Mike McCormack
mike at codeweavers.com
Sun Oct 17 03:54:35 CDT 2004
The Windows Platform SDK does not have an IDL definition for the
Richedit OLE interface, however using an IDL file makes maintainence
easier and provides the opportunity to generate typelibs or proxy/stub
code if necessary.
I had to modify richedit.h slightly to make sure we don't redefine the
CHARRANGE structure when richedit.h and richole.h are included together.
You may remove richole.h after adding this patch.
Mike
ChangeLog:
* add an IDL file for Richedit's OLE interface
-------------- next part --------------
Index: include/richedit.h
===================================================================
RCS file: /home/wine/wine/include/richedit.h,v
retrieving revision 1.19
diff -u -r1.19 richedit.h
--- include/richedit.h 30 Aug 2004 18:40:34 -0000 1.19
+++ include/richedit.h 17 Oct 2004 07:07:51 -0000
@@ -354,11 +354,16 @@
#define ENM_IMECHANGE 0x00800000
#define ENM_LINK 0x04000000
+#ifndef __RICHEDIT_CHARRANGE_DEFINED
+#define __RICHEDIT_CHARRANGE_DEFINED
+
typedef struct _charrange
{
LONG cpMin;
LONG cpMax;
} CHARRANGE;
+
+#endif /* __RICHEDIT_CHARRANGE_DEFINED */
typedef struct _textrange
{
Index: include/Makefile.in
===================================================================
RCS file: /home/wine/wine/include/Makefile.in,v
retrieving revision 1.147
diff -u -r1.147 Makefile.in
--- include/Makefile.in 8 Oct 2004 20:50:08 -0000 1.147
+++ include/Makefile.in 17 Oct 2004 07:07:51 -0000
@@ -24,6 +24,7 @@
oleidl.idl \
propidl.idl \
pstore.idl \
+ richole.idl \
servprov.idl \
shldisp.idl \
shobjidl.idl \
--- /dev/null 1994-07-18 08:46:18.000000000 +0900
+++ include/richole.idl 2004-10-17 17:45:21.000000000 +0900
@@ -0,0 +1,105 @@
+/*
+ * Copyright (C) 2002 Andriy Palamarchuk
+ * Copyright (C) 2004 Mike McCormack
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+import "oaidl.idl";
+import "oleidl.idl";
+
+/* REOBJECT structure flags */
+cpp_quote("#define REO_GETOBJ_NO_INTERFACES 0x00000000");
+cpp_quote("#define REO_GETOBJ_POLEOBJ 0x00000001");
+cpp_quote("#define REO_GETOBJ_PSTG 0x00000002");
+cpp_quote("#define REO_GETOBJ_POLESITE 0x00000004");
+cpp_quote("#define REO_GETOBJ_ALL_INTERFACES 0x00000007");
+cpp_quote("#define REO_CP_SELECTION 0xFFFFFFFF");
+cpp_quote("#define REO_IOB_SELECTION 0xFFFFFFFF");
+cpp_quote("#define REO_IOB_USE_CP 0xFFFFFFFE");
+cpp_quote("#define REO_NULL 0x00000000");
+cpp_quote("#define REO_READWRITEMASK 0x0000003F");
+cpp_quote("#define REO_DONTNEEDPALETTE 0x00000020");
+cpp_quote("#define REO_BLANK 0x00000010");
+cpp_quote("#define REO_DYNAMICSIZE 0x00000008");
+cpp_quote("#define REO_INVERTEDSELECT 0x00000004");
+cpp_quote("#define REO_BELOWBASELINE 0x00000002");
+cpp_quote("#define REO_RESIZABLE 0x00000001");
+cpp_quote("#define REO_LINK 0x80000000");
+cpp_quote("#define REO_STATIC 0x40000000");
+cpp_quote("#define REO_SELECTED 0x08000000");
+cpp_quote("#define REO_OPEN 0x04000000");
+cpp_quote("#define REO_INPLACEACTIVE 0x02000000");
+cpp_quote("#define REO_HILITED 0x01000000");
+cpp_quote("#define REO_LINKAVAILABLE 0x00800000");
+cpp_quote("#define REO_GETMETAFILE 0x00400000");
+
+/* clipboard operation flags */
+cpp_quote("#define RECO_PASTE 0x00000000");
+cpp_quote("#define RECO_DROP 0x00000001");
+cpp_quote("#define RECO_COPY 0x00000002");
+cpp_quote("#define RECO_CUT 0x00000003");
+cpp_quote("#define RECO_DRAG 0x00000004");
+
+typedef struct _reobject {
+ DWORD cbStruct;
+ LONG cp;
+ CLSID clsid;
+ LPOLEOBJECT poleobj;
+ LPSTORAGE pstg;
+ LPOLECLIENTSITE polesite;
+ SIZEL sizel;
+ DWORD dvaspect;
+ DWORD dwFlags;
+ DWORD dwUser;
+} REOBJECT;
+
+cpp_quote("#ifndef __RICHEDIT_CHARRANGE_DEFINED");
+cpp_quote("#define __RICHEDIT_CHARRANGE_DEFINED");
+
+typedef struct _charrange
+{
+ LONG cpMin;
+ LONG cpMax;
+} CHARRANGE;
+
+cpp_quote("#endif /* __RICHEDIT_CHARRANGE_DEFINED */");
+
+/*****************************************************************************
+ * IRichEditOle
+ */
+[
+ object,
+ pointer_default(unique)
+]
+interface IRichEditOle : IUnknown
+{
+ HRESULT GetClientSite(LPOLECLIENTSITE *lplpolesite);
+ HRESULT GetObjectCount();
+ HRESULT GetLinkCount();
+ HRESULT GetObject(LONG iob, REOBJECT *lpreobject, DWORD dwFlags);
+ HRESULT InsertObject(REOBJECT *lpreobject);
+ HRESULT ConvertObject(LONG iob, REFCLSID rclsidNew, LPCSTR lpstrUserTypeNew);
+ HRESULT ActivateAs(REFCLSID rclsid, REFCLSID rclsidAs);
+ HRESULT SetHostNames(LPCSTR lpstrContainerApp, LPCSTR lpstrContainerObj);
+ HRESULT SetLinkAvailable(LONG iob, BOOL fAvailable);
+ HRESULT SetDvaspect(LONG iob, DWORD dvaspect);
+ HRESULT HandsOffStorage(LONG iob);
+ HRESULT SaveCompleted(LONG iob, LPSTORAGE lpstg);
+ HRESULT InPlaceDeactivate();
+ HRESULT ContextSensitiveHelp(BOOL fEnterMode);
+ HRESULT GetClipboardData(CHARRANGE* lpchrg, DWORD reco, LPDATAOBJECT *lplpdataobj);
+ HRESULT ImportDataObject(LPDATAOBJECT lpdataobj, CLIPFORMAT cf, HGLOBAL hMetaPict);
+}
More information about the wine-patches
mailing list