Improved richedit headers.

diff --git a/dlls/richedit/riched32.h b/dlls/richedit/riched32.h
index 236bdaa..9753fc0 100644
--- a/dlls/richedit/riched32.h
+++ b/dlls/richedit/riched32.h
@@ -22,6 +22,8 @@
 #ifndef __WINE_RICHED32_H
 #define __WINE_RICHED32_H
 
+#include "windef.h"
+#include "winuser.h"
 #include "richedit.h"
 
 extern VOID RICHED32_Register (VOID);
diff --git a/include/Makefile.in b/include/Makefile.in
index 22b2246..4f18004 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -105,6 +105,7 @@
 	ras.h \
 	regstr.h \
 	richedit.h \
+	richole.h \
 	rpc.h \
 	rpcdce.h \
 	rpcdcep.h \
diff --git a/include/richedit.h b/include/richedit.h
index 5f305de..c1de5d8 100644
--- a/include/richedit.h
+++ b/include/richedit.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2000 Jean-Claude Batista
+ * 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
@@ -19,7 +20,6 @@
 #ifndef __WINE_RICHEDIT_H
 #define __WINE_RICHEDIT_H
 
-#include "windef.h"
 #include "pshpack4.h"
 
 #ifdef __cplusplus
@@ -156,14 +156,24 @@
 
 typedef DWORD (CALLBACK * EDITSTREAMCALLBACK)( DWORD, LPBYTE, LONG, LONG * );
 
+/* tab stops number limit */
+#define MAX_TAB_STOPS         0x00000020
+
 /* Rich edit control styles */
-#define ES_SAVESEL            0x00008000
-#define ES_SUNKEN             0x00004000
 #define ES_DISABLENOSCROLL    0x00002000
-#define ES_SELECTIONBAR       0x01000000
-#define ES_VERTICAL           0x00400000
-#define ES_NOIME              0x00080000
+#define ES_SUNKEN             0x00004000
+#define ES_SAVESEL            0x00008000
 #define ES_SELFIME            0x00040000
+#define ES_NOIME              0x00080000
+#define ES_VERTICAL           0x00400000
+#define ES_EX_NOCALLOLEINIT   0x01000000
+
+/* the character formatting options */
+#define SCF_DEFAULT           0x00000000
+#define SCF_SELECTION         0x00000001
+#define SCF_WORD              0x00000002
+#define SCF_ALL               0x00000004
+#define SCF_USEUIRULES        0x00000008
 
 /* CHARFORMAT structure */
 typedef struct _charformat
@@ -194,17 +204,84 @@
 
 DECL_WINELIB_TYPE_AW(CHARFORMAT)
 
+typedef struct _charformat2a {
+    UINT       cbSize;
+    DWORD      dwMask;
+    DWORD      dwEffects;
+    LONG       yHeight;
+    LONG       yOffset;
+    COLORREF   crTextColor;
+    BYTE       bCharSet;
+    BYTE       bPitchAndFamily;
+    char       szFaceName[LF_FACESIZE];
+    WORD       wWeight;
+    SHORT      sSpacing;
+    COLORREF   crBackColor;
+    LCID       lcid;
+    DWORD      dwReserved;
+    SHORT      sStyle;
+    WORD       wKerning;
+    BYTE       bUnderlineType;
+    BYTE       bAnimation;
+    BYTE       bRevAuthor;
+} CHARFORMAT2A;
+
+typedef struct _charformat2w {
+    UINT       cbSize;
+    DWORD      dwMask;
+    DWORD      dwEffects;
+    LONG       yHeight;
+    LONG       yOffset;
+    COLORREF   crTextColor;
+    BYTE       bCharSet;
+    BYTE       bPitchAndFamily;
+    WCHAR      szFaceName[LF_FACESIZE];
+    WORD       wWeight;
+    SHORT      sSpacing;
+    COLORREF   crBackColor;
+    LCID       lcid;
+    DWORD      dwReserved;
+    SHORT      sStyle;
+    WORD       wKerning;
+    BYTE       bUnderlineType;
+    BYTE       bAnimation;
+    BYTE       bRevAuthor;
+} CHARFORMAT2W;
+
+DECL_WINELIB_TYPE_AW(CHARFORMAT2)
+
 /* CHARFORMAT masks */
 #define CFM_BOLD              0x00000001
 #define CFM_ITALIC            0x00000002
 #define CFM_UNDERLINE         0x00000004
 #define CFM_STRIKEOUT         0x00000008
 #define CFM_PROTECTED         0x00000010
-#define CFM_SIZE              0x80000000
-#define CFM_COLOR             0x40000000
-#define CFM_FACE              0x20000000
-#define CFM_OFFSET            0x10000000
+#define CFM_LINK              0x00000020
+#define CFM_SMALLCAPS         0x00000040
+#define CFM_ALLCAPS           0x00000080
+#define CFM_HIDDEN            0x00000100
+#define CFM_OUTLINE           0x00000200
+#define CFM_SHADOW            0x00000400
+#define CFM_EMBOSS            0x00000800
+#define CFM_IMPRINT           0x00001000
+#define CFM_DISABLED          0x00002000
+#define CFM_REVISED           0x00004000
+#define CFM_REVAUTHOR         0x00008000
+#define CFM_SUBSCRIPT         0x00030000
+#define CFM_SUPERSCRIPT       0x00030000
+#define CFM_ANIMATION         0x00040000
+#define CFM_STYLE             0x00080000
+#define CFM_KERNING           0x00100000
+#define CFM_SPACING           0x00200000
+#define CFM_WEIGHT            0x00400000
+#define CFM_LCID              0x02000000
+#define CFM_BACKCOLOR         0x04000000
 #define CFM_CHARSET           0x08000000
+#define CFM_OFFSET            0x10000000
+#define CFM_FACE              0x20000000
+#define CFM_COLOR             0x40000000
+#define CFM_SIZE              0x80000000
+#define CFM_EFFECTS	      (CFM_BOLD | CFM_ITALIC | CFM_UNDERLINE | CFM_COLOR | CFM_STRIKEOUT | CFE_PROTECTED | CFM_LINK)
 
 /* CHARFORMAT effects */
 #define CFE_BOLD              0x00000001
@@ -212,6 +289,8 @@
 #define CFE_UNDERLINE         0x00000004
 #define CFE_STRIKEOUT         0x00000008
 #define CFE_PROTECTED         0x00000010
+#define CFE_SUBSCRIPT         0x00010000
+#define CFE_SUPERSCRIPT	      0x00020000
 #define CFE_AUTOCOLOR         0x40000000
 
 /* ECO operations */
@@ -244,6 +323,7 @@
 #define ENM_PROTECTED         0x00200000
 #define ENM_CORRECTTEXT       0x00400000
 #define ENM_IMECHANGE         0x00800000
+#define ENM_LINK              0x04000000
 
 typedef struct _charrange
 {
@@ -265,19 +345,249 @@
 
 DECL_WINELIB_TYPE_AW(TEXTRANGE)
 
-typedef struct
+typedef struct _editstream
 {
     DWORD		dwCookie;
     DWORD		dwError;
     EDITSTREAMCALLBACK	pfnCallback;
 } EDITSTREAM;
 
-#define SF_TEXT		0x0001
-#define SF_RTF		0x0002
-#define SF_RTFNOOBJS	0x0003
-#define SF_TEXTIZED	0x0004
+typedef struct _compcolor {
+    COLORREF   crText;
+    COLORREF   crBackground;
+    DWORD      dwEffects;
+} COMPCOLOR;
+
+typedef struct _encorrecttext {
+    NMHDR      nmhdr;
+    CHARRANGE  chrg;
+    WORD       seltyp;
+} ENCORRECTTEXT;
+
+typedef struct _endropfiles {
+    NMHDR      nmhdr;
+    HANDLE     hDrop;
+    LONG       cp;
+    BOOL       fProtected;
+} ENDROPFILES;
+
+typedef struct _enlink {
+    NMHDR      nmhdr;
+    UINT       msg;
+    WPARAM     wParam;
+    LPARAM     lParam;
+    CHARRANGE  chrg;
+} ENLINK;
+
+typedef struct {
+    NMHDR      nmhdr;
+    LONG       iob;
+    LONG       lOper;
+    HRESULT    hr;
+} ENOLEOPFAILED;
+
+typedef struct _enprotected {
+    NMHDR      nmhdr;
+    UINT       msg;
+    WPARAM     wParam;
+    LPARAM     lParam;
+    CHARRANGE  chrg;
+} ENPROTECTED, *LPENPROTECTED;
+
+typedef struct _ensaveclipboard {
+    NMHDR      nmhdr;
+    LONG       cObjectCount;
+    LONG       cch;
+} ENSAVECLIPBOARD;
+
+typedef struct _findtextA {
+    CHARRANGE  chrg;
+    LPSTR      lpstrText;
+} FINDTEXTA;
+
+typedef struct _findtextW {
+    CHARRANGE  chrg;
+    LPWSTR     lpstrText;
+} FINDTEXTW;
+
+DECL_WINELIB_TYPE_AW(FINDTEXT);
+
+typedef struct _findtextexA {
+    CHARRANGE  chrg;
+    LPSTR      lpstrText;
+    CHARRANGE  chrgText;
+} FINDTEXTEXA;
+
+typedef struct _findtextexW {
+    CHARRANGE  chrg;
+    LPWSTR     lpstrText;
+    CHARRANGE  chrgText;
+} FINDTEXTEXW;
+
+DECL_WINELIB_TYPE_AW(FINDTEXTEX);
+
+typedef struct _formatrange {
+    HDC        hdc;
+    HDC        hdcTarget;
+    RECT       rc;
+    RECT       rcPage;
+    CHARRANGE  chrg;
+} FORMATRANGE;
+
+typedef struct _msgfilter {
+    NMHDR      nmhdr;
+    UINT       msg;
+    WPARAM     wParam;
+    LPARAM     lParam;
+} MSGFILTER;
+
+typedef struct _paraformat {
+    UINT       cbSize;
+    DWORD      dwMask;
+    WORD       wNumbering;
+    WORD       wReserved;
+    LONG       dxStartIndent;
+    LONG       dxRightIndent;
+    LONG       dxOffset;
+    WORD       wAlignment;
+    SHORT      cTabCount;
+    LONG       rgxTabs[MAX_TAB_STOPS];
+} PARAFORMAT;
+
+typedef struct _selchange {
+    NMHDR      nmhdr;
+    CHARRANGE  chrg;
+    WORD       seltyp;
+} SELCHANGE;
+
+typedef struct _reqresize {
+    NMHDR      nmhdr;
+    RECT       rc;
+} REQRESIZE;
+
+typedef struct _repastespecial {
+    DWORD      dwAspect;
+    DWORD      dwParam;
+} REPASTESPECIAL;
+
+typedef struct _punctuation {
+    UINT       iSize;
+    LPSTR      szPunctuation;
+} PUNCTUATION;
+
+typedef struct _gettextex {
+    DWORD      cb;
+    DWORD      flags;
+    UINT       codepage;
+    LPCSTR     lpDefaultChar;
+    LPBOOL     lpUsedDefaultChar;
+} GETTEXTEX;
+
+#define SF_TEXT		      0x00000001
+#define SF_RTF		      0x00000002
+#define SF_RTFNOOBJS	      0x00000003
+#define SF_TEXTIZED	      0x00000004
+#define SF_UNICODE            0x00000010
+#define SF_USECODEPAGE        0x00000020
+#define SF_NCRFORNONASCII     0x00000040
+#define SF_RTFVAL             0x00000700
+
+/* Clipboard formats */
+#define CF_RTF          TEXT("Rich Text Format")
+#define CF_RTFNOOBJS    TEXT("Rich Text Format Without Objects")
+#define CF_RETEXTOBJ    TEXT("RichEdit Text and Objects")
 
 
+/* Parameters of the EM_SETIMEOPTIONS message */
+#define IMF_FORCENONE         0x00000001
+#define IMF_FORCEENABLE       0x00000002
+#define IMF_FORCEDISABLE      0x00000004
+#define IMF_CLOSESTATUSWINDOW 0x00000008
+#define IMF_VERTICAL          0x00000020
+#define IMF_FORCEACTIVE       0x00000040
+#define IMF_FORCEINACTIVE     0x00000080
+#define IMF_FORCEREMEMBER     0x00000100
+
+/* return values of the EM_SELECTION_TYPE message */
+#define SEL_EMPTY             0x00000000
+#define SEL_TEXT              0x00000001
+#define SEL_OBJECT            0x00000002
+#define SEL_MULTICHAR         0x00000004
+#define SEL_MULTIOBJECT       0x00000008
+
+/* mask values in the PARAFORMAT2 structure */
+#define PFM_STARTINDENT       0x00000001
+#define PFM_RIGHTINDENT       0x00000002
+#define PFM_OFFSET            0x00000004
+#define PFM_ALIGNMENT         0x00000008
+#define PFM_TABSTOPS          0x00000010
+#define PFM_NUMBERING         0x00000020
+#define PFM_OFFSETINDENT      0x80000000
+
+/* numbering option */
+#define PFN_BULLET            0x00000001
+
+/* paragraph alignment */
+#define PFA_LEFT              0x00000001
+#define PFA_RIGHT             0x00000002
+#define PFA_CENTER            0x00000003
+
+/* streaming flags */
+#define SFF_PWD               0x00000800
+#define SFF_KEEPDOCINFO       0x00001000
+#define SFF_PERSISTVIEWSCALE  0x00002000
+#define SFF_PLAINRTF          0x00004000
+#define SFF_SELECTION         0x00008000
+
+typedef LONG (*EDITWORDBREAKPROCEX)(char*,LONG,BYTE,INT);
+
+/* options of the EM_FINDWORDBREAK message */
+#define WB_CLASSIFY           0x00000003
+#define WB_MOVEWORDLEFT       0x00000004
+#define WB_MOVEWORDPREV       0x00000004
+#define WB_MOVEWORDRIGHT      0x00000005
+#define WB_MOVEWORDNEXT       0x00000005
+#define WB_LEFTBREAK          0x00000006
+#define WB_PREVBREAK          0x00000006
+#define WB_RIGHTBREAK         0x00000007
+#define WB_NEXTBREAK          0x00000007
+
+/* options of the EM_SETWORDWRAPMODE message */
+#define WBF_WORDWRAP          0x00000010
+#define WBF_WORDBREAK         0x00000020
+#define WBF_OVERFLOW          0x00000040
+#define WBF_LEVEL1            0x00000080
+#define WBF_LEVEL2            0x00000100
+#define WBF_CUSTOM            0x00000200
+
+/* options of the EM_SETTEXTMODE message */
+#define TM_PLAINTEXT          0x00000001
+#define TM_RICHTEXT           0x00000002
+#define TM_SINGLELEVELUNDO    0x00000004
+#define TM_MULTILEVELUNDO     0x00000008
+#define TM_SINGLECODEPAGE     0x00000010
+#define TM_MULTICODEPAGE      0x00000020
+
+/* GETTEXT structure flags */
+#define GT_DEFAULT            0x00000000
+#define GT_USECRLF            0x00000001
+
+/* Options of the EM_SETTYPOGRAPHYOPTIONS message */
+#define TO_ADVANCEDTYPOGRAPHY 0x00000001
+#define TO_SIMPLELINEBREAK    0x00000002
+
+typedef struct _gettextlengthex {
+    DWORD      flags;
+    UINT       codepage;
+} GETTEXTLENGTHEX;
+
+/* Flags of the GETTEXTLENGTHEX structure */
+#define GTL_DEFAULT           0x00000000
+#define GTL_USECRLF           0x00000001
+#define GTL_PRECISE           0x00000002
+#define GTL_CLOSE             0x00000004
+#define GTL_NUMCHARS          0x00000008
+#define GTL_NUMBYTES          0x00000010
 
 #ifdef __cplusplus
 }
diff --git a/include/richole.h b/include/richole.h
new file mode 100644
index 0000000..a213ea0
--- /dev/null
+++ b/include/richole.h
@@ -0,0 +1,63 @@
+/*
+ * 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 */