[CHARMAP]
[reactos.git] / reactos / include / psdk / richedit.h
index c8ca83f..b0dcd04 100644 (file)
-#ifndef _RICHEDIT_H
-#define _RICHEDIT_H
-#if __GNUC__ >= 3
-#pragma GCC system_header
-#endif
+/*
+ * 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
+ * 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
+ */
+
+#ifndef __WINE_RICHEDIT_H
+#define __WINE_RICHEDIT_H
+
+#include <pshpack4.h>
 
 #ifdef __cplusplus
 extern "C" {
 #endif
-#pragma pack(push,4)
 
-#ifdef UNICODE
-#define RICHEDIT_CLASS L"RichEdit20W"
+#ifndef _RICHEDIT_VER
+#define _RICHEDIT_VER   0x0210
+#endif /* _RICHEDIT_VER */
+
+#define cchTextLimitDefault 0x7fff
+
+#if defined(_MSC_VER) || defined(RC_INVOKED)
+# define MSFTEDIT_CLASS L"RichEdit50W"
+#elif defined(__GNUC__)
+# define MSFTEDIT_CLASS (const WCHAR []){ 'R','i','c','h','E','d','i','t','5','0','W',0 }
 #else
-#define RICHEDIT_CLASS "RichEdit20A"
+static const WCHAR MSFTEDIT_CLASS[] = { 'R','i','c','h','E','d','i','t','5','0','W',0 };
+#endif
+
+#define RICHEDIT_CLASS20A      "RichEdit20A"
+
+#if defined(_MSC_VER) || defined(RC_INVOKED)
+# define RICHEDIT_CLASS20W  L"RichEdit20W"
+#elif defined(__GNUC__)
+# define RICHEDIT_CLASS20W (const WCHAR []){ 'R','i','c','h','E','d','i','t','2','0','W',0 }
+#else
+static const WCHAR RICHEDIT_CLASS20W[] = { 'R','i','c','h','E','d','i','t','2','0','W',0 };
+#endif
+#define RICHEDIT_CLASS10A      "RICHEDIT"
+
+#if (_RICHEDIT_VER >= 0x0200 )
+#define RICHEDIT_CLASS         WINELIB_NAME_AW(RICHEDIT_CLASS20)
+#else
+#define RICHEDIT_CLASS         RICHEDIT_CLASS10A
+#endif
+
+#ifndef WM_NOTIFY
+#define WM_NOTIFY               0x004e
+#endif
+#ifndef WM_CONTEXTMENU
+#define WM_CONTEXTMENU          0x007b
+#endif
+#ifndef WM_UNICHAR
+#define WM_UNICHAR              0x0109
+#endif
+#ifndef WM_PRINTCLIENT
+#define WM_PRINTCLIENT          0x0318
+#endif
+
+#ifndef EM_GETLIMITTEXT
+#define EM_GETLIMITTEXT         (WM_USER + 37)
+#endif
+#ifndef EM_POSFROMCHAR
+#define EM_POSFROMCHAR          (WM_USER + 38)
+#define EM_CHARFROMPOS          (WM_USER + 39)
+#endif
+#ifndef EM_SCROLLCARET
+#define EM_SCROLLCARET         (WM_USER + 49)
 #endif
-#define RICHEDIT_CLASS10A    "RICHEDIT"
-#define CF_RTF TEXT("Rich Text Format")
-#define CF_RTFNOOBJS TEXT("Rich Text Format Without Objects")
-#define CF_RETEXTOBJ TEXT("RichEdit Text and Objects")
-#define CFM_BOLD       1
-#define CFM_ITALIC     2
-#define CFM_UNDERLINE  4
-#define CFM_STRIKEOUT  8
-#define CFM_PROTECTED  16
-#define CFM_LINK       32
-#define CFM_SIZE       0x80000000
-#define CFM_COLOR      0x40000000
-#define CFM_FACE       0x20000000
-#define CFM_OFFSET     0x10000000
-#define CFM_CHARSET    0x08000000
-#define CFM_BACKCOLOR  0x04000000
-#define CFM_LCID       0x02000000
-#define CFM_UNDERLINETYPE      0x00800000
-#define CFM_WEIGHT     0x00400000
-#define CFM_SPACING    0x00200000
-#define CFM_KERNING    0x00100000
-#define CFM_STYLE      0x00080000
-#define CFM_ANIMATION  0x00040000
-#define CFM_SUBSCRIPT  0x00030000
-#define CFM_SUPERSCRIPT        0x00030000
-#define CFM_REVAUTHOR  0x00008000
-#define CFM_REVISED    0x00004000
-#define CFM_DISABLED   0x00002000
-#define CFM_IMPRINT    0x00001000
-#define CFM_EMBOSS     0x00000800
-#define CFM_SHADOW     0x00000400
-#define CFM_OUTLINE    0x00000200
-#define CFM_HIDDEN     0x00000100
-#define CFM_ALLCAPS    0x00000080
-#define CFM_SMALLCAPS  0x00000040
-#define CFM_EFFECTS    (CFM_BOLD | CFM_ITALIC | CFM_UNDERLINE | CFM_COLOR | CFM_STRIKEOUT | CFE_PROTECTED | CFM_LINK)
-#define CFE_BOLD       1
-#define CFE_ITALIC     2
-#define CFE_UNDERLINE  4
-#define CFE_STRIKEOUT  8
-#define CFE_PROTECTED  16
-#define CFE_AUTOCOLOR  0x40000000
-#define CFE_AUTOBACKCOLOR      0x04000000
-#define CFE_SUBSCRIPT  0x00010000
-#define CFE_SUPERSCRIPT        0x00020000
-#define CFE_ALLCAPS    CFM_ALLCAPS
-#define CFE_EMBOSS     CFM_EMBOSS
-#define CFE_HIDDEN     CFM_HIDDEN
-#define CFE_IMPRINT    CFM_IMPRINT
-#define CFE_OUTLINE    CFM_OUTLINE
-#define CFE_SHADOW     CFM_SHADOW
-#define CFE_SMALLCAPS  CFM_SMALLCAPS
-#define CFU_CF1UNDERLINE       0xff
-#define CFU_UNDERLINENONE      0
-#define CFU_UNDERLINE  1
-#define CFU_UNDERLINEWORD      2
-#define CFU_UNDERLINEDOUBLE    3
-#define CFU_UNDERLINEDOTTED    4
-#define IMF_FORCENONE  1
-#define IMF_FORCEENABLE        2
-#define IMF_FORCEDISABLE       4
-#define IMF_CLOSESTATUSWINDOW  8
-#define IMF_VERTICAL   32
-#define IMF_FORCEACTIVE        64
-#define IMF_FORCEINACTIVE      128
-#define IMF_FORCEREMEMBER      256
-#define SEL_EMPTY       0
-#define SEL_TEXT        1
-#define SEL_OBJECT      2
-#define SEL_MULTICHAR   4
-#define SEL_MULTIOBJECT 8
-#define MAX_TAB_STOPS 32
-#define PFM_ALIGNMENT 8
-#define PFM_NUMBERING 32
-#define PFM_OFFSET 4
-#define PFM_OFFSETINDENT 0x80000000
-#define PFM_RIGHTINDENT 2
-#define PFM_STARTINDENT 1
-#define PFM_TABSTOPS 16
-#define PFM_BORDER 2048
-#define PFM_LINESPACING 256
-#define PFM_NUMBERINGSTART 32768
-#define PFM_NUMBERINGSTYLE 8192
-#define PFM_NUMBERINGTAB 16384
-#define PFM_SHADING 4096
-#define PFM_SPACEAFTER 128
-#define PFM_SPACEBEFORE 64
-#define PFM_STYLE 1024
-#define PFM_DONOTHYPHEN 4194304
-#define PFM_KEEP 131072
-#define PFM_KEEPNEXT 262144
-#define PFM_NOLINENUMBER 1048576
-#define PFM_NOWIDOWCONTROL 2097152
-#define PFM_PAGEBREAKBEFORE 524288
-#define PFM_RTLPARA 65536
-#define PFM_SIDEBYSIDE 8388608
-#define PFM_TABLE 1073741824
-#define PFN_BULLET 1
-#define PFE_DONOTHYPHEN 64
-#define PFE_KEEP 2
-#define PFE_KEEPNEXT 4
-#define PFE_NOLINENUMBER 16
-#define PFE_NOWIDOWCONTROL 32
-#define PFE_PAGEBREAKBEFORE 8
-#define PFE_RTLPARA 1
-#define PFE_SIDEBYSIDE 128
-#define PFE_TABLE 16384
-#define PFA_LEFT 1
-#define PFA_RIGHT 2
-#define PFA_CENTER 3
-#define PFA_JUSTIFY 4
-#define PFA_FULL_INTERWORD 4
-#define SF_TEXT        1
-#define SF_RTF 2
-#define SF_RTFNOOBJS   3
-#define SF_TEXTIZED    4
-#define SF_UNICODE     16
-#define SF_USECODEPAGE 32
-#define SF_NCRFORNONASCII      64
-#define SF_RTFVAL      0x0700
-#define SFF_PWD        0x0800
-#define SFF_KEEPDOCINFO        0x1000
-#define SFF_PERSISTVIEWSCALE   0x2000
-#define SFF_PLAINRTF   0x4000
-#define SFF_SELECTION  0x8000
-#define ST_DEFAULT     0x00000000
-#define ST_KEEPUNDO    0x00000001
-#define ST_SELECTION   0x00000002
-#define WB_CLASSIFY    3
-#define WB_MOVEWORDLEFT        4
-#define WB_MOVEWORDRIGHT       5
-#define WB_LEFTBREAK   6
-#define WB_RIGHTBREAK  7
-#define WB_MOVEWORDPREV        4
-#define WB_MOVEWORDNEXT        5
-#define WB_PREVBREAK   6
-#define WB_NEXTBREAK   7
-#define WBF_WORDWRAP   16
-#define WBF_WORDBREAK  32
-#define WBF_OVERFLOW   64
-#define WBF_LEVEL1     128
-#define WBF_LEVEL2     256
-#define WBF_CUSTOM     512
-#define ES_DISABLENOSCROLL     8192
-#define ES_EX_NOCALLOLEINIT 16777216
-#define ES_NOIME 524288
-#define ES_NOOLEDRAGDROP 8
-#define ES_SAVESEL     32768
-#define ES_SELECTIONBAR 16777216
-#define ES_SELFIME 262144
-#define ES_SUNKEN 16384
-#define ES_VERTICAL 4194304
-#define EM_CANPASTE    (WM_USER+50)
-#define EM_DISPLAYBAND (WM_USER+51)
-#define EM_EXGETSEL    (WM_USER+52)
-#define EM_EXLIMITTEXT (WM_USER+53)
-#define EM_EXLINEFROMCHAR      (WM_USER+54)
-#define EM_EXSETSEL    (WM_USER+55)
-#define EM_FINDTEXT    (WM_USER+56)
-#define EM_FORMATRANGE (WM_USER+57)
-#define EM_GETCHARFORMAT       (WM_USER+58)
-#define EM_GETEVENTMASK        (WM_USER+59)
-#define EM_GETOLEINTERFACE     (WM_USER+60)
-#define EM_GETPARAFORMAT       (WM_USER+61)
-#define EM_GETSELTEXT  (WM_USER+62)
-#define EM_HIDESELECTION       (WM_USER+63)
-#define EM_PASTESPECIAL        (WM_USER+64)
-#define EM_REQUESTRESIZE       (WM_USER+65)
-#define EM_SELECTIONTYPE       (WM_USER+66)
-#define EM_SETBKGNDCOLOR       (WM_USER+67)
-#define EM_SETCHARFORMAT       (WM_USER+68)
-#define EM_SETEVENTMASK        (WM_USER+69)
-#define EM_SETOLECALLBACK      (WM_USER+70)
-#define EM_SETPARAFORMAT       (WM_USER+71)
-#define EM_SETTARGETDEVICE     (WM_USER+72)
-#define EM_STREAMIN    (WM_USER+73)
-#define EM_STREAMOUT   (WM_USER+74)
-#define EM_GETTEXTRANGE        (WM_USER+75)
-#define EM_FINDWORDBREAK       (WM_USER+76)
-#define EM_SETOPTIONS  (WM_USER+77)
-#define EM_GETOPTIONS  (WM_USER+78)
-#define EM_FINDTEXTEX  (WM_USER+79)
-#define EM_GETWORDBREAKPROCEX  (WM_USER+80)
-#define EM_SETWORDBREAKPROCEX  (WM_USER+81)
-/* RichEdit 2.0 messages */
-#define EM_SETUNDOLIMIT        (WM_USER+82)
-#define EM_REDO        (WM_USER+84)
-#define EM_CANREDO     (WM_USER+85)
-#define EM_GETUNDONAME (WM_USER+86)
-#define EM_GETREDONAME (WM_USER+87)
-#define EM_STOPGROUPTYPING     (WM_USER+88)
-#define EM_SETTEXTMODE (WM_USER+89)
-#define EM_GETTEXTMODE (WM_USER+90)
-#define EM_AUTOURLDETECT       (WM_USER+91)
+#define EM_CANPASTE            (WM_USER + 50)
+#define EM_DISPLAYBAND         (WM_USER + 51)
+#define EM_EXGETSEL            (WM_USER + 52)
+#define EM_EXLIMITTEXT         (WM_USER + 53)
+#define EM_EXLINEFROMCHAR      (WM_USER + 54)
+#define EM_EXSETSEL            (WM_USER + 55)
+#define EM_FINDTEXT            (WM_USER + 56)
+#define EM_FORMATRANGE         (WM_USER + 57)
+#define EM_GETCHARFORMAT       (WM_USER + 58)
+#define EM_GETEVENTMASK                (WM_USER + 59)
+#define EM_GETOLEINTERFACE     (WM_USER + 60)
+#define EM_GETPARAFORMAT       (WM_USER + 61)
+#define EM_GETSELTEXT          (WM_USER + 62)
+#define EM_HIDESELECTION       (WM_USER + 63)
+#define EM_PASTESPECIAL                (WM_USER + 64)
+#define EM_REQUESTRESIZE       (WM_USER + 65)
+#define EM_SELECTIONTYPE       (WM_USER + 66)
+#define EM_SETBKGNDCOLOR       (WM_USER + 67)
+#define EM_SETCHARFORMAT       (WM_USER + 68)
+#define EM_SETEVENTMASK                (WM_USER + 69)
+#define EM_SETOLECALLBACK      (WM_USER + 70)
+#define EM_SETPARAFORMAT       (WM_USER + 71)
+#define EM_SETTARGETDEVICE     (WM_USER + 72)
+#define EM_STREAMIN            (WM_USER + 73)
+#define EM_STREAMOUT           (WM_USER + 74)
+#define EM_GETTEXTRANGE                (WM_USER + 75)
+#define EM_FINDWORDBREAK       (WM_USER + 76)
+#define EM_SETOPTIONS          (WM_USER + 77)
+#define EM_GETOPTIONS          (WM_USER + 78)
+#define EM_FINDTEXTEX          (WM_USER + 79)
+#define EM_GETWORDBREAKPROCEX  (WM_USER + 80)
+#define EM_SETWORDBREAKPROCEX  (WM_USER + 81)
+
+#define EM_SETUNDOLIMIT                (WM_USER + 82)
+#define EM_REDO                        (WM_USER + 84)
+#define EM_CANREDO             (WM_USER + 85)
+#define EM_GETUNDONAME         (WM_USER + 86)
+#define EM_GETREDONAME         (WM_USER + 87)
+#define EM_STOPGROUPTYPING     (WM_USER + 88)
+
+#define EM_SETTEXTMODE         (WM_USER + 89)
+#define EM_GETTEXTMODE         (WM_USER + 90)
+#define EM_AUTOURLDETECT       (WM_USER + 91)
 #define EM_GETAUTOURLDETECT    (WM_USER + 92)
-#define EM_SETPALETTE  (WM_USER + 93)
-#define EM_GETTEXTEX   (WM_USER+94)
-#define EM_GETTEXTLENGTHEX     (WM_USER+95)
-#define EM_SHOWSCROLLBAR       (WM_USER+96)
-#define EM_SETTEXTEX   (WM_USER + 97)
+#define EM_SETPALETTE          (WM_USER + 93)
+#define EM_GETTEXTEX           (WM_USER + 94)
+#define EM_GETTEXTLENGTHEX     (WM_USER + 95)
+#define EM_SHOWSCROLLBAR       (WM_USER + 96)
+#define EM_SETTEXTEX           (WM_USER + 97)
+
 #define EM_SETPUNCTUATION      (WM_USER + 100)
 #define EM_GETPUNCTUATION      (WM_USER + 101)
 #define EM_SETWORDWRAPMODE     (WM_USER + 102)
 #define EM_GETWORDWRAPMODE     (WM_USER + 103)
-#define EM_SETIMECOLOR (WM_USER + 104)
-#define EM_GETIMECOLOR (WM_USER + 105)
+#define EM_SETIMECOLOR         (WM_USER + 104)
+#define EM_GETIMECOLOR         (WM_USER + 105)
 #define EM_SETIMEOPTIONS       (WM_USER + 106)
 #define EM_GETIMEOPTIONS       (WM_USER + 107)
-#define EM_SETLANGOPTIONS      (WM_USER+120)
-#define EM_GETLANGOPTIONS      (WM_USER+121)
-#define EM_GETIMECOMPMODE      (WM_USER+122)
-#define EM_FINDTEXTW   (WM_USER + 123)
-#define EM_FINDTEXTEXW (WM_USER + 124)
-#define EM_RECONVERSION        (WM_USER + 125)
+#define EM_CONVPOSITION                (WM_USER + 108)
+
+#define EM_SETLANGOPTIONS      (WM_USER + 120)
+#define EM_GETLANGOPTIONS      (WM_USER + 121)
+#define EM_GETIMECOMPMODE      (WM_USER + 122)
+
+#define EM_FINDTEXTW           (WM_USER + 123)
+#define EM_FINDTEXTEXW         (WM_USER + 124)
+
+#define EM_RECONVERSION                (WM_USER + 125)
 #define EM_SETIMEMODEBIAS      (WM_USER + 126)
 #define EM_GETIMEMODEBIAS      (WM_USER + 127)
+
 #define EM_SETBIDIOPTIONS      (WM_USER + 200)
 #define EM_GETBIDIOPTIONS      (WM_USER + 201)
-#define EM_SETTYPOGRAPHYOPTIONS        (WM_USER+202)
-#define EM_GETTYPOGRAPHYOPTIONS        (WM_USER+203)
-#define EM_SETEDITSTYLE        (WM_USER + 204)
-#define EM_GETEDITSTYLE        (WM_USER + 205)
-#define EM_GETSCROLLPOS        (WM_USER+221)
-#define EM_SETSCROLLPOS        (WM_USER+222)
-#define EM_SETFONTSIZE (WM_USER+223)
-#define EM_GETZOOM     (WM_USER+224)
-#define EM_SETZOOM     (WM_USER+225)
-
-#define EN_CORRECTTEXT 1797
-#define EN_DROPFILES 1795
-#define EN_IMECHANGE 1799
-#define EN_LINK 1803
-#define EN_MSGFILTER 1792
-#define EN_OLEOPFAILED 1801
-#define EN_PROTECTED 1796
-#define EN_REQUESTRESIZE 1793
-#define EN_SAVECLIPBOARD 1800
-#define EN_SELCHANGE 1794
-#define EN_STOPNOUNDO 1798
-#define ENM_NONE 0
-#define ENM_CHANGE 1
-#define ENM_CORRECTTEXT 4194304
-#define ENM_DRAGDROPDONE       16
-#define ENM_DROPFILES 1048576
-#define ENM_IMECHANGE 8388608
-#define ENM_KEYEVENTS 65536
-#define ENM_LANGCHANGE 16777216
-#define ENM_LINK 67108864
-#define ENM_MOUSEEVENTS 131072
-#define ENM_OBJECTPOSITIONS 33554432
-#define ENM_PROTECTED 2097152
-#define ENM_REQUESTRESIZE 262144
-#define ENM_SCROLL 4
-#define ENM_SCROLLEVENTS 8
-#define ENM_SELCHANGE 524288
-#define ENM_UPDATE 2
-#define ECO_AUTOWORDSELECTION  1
-#define ECO_AUTOVSCROLL        64
-#define ECO_AUTOHSCROLL        128
-#define ECO_NOHIDESEL  256
-#define ECO_READONLY   2048
-#define ECO_WANTRETURN 4096
-#define ECO_SAVESEL    0x8000
-#define ECO_SELECTIONBAR       0x1000000
-#define ECO_VERTICAL   0x400000
-#define ECOOP_SET      1
-#define ECOOP_OR       2
-#define ECOOP_AND      3
-#define ECOOP_XOR      4
-#define SCF_DEFAULT    0
-#define SCF_SELECTION  1
-#define SCF_WORD       2
-#define SCF_ALL        4
-#define SCF_USEUIRULES 8
-#define TM_PLAINTEXT   1
-#define TM_RICHTEXT    2
-#define TM_SINGLELEVELUNDO     4
-#define TM_MULTILEVELUNDO      8
-#define TM_SINGLECODEPAGE      16
-#define TM_MULTICODEPAGE       32
-#define GT_DEFAULT     0
-#define GT_USECRLF     1
-#define GT_SELECTION   2
-#define yHeightCharPtsMost 1638
-#define lDefaultTab 720
-
-typedef struct _charformat {
-       UINT cbSize;
-       DWORD dwMask;
-       DWORD dwEffects;
-       LONG yHeight;
-       LONG yOffset;
-       COLORREF crTextColor;
-       BYTE bCharSet;
-       BYTE bPitchAndFamily;
-       char szFaceName[LF_FACESIZE];
+
+#define EM_SETTYPOGRAPHYOPTIONS (WM_USER + 202)
+#define EM_GETTYPOGRAPHYOPTIONS (WM_USER + 203)
+
+#define EM_SETEDITSTYLE                (WM_USER + 204)
+#define EM_GETEDITSTYLE                (WM_USER + 205)
+
+#define EM_OUTLINE              (WM_USER + 220)
+
+#define EM_GETSCROLLPOS         (WM_USER + 221)
+#define EM_SETSCROLLPOS         (WM_USER + 222)
+
+#define EM_SETFONTSIZE          (WM_USER + 223)
+#define EM_GETZOOM             (WM_USER + 224)
+#define EM_SETZOOM             (WM_USER + 225)
+#define EM_GETVIEWKIND          (WM_USER + 226)
+#define EM_SETVIEWKIND          (WM_USER + 227)
+
+#define EM_GETPAGE              (WM_USER + 228)
+#define EM_SETPAGE              (WM_USER + 229)
+#define EM_GETHYPHENATEINFO     (WM_USER + 230)
+#define EM_SETHYPHENATEINFO     (WM_USER + 231)
+#define EM_GETPAGEROTATE        (WM_USER + 235)
+#define EM_SETPAGEROTATE        (WM_USER + 236)
+#define EM_GETCTFMODEBIAS       (WM_USER + 237)
+#define EM_SETCTFMODEBIAS       (WM_USER + 238)
+#define EM_GETCTFOPENSTATUS     (WM_USER + 240)
+#define EM_SETCTFOPENSTATUS     (WM_USER + 241)
+#define EM_GETIMECOMPTEXT       (WM_USER + 242)
+#define EM_ISIME                (WM_USER + 243)
+#define EM_GETIMEPROPERTY       (WM_USER + 244)
+#define EM_GETQUERYRTFOBJ       (WM_USER + 269)
+#define EM_SETQUERYRTFOBJ       (WM_USER + 270)
+
+/* New notifications */
+#define EN_MSGFILTER                    0x0700
+#define EN_REQUESTRESIZE                0x0701
+#define EN_SELCHANGE                    0x0702
+#define EN_DROPFILES                    0x0703
+#define EN_PROTECTED                    0x0704
+#define EN_CORRECTTEXT                  0x0705
+#define EN_STOPNOUNDO                   0x0706
+#define EN_IMECHANGE                    0x0707
+#define EN_SAVECLIPBOARD                0x0708
+#define EN_OLEOPFAILED                  0x0709
+#define EN_OBJECTPOSITIONS              0x070a
+#define EN_LINK                                0x070b
+#define EN_DRAGDROPDONE                 0x070c
+#define EN_PARAGRAPHEXPANDED           0x070d
+#define EN_PAGECHANGE                   0x070e
+#define EN_LOWFIRTF                     0x070f
+#define EN_ALIGNLTR                    0x0710
+#define EN_ALIGNRTL                    0x0711
+
+
+typedef DWORD (CALLBACK * EDITSTREAMCALLBACK)( DWORD_PTR, LPBYTE, LONG, LONG * );
+
+
+#define yHeightCharPtsMost    1638
+#define lDefaultTab           720
+
+/* tab stops number limit */
+#define MAX_TAB_STOPS         0x00000020
+
+#define MAX_TABLE_CELLS       63
+
+/* Rich edit control styles */
+#define ES_NOOLEDRAGDROP      0x00000008
+#define ES_DISABLENOSCROLL    0x00002000
+#define ES_SUNKEN             0x00004000
+#define ES_SAVESEL            0x00008000
+#define ES_SELFIME            0x00040000
+#define ES_NOIME              0x00080000
+#define ES_VERTICAL           0x00400000
+#define ES_SELECTIONBAR       0x01000000
+#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
+#define SCF_ASSOCIATEFONT     0x00000010
+#define SCF_NOKBUPDATE        0x00000020
+#define SCF_ASSOCIATEFONT2    0x00000040
+
+#ifndef WM_NOTIFY
+typedef struct _nmhdr
+{
+    HWND       hwndFrom;
+    UINT       idFrom;
+    UINT       code;
+} NMHDR;
+#endif
+
+/* CHARFORMAT structure */
+typedef struct _charformat
+{
+    UINT       cbSize;
+    DWORD      dwMask;
+    DWORD      dwEffects;
+    LONG       yHeight;
+    LONG       yOffset;
+    COLORREF   crTextColor;
+    BYTE       bCharSet;
+    BYTE       bPitchAndFamily;
+    char       szFaceName[LF_FACESIZE];
 } CHARFORMATA;
-typedef struct _charformatw {
-       UINT cbSize;
-       DWORD dwMask;
-       DWORD dwEffects;
-       LONG yHeight;
-       LONG yOffset;
-       COLORREF crTextColor;
-       BYTE bCharSet;
-       BYTE bPitchAndFamily;
-       WCHAR szFaceName[LF_FACESIZE];
+
+typedef struct _charformatw
+{
+    UINT       cbSize;
+    DWORD      dwMask;
+    DWORD      dwEffects;
+    LONG       yHeight;
+    LONG       yOffset;
+    COLORREF   crTextColor;
+    BYTE       bCharSet;
+    BYTE       bPitchAndFamily;
+    WCHAR      szFaceName[LF_FACESIZE];
 } CHARFORMATW;
+
+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;
+    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;
+    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;
-typedef struct _charrange {
-       LONG cpMin;
-       LONG cpMax;
+
+DECL_WINELIB_TYPE_AW(CHARFORMAT2)
+
+#define CHARFORMATDELTA       (sizeof(CHARFORMAT2) - sizeof(CHARFORMAT))
+
+/* CHARFORMAT masks */
+#define CFM_BOLD              0x00000001
+#define CFM_ITALIC            0x00000002
+#define CFM_UNDERLINE         0x00000004
+#define CFM_STRIKEOUT         0x00000008
+#define CFM_PROTECTED         0x00000010
+#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_UNDERLINETYPE     0x00800000
+#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)
+
+#define CFM_EFFECTS2          (CFM_EFFECTS | \
+                               CFM_DISABLED | \
+                               CFM_SMALLCAPS | \
+                               CFM_ALLCAPS | \
+                               CFM_HIDDEN | \
+                               CFM_OUTLINE | \
+                               CFM_SHADOW | \
+                               CFM_EMBOSS | \
+                               CFM_IMPRINT | \
+                               CFM_DISABLED | \
+                               CFM_REVISED | \
+                               CFM_SUBSCRIPT | \
+                               CFM_SUPERSCRIPT | \
+                               CFM_BACKCOLOR)
+
+#define CFM_ALL               (CFM_EFFECTS | \
+                               CFM_SIZE | \
+                               CFM_FACE | \
+                               CFM_OFFSET | \
+                               CFM_CHARSET)
+
+#define CFM_ALL2              (CFM_ALL | \
+                               CFM_EFFECTS2 | \
+                               CFM_BACKCOLOR | \
+                               CFM_LCID | \
+                               CFM_UNDERLINETYPE | \
+                               CFM_WEIGHT | \
+                               CFM_REVAUTHOR | \
+                               CFM_SPACING | \
+                               CFM_KERNING | \
+                               CFM_STYLE | \
+                               CFM_ANIMATION)
+
+/* CHARFORMAT effects */
+#define CFE_BOLD              0x00000001
+#define CFE_ITALIC            0x00000002
+#define CFE_UNDERLINE         0x00000004
+#define CFE_STRIKEOUT         0x00000008
+#define CFE_PROTECTED         0x00000010
+#define CFE_LINK              0x00000020
+#define CFE_SUBSCRIPT         0x00010000
+#define CFE_SUPERSCRIPT       0x00020000
+#define CFE_AUTOCOLOR         0x40000000
+
+#define CFE_SMALLCAPS         CFM_SMALLCAPS
+#define CFE_ALLCAPS           CFM_ALLCAPS
+#define CFE_HIDDEN            CFM_HIDDEN
+#define CFE_OUTLINE           CFM_OUTLINE
+#define CFE_SHADOW            CFM_SHADOW
+#define CFE_EMBOSS            CFM_EMBOSS
+#define CFE_IMPRINT           CFM_IMPRINT
+#define CFE_DISABLED          CFM_DISABLED
+#define CFE_REVISED           CFM_REVISED
+#define CFE_AUTOBACKCOLOR     CFM_BACKCOLOR
+
+#define CFU_UNDERLINENONE             0x00
+#define CFU_UNDERLINE                 0x01
+#define CFU_UNDERLINEWORD             0x02
+#define CFU_UNDERLINEDOUBLE           0x03
+#define CFU_UNDERLINEDOTTED           0x04
+#define CFU_UNDERLINEDASH             0x05
+#define CFU_UNDERLINEDASHDOT          0x06
+#define CFU_UNDERLINEDASHDOTDOT       0x07
+#define CFU_UNDERLINEWAVE             0x08
+#define CFU_UNDERLINETHICK            0x09
+#define CFU_UNDERLINEHAIRLINE         0x0a
+#define CFU_UNDERLINEDOUBLEWAVE       0x0b
+#define CFU_UNDERLINEHEAVYWAVE        0x0c
+#define CFU_UNDERLINELONGDASH         0x0d
+#define CFU_UNDERLINETHICKDASH        0x0e
+#define CFU_UNDERLINETHICKDASHDOT     0x0f
+#define CFU_UNDERLINETHICKDASHDOTDOT  0x10
+#define CFU_UNDERLINETHICKDOTTED      0x11
+#define CFU_UNDERLINETHICKLONGDASH    0x12
+#define CFU_INVERT                    0xFE
+#define CFU_CF1UNDERLINE              0xFF
+
+/* ECO operations */
+#define ECOOP_SET             0x0001
+#define ECOOP_OR              0x0002
+#define ECOOP_AND             0x0003
+#define ECOOP_XOR             0x0004
+
+/* edit control options */
+#define ECO_AUTOWORDSELECTION 0x00000001
+#define ECO_AUTOVSCROLL       0x00000040
+#define ECO_AUTOHSCROLL       0x00000080
+#define ECO_NOHIDESEL         0x00000100
+#define ECO_READONLY          0x00000800
+#define ECO_WANTRETURN        0x00001000
+#define ECO_SAVESEL           0x00008000
+#define ECO_SELECTIONBAR      0x01000000
+#define ECO_VERTICAL          0x00400000
+
+/* Event notification masks */
+#define ENM_NONE              0x00000000
+#define ENM_CHANGE            0x00000001
+#define ENM_UPDATE            0x00000002
+#define ENM_SCROLL            0x00000004
+#define ENM_SCROLLEVENTS      0x00000008
+#define ENM_DRAGDROPDONE      0x00000010
+#define ENM_PARAGRAPHEXPANDED 0x00000020
+#define ENM_PAGECHANGE        0x00000040
+#define ENM_KEYEVENTS         0x00010000
+#define ENM_MOUSEEVENTS       0x00020000
+#define ENM_REQUESTRESIZE     0x00040000
+#define ENM_SELCHANGE         0x00080000
+#define ENM_DROPFILES         0x00100000
+#define ENM_PROTECTED         0x00200000
+#define ENM_CORRECTTEXT       0x00400000
+#define ENM_IMECHANGE         0x00800000
+#define ENM_LANGCHANGE        0x01000000
+#define ENM_OBJECTPOSITIONS   0x02000000
+#define ENM_LINK              0x04000000
+#define ENM_LOWFIRTF          0x08000000
+
+typedef struct _bidioptions
+{
+    UINT    cbSize;
+    WORD    wMask;
+    WORD    wEffects;
+} BIDIOPTIONS;
+
+#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;
+    LPSTR     lpstrText;
+} TEXTRANGEA;
+
+typedef struct _textrangew
+{
+    CHARRANGE chrg;
+    LPWSTR     lpstrText;
+} TEXTRANGEW;
+
+DECL_WINELIB_TYPE_AW(TEXTRANGE)
+
+typedef struct _editstream
+{
+    DWORD_PTR          dwCookie;
+    DWORD              dwError;
+    EDITSTREAMCALLBACK pfnCallback;
+} EDITSTREAM;
+
 typedef struct _compcolor {
-       COLORREF crText;
-       COLORREF crBackground;
-       DWORD dwEffects;
+    COLORREF   crText;
+    COLORREF   crBackground;
+    DWORD      dwEffects;
 } COMPCOLOR;
-typedef DWORD(CALLBACK *EDITSTREAMCALLBACK)(DWORD,PBYTE,LONG,LONG*);
-typedef struct _editstream {
-       DWORD dwCookie;
-       DWORD dwError;
-       EDITSTREAMCALLBACK pfnCallback;
-} EDITSTREAM;
+
 typedef struct _encorrecttext {
-       NMHDR nmhdr;
-       CHARRANGE chrg;
-       WORD seltyp;
+    NMHDR      nmhdr;
+    CHARRANGE  chrg;
+    WORD       seltyp;
 } ENCORRECTTEXT;
+
 typedef struct _endropfiles {
-       NMHDR nmhdr;
-       HANDLE hDrop;
-       LONG cp;
-       BOOL fProtected;
+    NMHDR      nmhdr;
+    HANDLE     hDrop;
+    LONG       cp;
+    BOOL       fProtected;
 } ENDROPFILES;
+
 typedef struct _enlink {
-       NMHDR nmhdr;
-       UINT msg;
-       WPARAM wParam;
-       LPARAM lParam;
-       CHARRANGE chrg;
+    NMHDR      nmhdr;
+    UINT       msg;
+    WPARAM     wParam;
+    LPARAM     lParam;
+    CHARRANGE  chrg;
 } ENLINK;
+
+typedef struct _enlowfirtf {
+    NMHDR      nmhdr;
+    char       *szControl;
+} ENLOWFIRTF;
+
 typedef struct {
-       NMHDR nmhdr;
-       LONG iob;
-       LONG lOper;
-       HRESULT hr;
+    NMHDR      nmhdr;
+    LONG       iob;
+    LONG       lOper;
+    HRESULT    hr;
 } ENOLEOPFAILED;
+
 typedef struct _enprotected {
-       NMHDR nmhdr;
-       UINT msg;
-       WPARAM wParam;
-       LPARAM lParam;
-       CHARRANGE chrg;
-} ENPROTECTED,*LPENPROTECTED;
+    NMHDR      nmhdr;
+    UINT       msg;
+    WPARAM     wParam;
+    LPARAM     lParam;
+    CHARRANGE  chrg;
+} ENPROTECTED, *LPENPROTECTED;
+
 typedef struct _ensaveclipboard {
-       NMHDR nmhdr;
-       LONG cObjectCount;
-       LONG cch;
+    NMHDR      nmhdr;
+    LONG       cObjectCount;
+    LONG       cch;
 } ENSAVECLIPBOARD;
+
 typedef struct _findtextA {
-       CHARRANGE chrg;
-       LPSTR lpstrText;
+    CHARRANGE  chrg;
+    LPCSTR     lpstrText;
 } FINDTEXTA;
+
 typedef struct _findtextW {
-       CHARRANGE chrg;
-       LPWSTR lpstrText;
+    CHARRANGE  chrg;
+    LPCWSTR    lpstrText;
 } FINDTEXTW;
+
+DECL_WINELIB_TYPE_AW(FINDTEXT)
+
 typedef struct _findtextexA {
-       CHARRANGE chrg;
-       LPSTR lpstrText;
-       CHARRANGE chrgText;
+    CHARRANGE  chrg;
+    LPCSTR     lpstrText;
+    CHARRANGE  chrgText;
 } FINDTEXTEXA;
+
 typedef struct _findtextexW {
-       CHARRANGE chrg;
-       LPWSTR lpstrText;
-       CHARRANGE chrgText;
+    CHARRANGE  chrg;
+    LPCWSTR    lpstrText;
+    CHARRANGE  chrgText;
 } FINDTEXTEXW;
+
+DECL_WINELIB_TYPE_AW(FINDTEXTEX)
+
 typedef struct _formatrange {
-       HDC hdc;
-       HDC hdcTarget;
-       RECT rc;
-       RECT rcPage;
-       CHARRANGE chrg;
+    HDC        hdc;
+    HDC        hdcTarget;
+    RECT       rc;
+    RECT       rcPage;
+    CHARRANGE  chrg;
 } FORMATRANGE;
+
+typedef enum tagKHYPH
+{
+    khyphNil           = 0,
+    khyphNormal        = 1,
+    khyphAddBefore     = 2,
+    khyphChangeBefore  = 3,
+    khyphDeleteBefore  = 4,
+    khyphChangeAfter   = 5,
+    khyphDelAndChange  = 6
+} KHYPH;
+
+typedef struct hyphresult
+{
+    KHYPH      khyph;
+    LONG       ichHyph;
+    WCHAR      chHyph;
+} HYPHRESULT;
+
+typedef struct tagHyphenateInfo
+{
+    SHORT      cbSize;
+    SHORT      dxHyphenateZone;
+    void       (WINAPI* pfnHyphenate)(WCHAR*, LANGID, LONG, HYPHRESULT*);
+} HYPHENATEINFO;
+
 typedef struct _msgfilter {
-       NMHDR nmhdr;
-    UINT msg;
-       WPARAM wParam;
-       LPARAM lParam;
+    NMHDR      nmhdr;
+    UINT       msg;
+    WPARAM     wParam;
+    LPARAM     lParam;
 } MSGFILTER;
+
+typedef struct _objectpositions {
+    NMHDR      nmhdr;
+    LONG       cObjectCount;
+    LONG       *pcpPositions;
+} OBJECTPOSITIONS;
+
 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];
+    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 _paraformat2 {
-       UINT cbSize;
-       DWORD dwMask;
-       WORD wNumbering;
-       WORD wEffects;
-       LONG dxStartIndent;
-       LONG dxRightIndent;
-       LONG dxOffset;
-       WORD wAlignment;
-       SHORT cTabCount;
-       LONG rgxTabs[MAX_TAB_STOPS];
-       LONG dySpaceBefore;
-       LONG dySpaceAfter;
-       LONG dyLineSpacing;
-       SHORT sStyle;
-       BYTE bLineSpacingRule;
-       BYTE bOutlineLevel;
-       WORD wShadingWeight;
-       WORD wShadingStyle;
-       WORD wNumberingStart;
-       WORD wNumberingStyle;
-       WORD wNumberingTab;
-       WORD wBorderSpace;
-       WORD wBorderWidth;
-       WORD wBorders;
+    UINT       cbSize;
+    DWORD      dwMask;
+    WORD       wNumbering;
+    WORD       wEffects;
+    LONG       dxStartIndent;
+    LONG       dxRightIndent;
+    LONG       dxOffset;
+    WORD       wAlignment;
+    SHORT      cTabCount;
+    LONG       rgxTabs[MAX_TAB_STOPS];
+    LONG       dySpaceBefore, dySpaceAfter, dyLineSpacing;
+    SHORT      sStyle;
+    BYTE       bLineSpacingRule, bOutlineLevel;
+    WORD       wShadingWeight, wShadingStyle;
+    WORD       wNumberingStart, wNumberingStyle, wNumberingTab;
+    WORD       wBorderSpace, wBorderWidth, wBorders;
 } PARAFORMAT2;
+
 typedef struct _selchange {
-       NMHDR nmhdr;
-       CHARRANGE chrg;
-       WORD seltyp;
+    NMHDR      nmhdr;
+    CHARRANGE  chrg;
+    WORD       seltyp;
 } SELCHANGE;
-typedef struct _textrange {
-       CHARRANGE chrg;
-       LPSTR lpstrText;
-} TEXTRANGEA;
-typedef struct _textrangew {
-       CHARRANGE chrg;
-       LPWSTR lpstrText;
-} TEXTRANGEW;
+
 typedef struct _reqresize {
-       NMHDR nmhdr;
-       RECT rc;
+    NMHDR      nmhdr;
+    RECT       rc;
 } REQRESIZE;
+
 typedef struct _repastespecial {
-       DWORD dwAspect;
-       DWORD dwParam;
+    DWORD      dwAspect;
+    DWORD      dwParam;
 } REPASTESPECIAL;
+
 typedef struct _punctuation {
-       UINT iSize;
-       LPSTR szPunctuation;
+    UINT       iSize;
+    LPSTR      szPunctuation;
 } PUNCTUATION;
+
 typedef struct _gettextex {
-       DWORD cb;
-       DWORD flags;
-       UINT codepage;
-       LPCSTR lpDefaultChar;
-       LPBOOL lpUsedDefaultChar;
+    DWORD      cb;
+    DWORD      flags;
+    UINT       codepage;
+    LPCSTR     lpDefaultChar;
+    LPBOOL     lpUsedDefChar;
 } GETTEXTEX;
-typedef struct _settextex {
-    DWORD       flags;
-    UINT        codepage;
-} SETTEXTEX;
+
+typedef struct _imecomptext {
+    LONG       cb;
+    DWORD      flags;
+} IMECOMPTEXT;
+
+void WINAPI HyphenateProc(WCHAR*, LANGID, LONG, HYPHRESULT*);
+
+#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
+
+/* BIDIOPTIONS.wMask flag values */
+#define BOM_DEFPARADIR        0x00000001
+#define BOM_PLAINTEXT         0x00000002
+#define BOM_NEUTRALOVERRIDE   0x00000004
+#define BOM_CONTEXTREADING    0x00000008
+#define BOM_CONTEXTALIGNMENT  0x00000010
+#define BOM_LEGACYBIDICLASS   0x00000040
+
+/* BIDIOPTIONS.wEffects flag values */
+#define BOE_RTLDIR            0x00000001
+#define BOE_PLAINTEXT         0x00000002
+#define BOE_NEUTRALOVERRIDE   0x00000004
+#define BOE_CONTEXTREADING    0x00000008
+#define BOE_CONTEXTALIGNMENT  0x00000010
+#define BOE_LEGACYBIDICLASS   0x00000040
+
+/* 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")
+
+/* Mode bias wParam values for EM_SETCTFMODEBIAS message */
+#define CTFMODEBIAS_DEFAULT                0x00000000
+#define CTFMODEBIAS_FILENAME               0x00000001
+#define CTFMODEBIAS_NAME                   0x00000002
+#define CTFMODEBIAS_READING                0x00000003
+#define CTFMODEBIAS_DATETIME               0x00000004
+#define CTFMODEBIAS_CONVERSATION           0x00000005
+#define CTFMODEBIAS_NUMERIC                0x00000006
+#define CTFMODEBIAS_HIRAGANA               0x00000007
+#define CTFMODEBIAS_KATAKANA               0x00000008
+#define CTFMODEBIAS_HANGUL                 0x00000009
+#define CTFMODEBIAS_HALFWIDTHKATAKANA      0x0000000a
+#define CTFMODEBIAS_FULLWIDTHALPHANUMERIC  0x0000000b
+#define CTFMODEBIAS_HALFWIDTHALPHANUMERIC  0x0000000c
+
+#define EMO_EXIT              0x00000000
+#define EMO_ENTER             0x00000001
+#define EMO_PROMOTE           0x00000002
+#define EMO_EXPAND            0x00000003
+#define EMO_MOVESELECTION     0x00000004
+#define EMO_GETVIEWMODE       0x00000005
+
+#define EMO_EXPANDSELECTION   0x00000000
+#define EMO_EXPANDDOCUMENT    0x00000001
+
+/* Page Rotate values used in wParam of EM_SETPAGEROTATE message */
+#define EPR_0                 0x00000000
+#define EPR_270               0x00000001
+#define EPR_180               0x00000002
+#define EPR_90                0x00000003
+
+/* Find flags for wParam of EM_FINDTEXT message */
+#define FR_MATCHDIAC          0x20000000
+#define FR_MATCHKASHIDA       0x40000000
+#define FR_MATCHALEFHAMZA     0x80000000
+
+/* IME Compatibility Mode return values for EM_GETIMECOMPMODE message */
+#define ICM_NOTOPEN           0x00000000
+#define ICM_LEVEL3            0x00000001
+#define ICM_LEVEL2            0x00000002
+#define ICM_LEVEL2_5          0x00000003
+#define ICM_LEVEL2_SUI        0x00000004
+#define ICM_CTF               0x00000005
+
+/* Flags value for IMECOMPTEXT structure */
+#define ICT_RESULTREADSTR     0x00000001
+
+/* Input Method Flags used in EM_SETLANGOPTIONS message */
+#define IMF_AUTOKEYBOARD        0x00000001
+#define IMF_AUTOFONT            0x00000002
+#define IMF_IMECANCELCOMPLETE   0x00000004
+#define IMF_IMEALWAYSSENDNOTIFY 0x00000008
+#define IMF_AUTOFONTSIZEADJUST  0x00000010
+#define IMF_UIFONTS             0x00000020
+#define IMF_DUALFONT            0x00000080
+
+/* Parameters values for the EM_SETIMEMODEBIAS message */
+#define IMF_SMODE_PLAURALCLAUSE 0x00000001
+#define IMF_SMODE_NONE          0x00000002
+
+/* 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
+#define IMF_MULTIPLEEDIT      0x00000400
+
+/* 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
+
+/* ENOLEOPFAILED.lOper value that indicates operation failure */
+#define OLEOP_DOVERB          0x00000001
+
+/* punctionation type values for wParam of EM_SETPUNCTUATION message */
+#define PC_FOLLOWING          0x00000001
+#define PC_LEADING            0x00000002
+#define PC_OVERFLOW           0x00000003
+#define PC_DELIMITER          0x00000004
+
+/* mask values in the PARAFORMAT 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
+
+/* mask values in the PARAFORMAT2 structure */
+#define PFM_SPACEBEFORE       0x00000040
+#define PFM_SPACEAFTER        0x00000080
+#define PFM_LINESPACING       0x00000100
+#define PFM_STYLE             0x00000400
+#define PFM_BORDER            0x00000800
+#define PFM_SHADING           0x00001000
+#define PFM_NUMBERINGSTYLE    0x00002000
+#define PFM_NUMBERINGTAB      0x00004000
+#define PFM_NUMBERINGSTART    0x00008000
+#define PFM_RTLPARA           0x00010000
+#define PFM_KEEP              0x00020000
+#define PFM_KEEPNEXT          0x00040000
+#define PFM_PAGEBREAKBEFORE   0x00080000
+#define PFM_NOLINENUMBER      0x00100000
+#define PFM_NOWIDOWCONTROL    0x00200000
+#define PFM_DONOTHYPHEN       0x00400000
+#define PFM_SIDEBYSIDE        0x00800000
+#define PFM_COLLAPSED         0x01000000
+#define PFM_OUTLINELEVEL      0x02000000
+#define PFM_BOX               0x04000000
+#define PFM_RESERVED2         0x08000000
+#define PFM_TABLEROWDELIMITER 0x10000000
+#define PFM_TEXTWRAPPINGBREAK 0x20000000
+#define PFM_TABLE             0x40000000
+
+#define PFM_ALL               (PFM_STARTINDENT | \
+                               PFM_RIGHTINDENT | \
+                               PFM_OFFSET | \
+                               PFM_ALIGNMENT | \
+                               PFM_TABSTOPS | \
+                               PFM_NUMBERING | \
+                               PFM_OFFSETINDENT | \
+                               PFM_RTLPARA)
+
+#define PFM_EFFECTS           (PFM_RTLPARA | \
+                               PFM_KEEP | \
+                               PFM_KEEPNEXT | \
+                               PFM_PAGEBREAKBEFORE | \
+                               PFM_NOLINENUMBER | \
+                               PFM_NOWIDOWCONTROL | \
+                               PFM_DONOTHYPHEN | \
+                               PFM_SIDEBYSIDE | \
+                               PFM_TABLEROWDELIMITER | \
+                               PFM_TABLE)
+
+#define PFM_ALL2              (PFM_ALL | \
+                               PFM_EFFECTS | \
+                               PFM_SPACEBEFORE | \
+                               PFM_SPACEAFTER | \
+                               PFM_LINESPACING | \
+                               PFM_STYLE | \
+                               PFM_BORDER | \
+                               PFM_SHADING | \
+                               PFM_NUMBERINGSTYLE | \
+                               PFM_NUMBERINGTAB | \
+                               PFM_NUMBERINGSTART)
+
+/* numbering option */
+#define PFN_BULLET            0x00000001
+#define PFN_ARABIC            0x00000002
+#define PFN_LCLETTER          0x00000003
+#define PFN_UCLETTER          0x00000004
+#define PFN_LCROMAN           0x00000005
+#define PFN_UCROMAN           0x00000006
+
+/* paragraph format numbering styles */
+#define PFNS_PAREN            0x00000000
+#define PFNS_PARENS           0x00000100
+#define PFNS_PERIOD           0x00000200
+#define PFNS_PLAIN            0x00000300
+#define PFNS_NONUMBER         0x00000400
+#define PFNS_NEWNUMBER        0x00008000
+
+/* paragraph alignment */
+#define PFA_LEFT              0x00000001
+#define PFA_RIGHT             0x00000002
+#define PFA_CENTER            0x00000003
+#define PFA_JUSTIFY           0x00000004
+#define PFA_FULL_INTERWORD    0x00000004
+#define PFA_FULL_INTERLETTER  0x00000005
+#define PFA_FULL_SCALED       0x00000006
+#define PFA_FULL_GLYPHS       0x00000007
+#define PFA_SNAP_GRID         0x00000008
+
+/* paragraph effects */
+#define PFE_RTLPARA           0x00000001
+#define PFE_KEEP              0x00000002
+#define PFE_KEEPNEXT          0x00000004
+#define PFE_PAGEBREAKBEFORE   0x00000008
+#define PFE_NOLINENUMBER      0x00000010
+#define PFE_NOWIDOWCONTROL    0x00000020
+#define PFE_DONOTHYPHEN       0x00000040
+#define PFE_SIDEBYSIDE        0x00000080
+#define PFE_COLLAPSED         0x00000100
+#define PFE_BOX               0x00000400
+#define PFE_TABLEROWDELIMITER 0x00001000
+#define PFE_TEXTWRAPPINGBREAK 0x00002000
+#define PFE_TABLE             0x00004000
+
+/* Set Edit Style flags for EM_SETEDITSTYLE message */
+#define SES_EMULATESYSEDIT      0x00000001
+#define SES_BEEPONMAXTEXT       0x00000002
+#define SES_EXTENDBACKCOLOR     0x00000004
+#define SES_MAPCPS              0x00000008
+#define SES_EMULATE10           0x00000010
+#define SES_USECRLF             0x00000020
+#define SES_NOXLTSYMBOLRANGE    0x00000020
+#define SES_USEAIMM             0x00000040
+#define SES_NOIME               0x00000080
+#define SES_ALLOWBEEPS          0x00000100
+#define SES_UPPERCASE           0x00000200
+#define SES_LOWERCASE           0x00000400
+#define SES_NOINPUTSEQUENCECHK  0x00000800
+#define SES_BIDI                0x00001000
+#define SES_SCROLLONKILLFOCUS   0x00002000
+#define SES_XLTCRCRLFTOCR       0x00004000
+#define SES_DRAFTMODE           0x00008000
+#define SES_USECTF              0x00010000
+#define SES_HIDEGRIDLINES       0x00020000
+#define SES_USEATFONT           0x00040000
+#define SES_CUSTOMLOOK          0x00080000
+#define SES_LBSCROLLNOTIFY      0x00100000
+#define SES_CTFALLOWEMBED       0x00200000
+#define SES_CTFALLOWSMARTTAG    0x00400000
+#define SES_CTFALLOWPROOFING    0x00800000
+
+/* streaming flags */
+#define SFF_WRITEXTRAPAR      0x00000080
+#define SFF_PWD               0x00000800
+#define SFF_KEEPDOCINFO       0x00001000
+#define SFF_PERSISTVIEWSCALE  0x00002000
+#define SFF_PLAINRTF          0x00004000
+#define SFF_SELECTION         0x00008000
+
+typedef enum _undonameid
+{
+    UID_UNKNOWN     = 0,
+    UID_TYPING      = 1,
+    UID_DELETE      = 2,
+    UID_DRAGDROP    = 3,
+    UID_CUT         = 4,
+    UID_PASTE       = 5,
+    UID_AUTOCORRECT = 6
+} UNDONAMEID;
+
 typedef LONG (*EDITWORDBREAKPROCEX)(char*,LONG,BYTE,INT);
-/* Defines for EM_SETTYPOGRAPHYOPTIONS */
-#define        TO_ADVANCEDTYPOGRAPHY   1
-#define        TO_SIMPLELINEBREAK      2
-/* Defines for GETTEXTLENGTHEX */
-#define GTL_DEFAULT    0
-#define GTL_USECRLF    1
-#define GTL_PRECISE    2
-#define GTL_CLOSE      4
-#define GTL_NUMCHARS   8
-#define GTL_NUMBYTES   16
+
+#define VM_OUTLINE            0x00000002
+#define VM_NORMAL             0x00000004
+#define VM_PAGE               0x00000009
+
+/* 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
+
+#define WBF_CLASS             ((BYTE) 0x0F)
+#define WBF_ISWHITE           ((BYTE) 0x10)
+#define WBF_BREAKLINE         ((BYTE) 0x20)
+#define WBF_BREAKAFTER        ((BYTE) 0x40)
+
+/* Placeholder unicode character for an embedded object */
+#ifndef WCH_EMBEDDING
+#define WCH_EMBEDDING         (WCHAR)0xFFFC
+#endif
+
+/* 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
+
+/* GETTEXTEX structure flags */
+#define GT_DEFAULT            0x00000000
+#define GT_USECRLF            0x00000001
+#define GT_SELECTION          0x00000002
+#define GT_RAWTEXT            0x00000004
+#define GT_NOHIDDENTEXT       0x00000008
+
+/* Options of the EM_SETTYPOGRAPHYOPTIONS message */
+#define TO_ADVANCEDTYPOGRAPHY   0x00000001
+#define TO_SIMPLELINEBREAK      0x00000002
+#define TO_DISABLECUSTOMTEXTOUT 0x00000004
+#define TO_ADVANCEDLAYOUT       0x00000008
+
 typedef struct _gettextlengthex {
-       DWORD flags;
-       UINT codepage;
+    DWORD      flags;
+    UINT       codepage;
 } GETTEXTLENGTHEX;
-#ifdef UNICODE
-typedef CHARFORMATW CHARFORMAT;
-typedef CHARFORMAT2W CHARFORMAT2;
-typedef FINDTEXTW FINDTEXT;
-typedef FINDTEXTEXW FINDTEXTEX;
-typedef TEXTRANGEW TEXTRANGE;
-#else
-typedef CHARFORMATA CHARFORMAT;
-typedef CHARFORMAT2A CHARFORMAT2;
-typedef FINDTEXTA FINDTEXT;
-typedef FINDTEXTEXA FINDTEXTEX;
-typedef TEXTRANGEA TEXTRANGE;
-#endif
-#pragma pack(pop)
+
+/* 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
+
+#define GCM_RIGHTMOUSEDROP    0x8000
+
+/* Options of the EM_SETTEXTEX message */
+typedef struct _settextex {
+    DWORD      flags;
+    UINT       codepage;
+} SETTEXTEX;
+
+/* Flags of the EM_SETTEXTEX message */
+#define ST_DEFAULT           0x00000000        
+#define ST_KEEPUNDO           0x00000001
+#define ST_SELECTION          0x00000002
+
+#define ST_NEWCHARS           0x00000004
+
 #ifdef __cplusplus
 }
 #endif
-#endif
+
+#include <poppack.h>
+
+#endif /* __WINE_RICHEDIT_H */