xref: /reactos/sdk/include/psdk/richedit.h (revision 34593d93)
1 /*
2  * Copyright (C) 2000 Jean-Claude Batista
3  * Copyright (C) 2002 Andriy Palamarchuk
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
18  */
19 
20 #ifndef __WINE_RICHEDIT_H
21 #define __WINE_RICHEDIT_H
22 
23 #include <pshpack4.h>
24 
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28 
29 #ifndef _RICHEDIT_VER
30 #define _RICHEDIT_VER   0x0300
31 #endif /* _RICHEDIT_VER */
32 
33 #define cchTextLimitDefault 0x7fff
34 
35 #if defined(_MSC_VER) || defined(RC_INVOKED)
36 # define MSFTEDIT_CLASS L"RichEdit50W"
37 #elif defined(__GNUC__)
38 # define MSFTEDIT_CLASS (const WCHAR []){ 'R','i','c','h','E','d','i','t','5','0','W',0 }
39 #else
40 static const WCHAR MSFTEDIT_CLASS[] = { 'R','i','c','h','E','d','i','t','5','0','W',0 };
41 #endif
42 
43 #define RICHEDIT_CLASS20A	"RichEdit20A"
44 
45 #if defined(_MSC_VER) || defined(RC_INVOKED)
46 # define RICHEDIT_CLASS20W  L"RichEdit20W"
47 #elif defined(__GNUC__)
48 # define RICHEDIT_CLASS20W (const WCHAR []){ 'R','i','c','h','E','d','i','t','2','0','W',0 }
49 #else
50 static const WCHAR RICHEDIT_CLASS20W[] = { 'R','i','c','h','E','d','i','t','2','0','W',0 };
51 #endif
52 #define RICHEDIT_CLASS10A	"RICHEDIT"
53 
54 #if (_RICHEDIT_VER >= 0x0200 )
55 #define RICHEDIT_CLASS		WINELIB_NAME_AW(RICHEDIT_CLASS20)
56 #else
57 #define RICHEDIT_CLASS		RICHEDIT_CLASS10A
58 #endif
59 
60 #ifndef WM_NOTIFY
61 #define WM_NOTIFY               0x004e
62 #endif
63 #ifndef WM_CONTEXTMENU
64 #define WM_CONTEXTMENU          0x007b
65 #endif
66 #ifndef WM_UNICHAR
67 #define WM_UNICHAR              0x0109
68 #endif
69 #ifndef WM_PRINTCLIENT
70 #define WM_PRINTCLIENT          0x0318
71 #endif
72 
73 #ifndef EM_GETLIMITTEXT
74 #define EM_GETLIMITTEXT         (WM_USER + 37)
75 #endif
76 #ifndef EM_POSFROMCHAR
77 #define EM_POSFROMCHAR          (WM_USER + 38)
78 #define EM_CHARFROMPOS          (WM_USER + 39)
79 #endif
80 #ifndef EM_SCROLLCARET
81 #define EM_SCROLLCARET		(WM_USER + 49)
82 #endif
83 #define EM_CANPASTE		(WM_USER + 50)
84 #define EM_DISPLAYBAND		(WM_USER + 51)
85 #define EM_EXGETSEL		(WM_USER + 52)
86 #define EM_EXLIMITTEXT		(WM_USER + 53)
87 #define EM_EXLINEFROMCHAR	(WM_USER + 54)
88 #define EM_EXSETSEL		(WM_USER + 55)
89 #define EM_FINDTEXT		(WM_USER + 56)
90 #define EM_FORMATRANGE		(WM_USER + 57)
91 #define EM_GETCHARFORMAT	(WM_USER + 58)
92 #define EM_GETEVENTMASK		(WM_USER + 59)
93 #define EM_GETOLEINTERFACE	(WM_USER + 60)
94 #define EM_GETPARAFORMAT	(WM_USER + 61)
95 #define EM_GETSELTEXT		(WM_USER + 62)
96 #define EM_HIDESELECTION	(WM_USER + 63)
97 #define EM_PASTESPECIAL		(WM_USER + 64)
98 #define EM_REQUESTRESIZE	(WM_USER + 65)
99 #define EM_SELECTIONTYPE	(WM_USER + 66)
100 #define EM_SETBKGNDCOLOR	(WM_USER + 67)
101 #define EM_SETCHARFORMAT	(WM_USER + 68)
102 #define EM_SETEVENTMASK		(WM_USER + 69)
103 #define EM_SETOLECALLBACK	(WM_USER + 70)
104 #define EM_SETPARAFORMAT	(WM_USER + 71)
105 #define EM_SETTARGETDEVICE	(WM_USER + 72)
106 #define EM_STREAMIN		(WM_USER + 73)
107 #define EM_STREAMOUT		(WM_USER + 74)
108 #define EM_GETTEXTRANGE		(WM_USER + 75)
109 #define EM_FINDWORDBREAK	(WM_USER + 76)
110 #define EM_SETOPTIONS		(WM_USER + 77)
111 #define EM_GETOPTIONS		(WM_USER + 78)
112 #define EM_FINDTEXTEX		(WM_USER + 79)
113 #define EM_GETWORDBREAKPROCEX	(WM_USER + 80)
114 #define EM_SETWORDBREAKPROCEX	(WM_USER + 81)
115 
116 #define EM_SETUNDOLIMIT		(WM_USER + 82)
117 #define EM_REDO			(WM_USER + 84)
118 #define EM_CANREDO		(WM_USER + 85)
119 #define EM_GETUNDONAME		(WM_USER + 86)
120 #define EM_GETREDONAME		(WM_USER + 87)
121 #define EM_STOPGROUPTYPING	(WM_USER + 88)
122 
123 #define EM_SETTEXTMODE		(WM_USER + 89)
124 #define EM_GETTEXTMODE		(WM_USER + 90)
125 #define EM_AUTOURLDETECT	(WM_USER + 91)
126 #define EM_GETAUTOURLDETECT	(WM_USER + 92)
127 #define EM_SETPALETTE		(WM_USER + 93)
128 #define EM_GETTEXTEX		(WM_USER + 94)
129 #define EM_GETTEXTLENGTHEX	(WM_USER + 95)
130 #define EM_SHOWSCROLLBAR	(WM_USER + 96)
131 #define EM_SETTEXTEX		(WM_USER + 97)
132 
133 #define EM_SETPUNCTUATION	(WM_USER + 100)
134 #define EM_GETPUNCTUATION	(WM_USER + 101)
135 #define EM_SETWORDWRAPMODE	(WM_USER + 102)
136 #define EM_GETWORDWRAPMODE	(WM_USER + 103)
137 #define EM_SETIMECOLOR		(WM_USER + 104)
138 #define EM_GETIMECOLOR		(WM_USER + 105)
139 #define EM_SETIMEOPTIONS	(WM_USER + 106)
140 #define EM_GETIMEOPTIONS	(WM_USER + 107)
141 #define EM_CONVPOSITION		(WM_USER + 108)
142 
143 #define EM_SETLANGOPTIONS	(WM_USER + 120)
144 #define EM_GETLANGOPTIONS	(WM_USER + 121)
145 #define EM_GETIMECOMPMODE	(WM_USER + 122)
146 
147 #define EM_FINDTEXTW		(WM_USER + 123)
148 #define EM_FINDTEXTEXW		(WM_USER + 124)
149 
150 #define EM_RECONVERSION		(WM_USER + 125)
151 #define EM_SETIMEMODEBIAS	(WM_USER + 126)
152 #define EM_GETIMEMODEBIAS	(WM_USER + 127)
153 
154 #define EM_SETBIDIOPTIONS	(WM_USER + 200)
155 #define EM_GETBIDIOPTIONS	(WM_USER + 201)
156 
157 #define EM_SETTYPOGRAPHYOPTIONS (WM_USER + 202)
158 #define EM_GETTYPOGRAPHYOPTIONS (WM_USER + 203)
159 
160 #define EM_SETEDITSTYLE		(WM_USER + 204)
161 #define EM_GETEDITSTYLE		(WM_USER + 205)
162 
163 #define EM_OUTLINE              (WM_USER + 220)
164 
165 #define EM_GETSCROLLPOS         (WM_USER + 221)
166 #define EM_SETSCROLLPOS         (WM_USER + 222)
167 
168 #define EM_SETFONTSIZE          (WM_USER + 223)
169 #define EM_GETZOOM		(WM_USER + 224)
170 #define EM_SETZOOM		(WM_USER + 225)
171 #define EM_GETVIEWKIND          (WM_USER + 226)
172 #define EM_SETVIEWKIND          (WM_USER + 227)
173 
174 #define EM_GETPAGE              (WM_USER + 228)
175 #define EM_SETPAGE              (WM_USER + 229)
176 #define EM_GETHYPHENATEINFO     (WM_USER + 230)
177 #define EM_SETHYPHENATEINFO     (WM_USER + 231)
178 #define EM_GETPAGEROTATE        (WM_USER + 235)
179 #define EM_SETPAGEROTATE        (WM_USER + 236)
180 #define EM_GETCTFMODEBIAS       (WM_USER + 237)
181 #define EM_SETCTFMODEBIAS       (WM_USER + 238)
182 #define EM_GETCTFOPENSTATUS     (WM_USER + 240)
183 #define EM_SETCTFOPENSTATUS     (WM_USER + 241)
184 #define EM_GETIMECOMPTEXT       (WM_USER + 242)
185 #define EM_ISIME                (WM_USER + 243)
186 #define EM_GETIMEPROPERTY       (WM_USER + 244)
187 #define EM_GETQUERYRTFOBJ       (WM_USER + 269)
188 #define EM_SETQUERYRTFOBJ       (WM_USER + 270)
189 
190 /* New notifications */
191 #define EN_MSGFILTER                    0x0700
192 #define EN_REQUESTRESIZE                0x0701
193 #define EN_SELCHANGE                    0x0702
194 #define EN_DROPFILES                    0x0703
195 #define EN_PROTECTED                    0x0704
196 #define EN_CORRECTTEXT                  0x0705
197 #define EN_STOPNOUNDO                   0x0706
198 #define EN_IMECHANGE                    0x0707
199 #define EN_SAVECLIPBOARD                0x0708
200 #define EN_OLEOPFAILED                  0x0709
201 #define EN_OBJECTPOSITIONS              0x070a
202 #define EN_LINK				0x070b
203 #define EN_DRAGDROPDONE                 0x070c
204 #define EN_PARAGRAPHEXPANDED		0x070d
205 #define EN_PAGECHANGE                   0x070e
206 #define EN_LOWFIRTF                     0x070f
207 #define EN_ALIGNLTR			0x0710
208 #define EN_ALIGNRTL			0x0711
209 
210 
211 typedef DWORD (CALLBACK * EDITSTREAMCALLBACK)( DWORD_PTR, LPBYTE, LONG, LONG * );
212 
213 
214 #define yHeightCharPtsMost    1638
215 #define lDefaultTab           720
216 
217 /* tab stops number limit */
218 #define MAX_TAB_STOPS         0x00000020
219 
220 #define MAX_TABLE_CELLS       63
221 
222 /* Rich edit control styles */
223 #define ES_NOOLEDRAGDROP      0x00000008
224 #define ES_DISABLENOSCROLL    0x00002000
225 #define ES_SUNKEN             0x00004000
226 #define ES_SAVESEL            0x00008000
227 #define ES_SELFIME            0x00040000
228 #define ES_NOIME              0x00080000
229 #define ES_VERTICAL           0x00400000
230 #define ES_SELECTIONBAR       0x01000000
231 #define ES_EX_NOCALLOLEINIT   0x01000000
232 
233 /* the character formatting options */
234 #define SCF_DEFAULT           0x00000000
235 #define SCF_SELECTION         0x00000001
236 #define SCF_WORD              0x00000002
237 #define SCF_ALL               0x00000004
238 #define SCF_USEUIRULES        0x00000008
239 #define SCF_ASSOCIATEFONT     0x00000010
240 #define SCF_NOKBUPDATE        0x00000020
241 #define SCF_ASSOCIATEFONT2    0x00000040
242 
243 #ifndef WM_NOTIFY
244 typedef struct _nmhdr
245 {
246     HWND       hwndFrom;
247     UINT       idFrom;
248     UINT       code;
249 } NMHDR;
250 #endif
251 
252 /* CHARFORMAT structure */
253 typedef struct _charformat
254 {
255     UINT       cbSize;
256     DWORD      dwMask;
257     DWORD      dwEffects;
258     LONG       yHeight;
259     LONG       yOffset;
260     COLORREF   crTextColor;
261     BYTE       bCharSet;
262     BYTE       bPitchAndFamily;
263     char       szFaceName[LF_FACESIZE];
264 } CHARFORMATA;
265 
266 typedef struct _charformatw
267 {
268     UINT       cbSize;
269     DWORD      dwMask;
270     DWORD      dwEffects;
271     LONG       yHeight;
272     LONG       yOffset;
273     COLORREF   crTextColor;
274     BYTE       bCharSet;
275     BYTE       bPitchAndFamily;
276     WCHAR      szFaceName[LF_FACESIZE];
277 } CHARFORMATW;
278 
279 DECL_WINELIB_TYPE_AW(CHARFORMAT)
280 
281 typedef struct _charformat2a {
282     UINT       cbSize;
283     DWORD      dwMask;
284     DWORD      dwEffects;
285     LONG       yHeight;
286     LONG       yOffset;
287     COLORREF   crTextColor;
288     BYTE       bCharSet;
289     BYTE       bPitchAndFamily;
290     char       szFaceName[LF_FACESIZE];
291     WORD       wWeight;
292     SHORT      sSpacing;
293     COLORREF   crBackColor;
294     LCID       lcid;
295     DWORD      dwReserved;
296     SHORT      sStyle;
297     WORD       wKerning;
298     BYTE       bUnderlineType;
299     BYTE       bAnimation;
300     BYTE       bRevAuthor;
301     BYTE       bReserved1;
302 } CHARFORMAT2A;
303 
304 typedef struct _charformat2w {
305     UINT       cbSize;
306     DWORD      dwMask;
307     DWORD      dwEffects;
308     LONG       yHeight;
309     LONG       yOffset;
310     COLORREF   crTextColor;
311     BYTE       bCharSet;
312     BYTE       bPitchAndFamily;
313     WCHAR      szFaceName[LF_FACESIZE];
314     WORD       wWeight;
315     SHORT      sSpacing;
316     COLORREF   crBackColor;
317     LCID       lcid;
318     DWORD      dwReserved;
319     SHORT      sStyle;
320     WORD       wKerning;
321     BYTE       bUnderlineType;
322     BYTE       bAnimation;
323     BYTE       bRevAuthor;
324     BYTE       bReserved1;
325 } CHARFORMAT2W;
326 
327 DECL_WINELIB_TYPE_AW(CHARFORMAT2)
328 
329 #define CHARFORMATDELTA       (sizeof(CHARFORMAT2) - sizeof(CHARFORMAT))
330 
331 /* CHARFORMAT masks */
332 #define CFM_BOLD              0x00000001
333 #define CFM_ITALIC            0x00000002
334 #define CFM_UNDERLINE         0x00000004
335 #define CFM_STRIKEOUT         0x00000008
336 #define CFM_PROTECTED         0x00000010
337 #define CFM_LINK              0x00000020
338 #define CFM_SMALLCAPS         0x00000040
339 #define CFM_ALLCAPS           0x00000080
340 #define CFM_HIDDEN            0x00000100
341 #define CFM_OUTLINE           0x00000200
342 #define CFM_SHADOW            0x00000400
343 #define CFM_EMBOSS            0x00000800
344 #define CFM_IMPRINT           0x00001000
345 #define CFM_DISABLED          0x00002000
346 #define CFM_REVISED           0x00004000
347 #define CFM_REVAUTHOR         0x00008000
348 #define CFM_SUBSCRIPT         0x00030000
349 #define CFM_SUPERSCRIPT       0x00030000
350 #define CFM_ANIMATION         0x00040000
351 #define CFM_STYLE             0x00080000
352 #define CFM_KERNING           0x00100000
353 #define CFM_SPACING           0x00200000
354 #define CFM_WEIGHT            0x00400000
355 #define CFM_UNDERLINETYPE     0x00800000
356 #define CFM_LCID              0x02000000
357 #define CFM_BACKCOLOR         0x04000000
358 #define CFM_CHARSET           0x08000000
359 #define CFM_OFFSET            0x10000000
360 #define CFM_FACE              0x20000000
361 #define CFM_COLOR             0x40000000
362 #define CFM_SIZE              0x80000000
363 
364 #define CFM_EFFECTS           (CFM_BOLD | \
365                                CFM_ITALIC | \
366                                CFM_UNDERLINE | \
367                                CFM_COLOR | \
368                                CFM_STRIKEOUT | \
369                                CFE_PROTECTED | \
370                                CFM_LINK)
371 
372 #define CFM_EFFECTS2          (CFM_EFFECTS | \
373                                CFM_DISABLED | \
374                                CFM_SMALLCAPS | \
375                                CFM_ALLCAPS | \
376                                CFM_HIDDEN | \
377                                CFM_OUTLINE | \
378                                CFM_SHADOW | \
379                                CFM_EMBOSS | \
380                                CFM_IMPRINT | \
381                                CFM_DISABLED | \
382                                CFM_REVISED | \
383                                CFM_SUBSCRIPT | \
384                                CFM_SUPERSCRIPT | \
385                                CFM_BACKCOLOR)
386 
387 #define CFM_ALL               (CFM_EFFECTS | \
388                                CFM_SIZE | \
389                                CFM_FACE | \
390                                CFM_OFFSET | \
391                                CFM_CHARSET)
392 
393 #define CFM_ALL2              (CFM_ALL | \
394                                CFM_EFFECTS2 | \
395                                CFM_BACKCOLOR | \
396                                CFM_LCID | \
397                                CFM_UNDERLINETYPE | \
398                                CFM_WEIGHT | \
399                                CFM_REVAUTHOR | \
400                                CFM_SPACING | \
401                                CFM_KERNING | \
402                                CFM_STYLE | \
403                                CFM_ANIMATION)
404 
405 /* CHARFORMAT effects */
406 #define CFE_BOLD              0x00000001
407 #define CFE_ITALIC            0x00000002
408 #define CFE_UNDERLINE         0x00000004
409 #define CFE_STRIKEOUT         0x00000008
410 #define CFE_PROTECTED         0x00000010
411 #define CFE_LINK              0x00000020
412 #define CFE_SUBSCRIPT         0x00010000
413 #define CFE_SUPERSCRIPT       0x00020000
414 #define CFE_AUTOCOLOR         0x40000000
415 
416 #define CFE_SMALLCAPS         CFM_SMALLCAPS
417 #define CFE_ALLCAPS           CFM_ALLCAPS
418 #define CFE_HIDDEN            CFM_HIDDEN
419 #define CFE_OUTLINE           CFM_OUTLINE
420 #define CFE_SHADOW            CFM_SHADOW
421 #define CFE_EMBOSS            CFM_EMBOSS
422 #define CFE_IMPRINT           CFM_IMPRINT
423 #define CFE_DISABLED          CFM_DISABLED
424 #define CFE_REVISED           CFM_REVISED
425 #define CFE_AUTOBACKCOLOR     CFM_BACKCOLOR
426 
427 #define CFU_UNDERLINENONE             0x00
428 #define CFU_UNDERLINE                 0x01
429 #define CFU_UNDERLINEWORD             0x02
430 #define CFU_UNDERLINEDOUBLE           0x03
431 #define CFU_UNDERLINEDOTTED           0x04
432 #define CFU_UNDERLINEDASH             0x05
433 #define CFU_UNDERLINEDASHDOT          0x06
434 #define CFU_UNDERLINEDASHDOTDOT       0x07
435 #define CFU_UNDERLINEWAVE             0x08
436 #define CFU_UNDERLINETHICK            0x09
437 #define CFU_UNDERLINEHAIRLINE         0x0a
438 #define CFU_UNDERLINEDOUBLEWAVE       0x0b
439 #define CFU_UNDERLINEHEAVYWAVE        0x0c
440 #define CFU_UNDERLINELONGDASH         0x0d
441 #define CFU_UNDERLINETHICKDASH        0x0e
442 #define CFU_UNDERLINETHICKDASHDOT     0x0f
443 #define CFU_UNDERLINETHICKDASHDOTDOT  0x10
444 #define CFU_UNDERLINETHICKDOTTED      0x11
445 #define CFU_UNDERLINETHICKLONGDASH    0x12
446 #define CFU_INVERT                    0xFE
447 #define CFU_CF1UNDERLINE              0xFF
448 
449 /* ECO operations */
450 #define ECOOP_SET             0x0001
451 #define ECOOP_OR              0x0002
452 #define ECOOP_AND             0x0003
453 #define ECOOP_XOR             0x0004
454 
455 /* edit control options */
456 #define ECO_AUTOWORDSELECTION 0x00000001
457 #define ECO_AUTOVSCROLL       0x00000040
458 #define ECO_AUTOHSCROLL       0x00000080
459 #define ECO_NOHIDESEL         0x00000100
460 #define ECO_READONLY          0x00000800
461 #define ECO_WANTRETURN        0x00001000
462 #define ECO_SAVESEL           0x00008000
463 #define ECO_SELECTIONBAR      0x01000000
464 #define ECO_VERTICAL          0x00400000
465 
466 /* Event notification masks */
467 #define ENM_NONE              0x00000000
468 #define ENM_CHANGE            0x00000001
469 #define ENM_UPDATE            0x00000002
470 #define ENM_SCROLL            0x00000004
471 #define ENM_SCROLLEVENTS      0x00000008
472 #define ENM_DRAGDROPDONE      0x00000010
473 #define ENM_PARAGRAPHEXPANDED 0x00000020
474 #define ENM_PAGECHANGE        0x00000040
475 #define ENM_KEYEVENTS         0x00010000
476 #define ENM_MOUSEEVENTS       0x00020000
477 #define ENM_REQUESTRESIZE     0x00040000
478 #define ENM_SELCHANGE         0x00080000
479 #define ENM_DROPFILES         0x00100000
480 #define ENM_PROTECTED         0x00200000
481 #define ENM_CORRECTTEXT       0x00400000
482 #define ENM_IMECHANGE         0x00800000
483 #define ENM_LANGCHANGE        0x01000000
484 #define ENM_OBJECTPOSITIONS   0x02000000
485 #define ENM_LINK              0x04000000
486 #define ENM_LOWFIRTF          0x08000000
487 
488 typedef struct _bidioptions
489 {
490     UINT    cbSize;
491     WORD    wMask;
492     WORD    wEffects;
493 } BIDIOPTIONS;
494 
495 #ifndef __RICHEDIT_CHARRANGE_DEFINED
496 #define __RICHEDIT_CHARRANGE_DEFINED
497 
498 typedef struct _charrange
499 {
500     LONG    cpMin;
501     LONG    cpMax;
502 } CHARRANGE;
503 
504 #endif /* __RICHEDIT_CHARRANGE_DEFINED */
505 
506 typedef struct _textrange
507 {
508     CHARRANGE chrg;
509     LPSTR     lpstrText;
510 } TEXTRANGEA;
511 
512 typedef struct _textrangew
513 {
514     CHARRANGE chrg;
515     LPWSTR     lpstrText;
516 } TEXTRANGEW;
517 
518 DECL_WINELIB_TYPE_AW(TEXTRANGE)
519 
520 typedef struct _editstream
521 {
522     DWORD_PTR		dwCookie;
523     DWORD		dwError;
524     EDITSTREAMCALLBACK	pfnCallback;
525 } EDITSTREAM;
526 
527 typedef struct _compcolor {
528     COLORREF   crText;
529     COLORREF   crBackground;
530     DWORD      dwEffects;
531 } COMPCOLOR;
532 
533 typedef struct _encorrecttext {
534     NMHDR      nmhdr;
535     CHARRANGE  chrg;
536     WORD       seltyp;
537 } ENCORRECTTEXT;
538 
539 typedef struct _endropfiles {
540     NMHDR      nmhdr;
541     HANDLE     hDrop;
542     LONG       cp;
543     BOOL       fProtected;
544 } ENDROPFILES;
545 
546 typedef struct _enlink {
547     NMHDR      nmhdr;
548     UINT       msg;
549     WPARAM     wParam;
550     LPARAM     lParam;
551     CHARRANGE  chrg;
552 } ENLINK;
553 
554 typedef struct _enlowfirtf {
555     NMHDR      nmhdr;
556     char       *szControl;
557 } ENLOWFIRTF;
558 
559 typedef struct {
560     NMHDR      nmhdr;
561     LONG       iob;
562     LONG       lOper;
563     HRESULT    hr;
564 } ENOLEOPFAILED;
565 
566 typedef struct _enprotected {
567     NMHDR      nmhdr;
568     UINT       msg;
569     WPARAM     wParam;
570     LPARAM     lParam;
571     CHARRANGE  chrg;
572 } ENPROTECTED, *LPENPROTECTED;
573 
574 typedef struct _ensaveclipboard {
575     NMHDR      nmhdr;
576     LONG       cObjectCount;
577     LONG       cch;
578 } ENSAVECLIPBOARD;
579 
580 typedef struct _findtextA {
581     CHARRANGE  chrg;
582     LPCSTR     lpstrText;
583 } FINDTEXTA;
584 
585 typedef struct _findtextW {
586     CHARRANGE  chrg;
587     LPCWSTR    lpstrText;
588 } FINDTEXTW;
589 
590 DECL_WINELIB_TYPE_AW(FINDTEXT)
591 
592 typedef struct _findtextexA {
593     CHARRANGE  chrg;
594     LPCSTR     lpstrText;
595     CHARRANGE  chrgText;
596 } FINDTEXTEXA;
597 
598 typedef struct _findtextexW {
599     CHARRANGE  chrg;
600     LPCWSTR    lpstrText;
601     CHARRANGE  chrgText;
602 } FINDTEXTEXW;
603 
604 DECL_WINELIB_TYPE_AW(FINDTEXTEX)
605 
606 typedef struct _formatrange {
607     HDC        hdc;
608     HDC        hdcTarget;
609     RECT       rc;
610     RECT       rcPage;
611     CHARRANGE  chrg;
612 } FORMATRANGE;
613 
614 typedef enum tagKHYPH
615 {
616     khyphNil           = 0,
617     khyphNormal        = 1,
618     khyphAddBefore     = 2,
619     khyphChangeBefore  = 3,
620     khyphDeleteBefore  = 4,
621     khyphChangeAfter   = 5,
622     khyphDelAndChange  = 6
623 } KHYPH;
624 
625 typedef struct hyphresult
626 {
627     KHYPH      khyph;
628     LONG       ichHyph;
629     WCHAR      chHyph;
630 } HYPHRESULT;
631 
632 typedef struct tagHyphenateInfo
633 {
634     SHORT      cbSize;
635     SHORT      dxHyphenateZone;
636     void       (WINAPI* pfnHyphenate)(WCHAR*, LANGID, LONG, HYPHRESULT*);
637 } HYPHENATEINFO;
638 
639 typedef struct _msgfilter {
640     NMHDR      nmhdr;
641     UINT       msg;
642     WPARAM     wParam;
643     LPARAM     lParam;
644 } MSGFILTER;
645 
646 typedef struct _objectpositions {
647     NMHDR      nmhdr;
648     LONG       cObjectCount;
649     LONG       *pcpPositions;
650 } OBJECTPOSITIONS;
651 
652 typedef struct _paraformat {
653     UINT       cbSize;
654     DWORD      dwMask;
655     WORD       wNumbering;
656     WORD       wReserved;
657     LONG       dxStartIndent;
658     LONG       dxRightIndent;
659     LONG       dxOffset;
660     WORD       wAlignment;
661     SHORT      cTabCount;
662     LONG       rgxTabs[MAX_TAB_STOPS];
663 } PARAFORMAT;
664 
665 typedef struct _paraformat2 {
666     UINT       cbSize;
667     DWORD      dwMask;
668     WORD       wNumbering;
669     WORD       wEffects;
670     LONG       dxStartIndent;
671     LONG       dxRightIndent;
672     LONG       dxOffset;
673     WORD       wAlignment;
674     SHORT      cTabCount;
675     LONG       rgxTabs[MAX_TAB_STOPS];
676     LONG       dySpaceBefore, dySpaceAfter, dyLineSpacing;
677     SHORT      sStyle;
678     BYTE       bLineSpacingRule, bOutlineLevel;
679     WORD       wShadingWeight, wShadingStyle;
680     WORD       wNumberingStart, wNumberingStyle, wNumberingTab;
681     WORD       wBorderSpace, wBorderWidth, wBorders;
682 } PARAFORMAT2;
683 
684 typedef struct _selchange {
685     NMHDR      nmhdr;
686     CHARRANGE  chrg;
687     WORD       seltyp;
688 } SELCHANGE;
689 
690 typedef struct _reqresize {
691     NMHDR      nmhdr;
692     RECT       rc;
693 } REQRESIZE;
694 
695 typedef struct _repastespecial {
696     DWORD      dwAspect;
697     DWORD_PTR  dwParam;
698 } REPASTESPECIAL;
699 
700 typedef struct _punctuation {
701     UINT       iSize;
702     LPSTR      szPunctuation;
703 } PUNCTUATION;
704 
705 typedef struct _gettextex {
706     DWORD      cb;
707     DWORD      flags;
708     UINT       codepage;
709     LPCSTR     lpDefaultChar;
710     LPBOOL     lpUsedDefChar;
711 } GETTEXTEX;
712 
713 typedef struct _imecomptext {
714     LONG       cb;
715     DWORD      flags;
716 } IMECOMPTEXT;
717 
718 void WINAPI HyphenateProc(WCHAR*, LANGID, LONG, HYPHRESULT*);
719 
720 #define SF_TEXT		      0x00000001
721 #define SF_RTF		      0x00000002
722 #define SF_RTFNOOBJS	      0x00000003
723 #define SF_TEXTIZED	      0x00000004
724 #define SF_UNICODE            0x00000010
725 #define SF_USECODEPAGE        0x00000020
726 #define SF_NCRFORNONASCII     0x00000040
727 #define SF_RTFVAL             0x00000700
728 
729 /* BIDIOPTIONS.wMask flag values */
730 #define BOM_DEFPARADIR        0x00000001
731 #define BOM_PLAINTEXT         0x00000002
732 #define BOM_NEUTRALOVERRIDE   0x00000004
733 #define BOM_CONTEXTREADING    0x00000008
734 #define BOM_CONTEXTALIGNMENT  0x00000010
735 #define BOM_LEGACYBIDICLASS   0x00000040
736 
737 /* BIDIOPTIONS.wEffects flag values */
738 #define BOE_RTLDIR            0x00000001
739 #define BOE_PLAINTEXT         0x00000002
740 #define BOE_NEUTRALOVERRIDE   0x00000004
741 #define BOE_CONTEXTREADING    0x00000008
742 #define BOE_CONTEXTALIGNMENT  0x00000010
743 #define BOE_LEGACYBIDICLASS   0x00000040
744 
745 /* Clipboard formats */
746 #define CF_RTF          TEXT("Rich Text Format")
747 #define CF_RTFNOOBJS    TEXT("Rich Text Format Without Objects")
748 #define CF_RETEXTOBJ    TEXT("RichEdit Text and Objects")
749 
750 /* Mode bias wParam values for EM_SETCTFMODEBIAS message */
751 #define CTFMODEBIAS_DEFAULT                0x00000000
752 #define CTFMODEBIAS_FILENAME               0x00000001
753 #define CTFMODEBIAS_NAME                   0x00000002
754 #define CTFMODEBIAS_READING                0x00000003
755 #define CTFMODEBIAS_DATETIME               0x00000004
756 #define CTFMODEBIAS_CONVERSATION           0x00000005
757 #define CTFMODEBIAS_NUMERIC                0x00000006
758 #define CTFMODEBIAS_HIRAGANA               0x00000007
759 #define CTFMODEBIAS_KATAKANA               0x00000008
760 #define CTFMODEBIAS_HANGUL                 0x00000009
761 #define CTFMODEBIAS_HALFWIDTHKATAKANA      0x0000000a
762 #define CTFMODEBIAS_FULLWIDTHALPHANUMERIC  0x0000000b
763 #define CTFMODEBIAS_HALFWIDTHALPHANUMERIC  0x0000000c
764 
765 #define EMO_EXIT              0x00000000
766 #define EMO_ENTER             0x00000001
767 #define EMO_PROMOTE           0x00000002
768 #define EMO_EXPAND            0x00000003
769 #define EMO_MOVESELECTION     0x00000004
770 #define EMO_GETVIEWMODE       0x00000005
771 
772 #define EMO_EXPANDSELECTION   0x00000000
773 #define EMO_EXPANDDOCUMENT    0x00000001
774 
775 /* Page Rotate values used in wParam of EM_SETPAGEROTATE message */
776 #define EPR_0                 0x00000000
777 #define EPR_270               0x00000001
778 #define EPR_180               0x00000002
779 #define EPR_90                0x00000003
780 
781 /* Find flags for wParam of EM_FINDTEXT message */
782 #define FR_MATCHDIAC          0x20000000
783 #define FR_MATCHKASHIDA       0x40000000
784 #define FR_MATCHALEFHAMZA     0x80000000
785 
786 /* IME Compatibility Mode return values for EM_GETIMECOMPMODE message */
787 #define ICM_NOTOPEN           0x00000000
788 #define ICM_LEVEL3            0x00000001
789 #define ICM_LEVEL2            0x00000002
790 #define ICM_LEVEL2_5          0x00000003
791 #define ICM_LEVEL2_SUI        0x00000004
792 #define ICM_CTF               0x00000005
793 
794 /* Flags value for IMECOMPTEXT structure */
795 #define ICT_RESULTREADSTR     0x00000001
796 
797 /* Input Method Flags used in EM_SETLANGOPTIONS message */
798 #define IMF_AUTOKEYBOARD        0x00000001
799 #define IMF_AUTOFONT            0x00000002
800 #define IMF_IMECANCELCOMPLETE   0x00000004
801 #define IMF_IMEALWAYSSENDNOTIFY 0x00000008
802 #define IMF_AUTOFONTSIZEADJUST  0x00000010
803 #define IMF_UIFONTS             0x00000020
804 #define IMF_DUALFONT            0x00000080
805 
806 /* Parameters values for the EM_SETIMEMODEBIAS message */
807 #define IMF_SMODE_PLAURALCLAUSE 0x00000001
808 #define IMF_SMODE_NONE          0x00000002
809 
810 /* Parameters of the EM_SETIMEOPTIONS message */
811 #define IMF_FORCENONE         0x00000001
812 #define IMF_FORCEENABLE       0x00000002
813 #define IMF_FORCEDISABLE      0x00000004
814 #define IMF_CLOSESTATUSWINDOW 0x00000008
815 #define IMF_VERTICAL          0x00000020
816 #define IMF_FORCEACTIVE       0x00000040
817 #define IMF_FORCEINACTIVE     0x00000080
818 #define IMF_FORCEREMEMBER     0x00000100
819 #define IMF_MULTIPLEEDIT      0x00000400
820 
821 /* return values of the EM_SELECTION_TYPE message */
822 #define SEL_EMPTY             0x00000000
823 #define SEL_TEXT              0x00000001
824 #define SEL_OBJECT            0x00000002
825 #define SEL_MULTICHAR         0x00000004
826 #define SEL_MULTIOBJECT       0x00000008
827 
828 /* ENOLEOPFAILED.lOper value that indicates operation failure */
829 #define OLEOP_DOVERB          0x00000001
830 
831 /* punctionation type values for wParam of EM_SETPUNCTUATION message */
832 #define PC_FOLLOWING          0x00000001
833 #define PC_LEADING            0x00000002
834 #define PC_OVERFLOW           0x00000003
835 #define PC_DELIMITER          0x00000004
836 
837 /* mask values in the PARAFORMAT structure */
838 #define PFM_STARTINDENT       0x00000001
839 #define PFM_RIGHTINDENT       0x00000002
840 #define PFM_OFFSET            0x00000004
841 #define PFM_ALIGNMENT         0x00000008
842 #define PFM_TABSTOPS          0x00000010
843 #define PFM_NUMBERING         0x00000020
844 #define PFM_OFFSETINDENT      0x80000000
845 
846 /* mask values in the PARAFORMAT2 structure */
847 #define PFM_SPACEBEFORE       0x00000040
848 #define PFM_SPACEAFTER        0x00000080
849 #define PFM_LINESPACING       0x00000100
850 #define PFM_STYLE             0x00000400
851 #define PFM_BORDER            0x00000800
852 #define PFM_SHADING           0x00001000
853 #define PFM_NUMBERINGSTYLE    0x00002000
854 #define PFM_NUMBERINGTAB      0x00004000
855 #define PFM_NUMBERINGSTART    0x00008000
856 #define PFM_RTLPARA           0x00010000
857 #define PFM_KEEP              0x00020000
858 #define PFM_KEEPNEXT          0x00040000
859 #define PFM_PAGEBREAKBEFORE   0x00080000
860 #define PFM_NOLINENUMBER      0x00100000
861 #define PFM_NOWIDOWCONTROL    0x00200000
862 #define PFM_DONOTHYPHEN       0x00400000
863 #define PFM_SIDEBYSIDE        0x00800000
864 #define PFM_COLLAPSED         0x01000000
865 #define PFM_OUTLINELEVEL      0x02000000
866 #define PFM_BOX               0x04000000
867 #define PFM_RESERVED2         0x08000000
868 #define PFM_TABLEROWDELIMITER 0x10000000
869 #define PFM_TEXTWRAPPINGBREAK 0x20000000
870 #define PFM_TABLE             0x40000000
871 
872 #define PFM_ALL               (PFM_STARTINDENT | \
873                                PFM_RIGHTINDENT | \
874                                PFM_OFFSET | \
875                                PFM_ALIGNMENT | \
876                                PFM_TABSTOPS | \
877                                PFM_NUMBERING | \
878                                PFM_OFFSETINDENT | \
879                                PFM_RTLPARA)
880 
881 #define PFM_EFFECTS           (PFM_RTLPARA | \
882                                PFM_KEEP | \
883                                PFM_KEEPNEXT | \
884                                PFM_PAGEBREAKBEFORE | \
885                                PFM_NOLINENUMBER | \
886                                PFM_NOWIDOWCONTROL | \
887                                PFM_DONOTHYPHEN | \
888                                PFM_SIDEBYSIDE | \
889                                PFM_TABLEROWDELIMITER | \
890                                PFM_TABLE)
891 
892 #define PFM_ALL2              (PFM_ALL | \
893                                PFM_EFFECTS | \
894                                PFM_SPACEBEFORE | \
895                                PFM_SPACEAFTER | \
896                                PFM_LINESPACING | \
897                                PFM_STYLE | \
898                                PFM_BORDER | \
899                                PFM_SHADING | \
900                                PFM_NUMBERINGSTYLE | \
901                                PFM_NUMBERINGTAB | \
902                                PFM_NUMBERINGSTART)
903 
904 /* numbering option */
905 #define PFN_BULLET            0x00000001
906 #define PFN_ARABIC            0x00000002
907 #define PFN_LCLETTER          0x00000003
908 #define PFN_UCLETTER          0x00000004
909 #define PFN_LCROMAN           0x00000005
910 #define PFN_UCROMAN           0x00000006
911 
912 /* paragraph format numbering styles */
913 #define PFNS_PAREN            0x00000000
914 #define PFNS_PARENS           0x00000100
915 #define PFNS_PERIOD           0x00000200
916 #define PFNS_PLAIN            0x00000300
917 #define PFNS_NONUMBER         0x00000400
918 #define PFNS_NEWNUMBER        0x00008000
919 
920 /* paragraph alignment */
921 #define PFA_LEFT              0x00000001
922 #define PFA_RIGHT             0x00000002
923 #define PFA_CENTER            0x00000003
924 #define PFA_JUSTIFY           0x00000004
925 #define PFA_FULL_INTERWORD    0x00000004
926 #define PFA_FULL_INTERLETTER  0x00000005
927 #define PFA_FULL_SCALED       0x00000006
928 #define PFA_FULL_GLYPHS       0x00000007
929 #define PFA_SNAP_GRID         0x00000008
930 
931 /* paragraph effects */
932 #define PFE_RTLPARA           0x00000001
933 #define PFE_KEEP              0x00000002
934 #define PFE_KEEPNEXT          0x00000004
935 #define PFE_PAGEBREAKBEFORE   0x00000008
936 #define PFE_NOLINENUMBER      0x00000010
937 #define PFE_NOWIDOWCONTROL    0x00000020
938 #define PFE_DONOTHYPHEN       0x00000040
939 #define PFE_SIDEBYSIDE        0x00000080
940 #define PFE_COLLAPSED         0x00000100
941 #define PFE_BOX               0x00000400
942 #define PFE_TABLEROWDELIMITER 0x00001000
943 #define PFE_TEXTWRAPPINGBREAK 0x00002000
944 #define PFE_TABLE             0x00004000
945 
946 /* Set Edit Style flags for EM_SETEDITSTYLE message */
947 #define SES_EMULATESYSEDIT      0x00000001
948 #define SES_BEEPONMAXTEXT       0x00000002
949 #define SES_EXTENDBACKCOLOR     0x00000004
950 #define SES_MAPCPS              0x00000008
951 #define SES_EMULATE10           0x00000010
952 #define SES_USECRLF             0x00000020
953 #define SES_NOXLTSYMBOLRANGE    0x00000020
954 #define SES_USEAIMM             0x00000040
955 #define SES_NOIME               0x00000080
956 #define SES_ALLOWBEEPS          0x00000100
957 #define SES_UPPERCASE           0x00000200
958 #define SES_LOWERCASE           0x00000400
959 #define SES_NOINPUTSEQUENCECHK  0x00000800
960 #define SES_BIDI                0x00001000
961 #define SES_SCROLLONKILLFOCUS   0x00002000
962 #define SES_XLTCRCRLFTOCR       0x00004000
963 #define SES_DRAFTMODE           0x00008000
964 #define SES_USECTF              0x00010000
965 #define SES_HIDEGRIDLINES       0x00020000
966 #define SES_USEATFONT           0x00040000
967 #define SES_CUSTOMLOOK          0x00080000
968 #define SES_LBSCROLLNOTIFY      0x00100000
969 #define SES_CTFALLOWEMBED       0x00200000
970 #define SES_CTFALLOWSMARTTAG    0x00400000
971 #define SES_CTFALLOWPROOFING    0x00800000
972 
973 /* streaming flags */
974 #define SFF_WRITEXTRAPAR      0x00000080
975 #define SFF_PWD               0x00000800
976 #define SFF_KEEPDOCINFO       0x00001000
977 #define SFF_PERSISTVIEWSCALE  0x00002000
978 #define SFF_PLAINRTF          0x00004000
979 #define SFF_SELECTION         0x00008000
980 
981 typedef enum _undonameid
982 {
983     UID_UNKNOWN     = 0,
984     UID_TYPING      = 1,
985     UID_DELETE      = 2,
986     UID_DRAGDROP    = 3,
987     UID_CUT         = 4,
988     UID_PASTE       = 5,
989     UID_AUTOCORRECT = 6
990 } UNDONAMEID;
991 
992 typedef LONG (*EDITWORDBREAKPROCEX)(char*,LONG,BYTE,INT);
993 
994 #define VM_OUTLINE            0x00000002
995 #define VM_NORMAL             0x00000004
996 #define VM_PAGE               0x00000009
997 
998 /* options of the EM_FINDWORDBREAK message */
999 #define WB_CLASSIFY           0x00000003
1000 #define WB_MOVEWORDLEFT       0x00000004
1001 #define WB_MOVEWORDPREV       0x00000004
1002 #define WB_MOVEWORDRIGHT      0x00000005
1003 #define WB_MOVEWORDNEXT       0x00000005
1004 #define WB_LEFTBREAK          0x00000006
1005 #define WB_PREVBREAK          0x00000006
1006 #define WB_RIGHTBREAK         0x00000007
1007 #define WB_NEXTBREAK          0x00000007
1008 
1009 /* options of the EM_SETWORDWRAPMODE message */
1010 #define WBF_WORDWRAP          0x00000010
1011 #define WBF_WORDBREAK         0x00000020
1012 #define WBF_OVERFLOW          0x00000040
1013 #define WBF_LEVEL1            0x00000080
1014 #define WBF_LEVEL2            0x00000100
1015 #define WBF_CUSTOM            0x00000200
1016 
1017 #define WBF_CLASS             ((BYTE) 0x0F)
1018 #define WBF_ISWHITE           ((BYTE) 0x10)
1019 #define WBF_BREAKLINE         ((BYTE) 0x20)
1020 #define WBF_BREAKAFTER        ((BYTE) 0x40)
1021 
1022 /* Placeholder unicode character for an embedded object */
1023 #ifndef WCH_EMBEDDING
1024 #define WCH_EMBEDDING         (WCHAR)0xFFFC
1025 #endif
1026 
1027 /* options of the EM_SETTEXTMODE message */
1028 #define TM_PLAINTEXT          0x00000001
1029 #define TM_RICHTEXT           0x00000002
1030 #define TM_SINGLELEVELUNDO    0x00000004
1031 #define TM_MULTILEVELUNDO     0x00000008
1032 #define TM_SINGLECODEPAGE     0x00000010
1033 #define TM_MULTICODEPAGE      0x00000020
1034 
1035 /* GETTEXTEX structure flags */
1036 #define GT_DEFAULT            0x00000000
1037 #define GT_USECRLF            0x00000001
1038 #define GT_SELECTION          0x00000002
1039 #define GT_RAWTEXT            0x00000004
1040 #define GT_NOHIDDENTEXT       0x00000008
1041 
1042 /* Options of the EM_SETTYPOGRAPHYOPTIONS message */
1043 #define TO_ADVANCEDTYPOGRAPHY   0x00000001
1044 #define TO_SIMPLELINEBREAK      0x00000002
1045 #define TO_DISABLECUSTOMTEXTOUT 0x00000004
1046 #define TO_ADVANCEDLAYOUT       0x00000008
1047 
1048 typedef struct _gettextlengthex {
1049     DWORD      flags;
1050     UINT       codepage;
1051 } GETTEXTLENGTHEX;
1052 
1053 /* Flags of the GETTEXTLENGTHEX structure */
1054 #define GTL_DEFAULT           0x00000000
1055 #define GTL_USECRLF           0x00000001
1056 #define GTL_PRECISE           0x00000002
1057 #define GTL_CLOSE             0x00000004
1058 #define GTL_NUMCHARS          0x00000008
1059 #define GTL_NUMBYTES          0x00000010
1060 
1061 #define GCM_RIGHTMOUSEDROP    0x8000
1062 
1063 /* Options of the EM_SETTEXTEX message */
1064 typedef struct _settextex {
1065     DWORD	flags;
1066     UINT	codepage;
1067 } SETTEXTEX;
1068 
1069 /* Flags of the EM_SETTEXTEX message */
1070 #define ST_DEFAULT	      0x00000000
1071 #define ST_KEEPUNDO           0x00000001
1072 #define ST_SELECTION          0x00000002
1073 #define ST_NEWCHARS           0x00000004
1074 #define ST_UNICODE            0x00000008
1075 
1076 #ifdef __cplusplus
1077 }
1078 #endif
1079 
1080 #include <poppack.h>
1081 
1082 #endif /* __WINE_RICHEDIT_H */
1083