Added an IDL file for Richedit's OLE interface.

diff --git a/include/.cvsignore b/include/.cvsignore
index cf258c7..886929f 100644
--- a/include/.cvsignore
+++ b/include/.cvsignore
@@ -19,6 +19,7 @@
 oleidl.h
 propidl.h
 pstore.h
+richole.h
 servprov.h
 shldisp.h
 shobjidl.h
diff --git a/include/Makefile.in b/include/Makefile.in
index 83a3e73..8fd4227 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -24,6 +24,7 @@
 	oleidl.idl \
 	propidl.idl \
 	pstore.idl \
+	richole.idl \
 	servprov.idl \
 	shldisp.idl \
 	shobjidl.idl \
@@ -184,7 +185,6 @@
 	reason.h \
 	regstr.h \
 	richedit.h \
-	richole.h \
 	rpc.h \
 	rpcdce.h \
 	rpcdcep.h \
diff --git a/include/richedit.h b/include/richedit.h
index 9cab33e..185027b 100644
--- a/include/richedit.h
+++ b/include/richedit.h
@@ -354,12 +354,17 @@
 #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
 {
     CHARRANGE chrg;
diff --git a/include/richole.h b/include/richole.h
deleted file mode 100644
index a213ea0..0000000
--- a/include/richole.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2002 Andriy Palamarchuk
- *
- * 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
- */
-
-#ifndef __WINE_RICHOLE_H
-#define __WINE_RICHOLE_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* REOBJECT structure flags */
-#define REO_GETOBJ_NO_INTERFACES        0x00000000
-#define REO_GETOBJ_POLEOBJ              0x00000001
-#define REO_GETOBJ_PSTG                 0x00000002
-#define REO_GETOBJ_POLESITE             0x00000004
-#define REO_GETOBJ_ALL_INTERFACES       0x00000007
-#define REO_CP_SELECTION                0xFFFFFFFF
-#define REO_IOB_SELECTION               0xFFFFFFFF
-#define REO_IOB_USE_CP                  0xFFFFFFFE
-#define REO_NULL                        0x00000000
-#define REO_READWRITEMASK               0x0000003F
-#define REO_DONTNEEDPALETTE             0x00000020
-#define REO_BLANK                       0x00000010
-#define REO_DYNAMICSIZE                 0x00000008
-#define REO_INVERTEDSELECT              0x00000004
-#define REO_BELOWBASELINE               0x00000002
-#define REO_RESIZABLE                   0x00000001
-#define REO_LINK                        0x80000000
-#define REO_STATIC                      0x40000000
-#define REO_SELECTED                    0x08000000
-#define REO_OPEN                        0x04000000
-#define REO_INPLACEACTIVE               0x02000000
-#define REO_HILITED                     0x01000000
-#define REO_LINKAVAILABLE               0x00800000
-#define REO_GETMETAFILE                 0x00400000
-
-/* clipboard operation flags */
-#define RECO_PASTE            0x00000000
-#define RECO_DROP             0x00000001
-#define RECO_COPY             0x00000002
-#define RECO_CUT              0x00000003
-#define RECO_DRAG             0x00000004
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __WINE_RICHOLE_H */
diff --git a/include/richole.idl b/include/richole.idl
new file mode 100644
index 0000000..4d8d1a1
--- /dev/null
+++ b/include/richole.idl
@@ -0,0 +1,107 @@
+/*
+ * 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
+ */
+
+cpp_quote("#if 0");  /* not included on Windows */
+import "oleidl.idl";
+cpp_quote("#endif");
+
+/* 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,
+  uuid(00020d00-0000-0000-c000-000000000046),
+  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);
+}