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