1 /**
2  * Windows API header module
3  *
4  * Translated from MinGW Windows headers
5  *
6  * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
7  * Source: $(DRUNTIMESRC src/core/sys/windows/_richedit.d)
8  */
9 module core.sys.windows.richedit;
version(Windows)10 version (Windows):
11 @system:
12 
13 version (ANSI) {} else version = Unicode;
14 
15 import core.sys.windows.windef, core.sys.windows.winuser;
16 import core.sys.windows.wingdi; // for LF_FACESIZE
17 
18 align(4):
19 
version(Unicode)20 version (Unicode) {
21 const wchar[] RICHEDIT_CLASS = "RichEdit20W";
22 } else {
23 const char[] RICHEDIT_CLASS  = "RichEdit20A";
24 }
25 
26 enum RICHEDIT_CLASS10A = "RICHEDIT";
27 
28 const TCHAR[]
29     CF_RTF       = "Rich Text Format",
30     CF_RTFNOOBJS = "Rich Text Format Without Objects",
31     CF_RETEXTOBJ = "RichEdit Text and Objects";
32 
33 enum DWORD
34     CFM_BOLD        = 1,
35     CFM_ITALIC      = 2,
36     CFM_UNDERLINE   = 4,
37     CFM_STRIKEOUT   = 8,
38     CFM_PROTECTED   = 16,
39     CFM_LINK        = 32,
40     CFM_SIZE        = 0x80000000,
41     CFM_COLOR       = 0x40000000,
42     CFM_FACE        = 0x20000000,
43     CFM_OFFSET      = 0x10000000,
44     CFM_CHARSET     = 0x08000000,
45     CFM_SUBSCRIPT   = 0x00030000,
46     CFM_SUPERSCRIPT = 0x00030000;
47 
48 enum DWORD
49     CFE_BOLD        = 1,
50     CFE_ITALIC      = 2,
51     CFE_UNDERLINE   = 4,
52     CFE_STRIKEOUT   = 8,
53     CFE_PROTECTED   = 16,
54     CFE_SUBSCRIPT   = 0x00010000,
55     CFE_SUPERSCRIPT = 0x00020000,
56     CFE_AUTOCOLOR   = 0x40000000;
57 
58 enum CFM_EFFECTS = CFM_BOLD | CFM_ITALIC | CFM_UNDERLINE | CFM_COLOR
59   | CFM_STRIKEOUT | CFE_PROTECTED | CFM_LINK;
60 
61 // flags for EM_SETIMEOPTIONS
62 enum LPARAM
63     IMF_FORCENONE         = 1,
64     IMF_FORCEENABLE       = 2,
65     IMF_FORCEDISABLE      = 4,
66     IMF_CLOSESTATUSWINDOW = 8,
67     IMF_VERTICAL          = 32,
68     IMF_FORCEACTIVE       = 64,
69     IMF_FORCEINACTIVE     = 128,
70     IMF_FORCEREMEMBER     = 256;
71 
72 enum SEL_EMPTY=0;
73 enum SEL_TEXT=1;
74 enum SEL_OBJECT=2;
75 enum SEL_MULTICHAR=4;
76 enum SEL_MULTIOBJECT=8;
77 
78 enum MAX_TAB_STOPS=32;
79 
80 enum PFM_ALIGNMENT=8;
81 enum PFM_NUMBERING=32;
82 enum PFM_OFFSET=4;
83 enum PFM_OFFSETINDENT=0x80000000;
84 enum PFM_RIGHTINDENT=2;
85 enum PFM_STARTINDENT=1;
86 enum PFM_TABSTOPS=16;
87 enum PFM_BORDER=2048;
88 enum PFM_LINESPACING=256;
89 enum PFM_NUMBERINGSTART=32768;
90 enum PFM_NUMBERINGSTYLE=8192;
91 enum PFM_NUMBERINGTAB=16384;
92 enum PFM_SHADING=4096;
93 enum PFM_SPACEAFTER=128;
94 enum PFM_SPACEBEFORE=64;
95 enum PFM_STYLE=1024;
96 enum PFM_DONOTHYPHEN=4194304;
97 enum PFM_KEEP=131072;
98 enum PFM_KEEPNEXT=262144;
99 enum PFM_NOLINENUMBER=1048576;
100 enum PFM_NOWIDOWCONTROL=2097152;
101 enum PFM_PAGEBREAKBEFORE=524288;
102 enum PFM_RTLPARA=65536;
103 enum PFM_SIDEBYSIDE=8388608;
104 enum PFM_TABLE=1073741824;
105 enum PFN_BULLET=1;
106 
107 enum PFE_DONOTHYPHEN=64;
108 enum PFE_KEEP=2;
109 enum PFE_KEEPNEXT=4;
110 enum PFE_NOLINENUMBER=16;
111 enum PFE_NOWIDOWCONTROL=32;
112 enum PFE_PAGEBREAKBEFORE=8;
113 enum PFE_RTLPARA=1;
114 enum PFE_SIDEBYSIDE=128;
115 enum PFE_TABLE=16384;
116 enum PFA_LEFT=1;
117 enum PFA_RIGHT=2;
118 enum PFA_CENTER=3;
119 enum PFA_JUSTIFY=4;
120 enum PFA_FULL_INTERWORD=4;
121 
122 enum SF_TEXT=1;
123 enum SF_RTF=2;
124 enum SF_RTFNOOBJS=3;
125 enum SF_TEXTIZED=4;
126 enum SF_UNICODE=16;
127 enum SF_USECODEPAGE=32;
128 enum SF_NCRFORNONASCII=64;
129 enum SF_RTFVAL=0x0700;
130 
131 enum SFF_PWD=0x0800;
132 enum SFF_KEEPDOCINFO=0x1000;
133 enum SFF_PERSISTVIEWSCALE=0x2000;
134 enum SFF_PLAINRTF=0x4000;
135 enum SFF_SELECTION=0x8000;
136 
137 enum WB_CLASSIFY      = 3;
138 enum WB_MOVEWORDLEFT  = 4;
139 enum WB_MOVEWORDRIGHT = 5;
140 enum WB_LEFTBREAK     = 6;
141 enum WB_RIGHTBREAK    = 7;
142 enum WB_MOVEWORDPREV  = 4;
143 enum WB_MOVEWORDNEXT  = 5;
144 enum WB_PREVBREAK     = 6;
145 enum WB_NEXTBREAK     = 7;
146 
147 enum WBF_WORDWRAP  = 16;
148 enum WBF_WORDBREAK = 32;
149 enum WBF_OVERFLOW  = 64;
150 enum WBF_LEVEL1    = 128;
151 enum WBF_LEVEL2    = 256;
152 enum WBF_CUSTOM    = 512;
153 
154 enum ES_DISABLENOSCROLL  = 8192;
155 enum ES_SUNKEN           = 16384;
156 enum ES_SAVESEL          = 32768;
157 enum ES_EX_NOCALLOLEINIT = 16777216;
158 enum ES_NOIME            = 524288;
159 enum ES_NOOLEDRAGDROP    = 8;
160 enum ES_SELECTIONBAR     = 16777216;
161 enum ES_SELFIME          = 262144;
162 enum ES_VERTICAL         = 4194304;
163 
164 enum EM_CANPASTE = WM_USER+50;
165 enum EM_DISPLAYBAND = WM_USER+51;
166 enum EM_EXGETSEL = WM_USER+52;
167 enum EM_EXLIMITTEXT = WM_USER+53;
168 enum EM_EXLINEFROMCHAR = WM_USER+54;
169 enum EM_EXSETSEL = WM_USER+55;
170 enum EM_FINDTEXT = WM_USER+56;
171 enum EM_FORMATRANGE = WM_USER+57;
172 enum EM_GETCHARFORMAT = WM_USER+58;
173 enum EM_GETEVENTMASK = WM_USER+59;
174 enum EM_GETOLEINTERFACE = WM_USER+60;
175 enum EM_GETPARAFORMAT = WM_USER+61;
176 enum EM_GETSELTEXT = WM_USER+62;
177 enum EM_HIDESELECTION = WM_USER+63;
178 enum EM_PASTESPECIAL = WM_USER+64;
179 enum EM_REQUESTRESIZE = WM_USER+65;
180 enum EM_SELECTIONTYPE = WM_USER+66;
181 enum EM_SETBKGNDCOLOR = WM_USER+67;
182 enum EM_SETCHARFORMAT = WM_USER+68;
183 enum EM_SETEVENTMASK = WM_USER+69;
184 enum EM_SETOLECALLBACK = WM_USER+70;
185 enum EM_SETPARAFORMAT = WM_USER+71;
186 enum EM_SETTARGETDEVICE = WM_USER+72;
187 enum EM_STREAMIN = WM_USER+73;
188 enum EM_STREAMOUT = WM_USER+74;
189 enum EM_GETTEXTRANGE = WM_USER+75;
190 enum EM_FINDWORDBREAK = WM_USER+76;
191 enum EM_SETOPTIONS = WM_USER+77;
192 enum EM_GETOPTIONS = WM_USER+78;
193 enum EM_FINDTEXTEX = WM_USER+79;
194 enum EM_GETWORDBREAKPROCEX = WM_USER+80;
195 enum EM_SETWORDBREAKPROCEX = WM_USER+81;
196 /* RichEdit 2.0 messages */
197 enum EM_SETUNDOLIMIT = WM_USER+82;
198 enum EM_REDO = WM_USER+84;
199 enum EM_CANREDO = WM_USER+85;
200 enum EM_GETUNDONAME = WM_USER+86;
201 enum EM_GETREDONAME = WM_USER+87;
202 enum EM_STOPGROUPTYPING = WM_USER+88;
203 enum EM_SETTEXTMODE = WM_USER+89;
204 enum EM_GETTEXTMODE = WM_USER+90;
205 enum EM_AUTOURLDETECT = WM_USER+91;
206 enum EM_GETAUTOURLDETECT = WM_USER + 92;
207 enum EM_SETPALETTE = WM_USER + 93;
208 enum EM_GETTEXTEX = WM_USER+94;
209 enum EM_GETTEXTLENGTHEX = WM_USER+95;
210 enum EM_SHOWSCROLLBAR = WM_USER+96;
211 enum EM_SETTEXTEX = WM_USER + 97;
212 enum EM_SETPUNCTUATION = WM_USER + 100;
213 enum EM_GETPUNCTUATION = WM_USER + 101;
214 enum EM_SETWORDWRAPMODE = WM_USER + 102;
215 enum EM_GETWORDWRAPMODE = WM_USER + 103;
216 enum EM_SETIMECOLOR = WM_USER + 104;
217 enum EM_GETIMECOLOR = WM_USER + 105;
218 enum EM_SETIMEOPTIONS = WM_USER + 106;
219 enum EM_GETIMEOPTIONS = WM_USER + 107;
220 enum EM_SETLANGOPTIONS = WM_USER+120;
221 enum EM_GETLANGOPTIONS = WM_USER+121;
222 enum EM_GETIMECOMPMODE = WM_USER+122;
223 enum EM_FINDTEXTW = WM_USER + 123;
224 enum EM_FINDTEXTEXW = WM_USER + 124;
225 enum EM_RECONVERSION = WM_USER + 125;
226 enum EM_SETBIDIOPTIONS = WM_USER + 200;
227 enum EM_GETBIDIOPTIONS = WM_USER + 201;
228 enum EM_SETTYPOGRAPHYOPTIONS = WM_USER+202;
229 enum EM_GETTYPOGRAPHYOPTIONS = WM_USER+203;
230 enum EM_SETEDITSTYLE = WM_USER + 204;
231 enum EM_GETEDITSTYLE = WM_USER + 205;
232 enum EM_GETSCROLLPOS = WM_USER+221;
233 enum EM_SETSCROLLPOS = WM_USER+222;
234 enum EM_SETFONTSIZE = WM_USER+223;
235 enum EM_GETZOOM = WM_USER+224;
236 enum EM_SETZOOM = WM_USER+225;
237 
238 enum EN_MSGFILTER     = 1792;
239 enum EN_REQUESTRESIZE = 1793;
240 enum EN_SELCHANGE     = 1794;
241 enum EN_DROPFILES     = 1795;
242 enum EN_PROTECTED     = 1796;
243 enum EN_CORRECTTEXT   = 1797;
244 enum EN_STOPNOUNDO    = 1798;
245 enum EN_IMECHANGE     = 1799;
246 enum EN_SAVECLIPBOARD = 1800;
247 enum EN_OLEOPFAILED   = 1801;
248 enum EN_LINK          = 1803;
249 
250 enum ENM_NONE            = 0;
251 enum ENM_CHANGE          = 1;
252 enum ENM_UPDATE          = 2;
253 enum ENM_SCROLL          = 4;
254 enum ENM_SCROLLEVENTS    = 8;
255 enum ENM_DRAGDROPDONE    = 16;
256 enum ENM_KEYEVENTS       = 65536;
257 enum ENM_MOUSEEVENTS     = 131072;
258 enum ENM_REQUESTRESIZE   = 262144;
259 enum ENM_SELCHANGE       = 524288;
260 enum ENM_DROPFILES       = 1048576;
261 enum ENM_PROTECTED       = 2097152;
262 enum ENM_CORRECTTEXT     = 4194304;
263 enum ENM_IMECHANGE       = 8388608;
264 enum ENM_LANGCHANGE      = 16777216;
265 enum ENM_OBJECTPOSITIONS = 33554432;
266 enum ENM_LINK            = 67108864;
267 
268 enum ECO_AUTOWORDSELECTION=1;
269 enum ECO_AUTOVSCROLL=64;
270 enum ECO_AUTOHSCROLL=128;
271 enum ECO_NOHIDESEL=256;
272 enum ECO_READONLY=2048;
273 enum ECO_WANTRETURN=4096;
274 enum ECO_SAVESEL=0x8000;
275 enum ECO_SELECTIONBAR=0x1000000;
276 enum ECO_VERTICAL=0x400000;
277 
278 enum {
279     ECOOP_SET = 1,
280     ECOOP_OR,
281     ECOOP_AND,
282     ECOOP_XOR
283 }
284 
285 enum SCF_DEFAULT    = 0;
286 enum SCF_SELECTION  = 1;
287 enum SCF_WORD       = 2;
288 enum SCF_ALL        = 4;
289 enum SCF_USEUIRULES = 8;
290 
291 alias DWORD TEXTMODE;
292 enum TM_PLAINTEXT=1;
293 enum TM_RICHTEXT=2;
294 enum TM_SINGLELEVELUNDO=4;
295 enum TM_MULTILEVELUNDO=8;
296 enum TM_SINGLECODEPAGE=16;
297 enum TM_MULTICODEPAGE=32;
298 
299 enum GT_DEFAULT=0;
300 enum GT_USECRLF=1;
301 
302 enum yHeightCharPtsMost=1638;
303 enum lDefaultTab=720;
304 
305 alias DWORD UNDONAMEID;
306 enum UID_UNKNOWN    = 0;
307 enum UID_TYPING     = 1;
308 enum UID_DELETE     = 2;
309 enum UID_DRAGDROP   = 3;
310 enum UID_CUT        = 4;
311 enum UID_PASTE      = 5;
312 
313 struct CHARFORMATA {
314     UINT cbSize = this.sizeof;
315     DWORD dwMask;
316     DWORD dwEffects;
317     LONG yHeight;
318     LONG yOffset;
319     COLORREF crTextColor;
320     BYTE bCharSet;
321     BYTE bPitchAndFamily;
322     char[LF_FACESIZE] szFaceName = 0;
323 }
324 struct CHARFORMATW {
325     UINT cbSize = this.sizeof;
326     DWORD dwMask;
327     DWORD dwEffects;
328     LONG yHeight;
329     LONG yOffset;
330     COLORREF crTextColor;
331     BYTE bCharSet;
332     BYTE bPitchAndFamily;
333     WCHAR[LF_FACESIZE] szFaceName = 0;
334 }
335 
336 struct CHARFORMAT2A {
337     UINT cbSize = this.sizeof;
338     DWORD dwMask;
339     DWORD dwEffects;
340     LONG yHeight;
341     LONG yOffset;
342     COLORREF crTextColor;
343     BYTE bCharSet;
344     BYTE bPitchAndFamily;
345     char[LF_FACESIZE] szFaceName = 0;
346     WORD wWeight;
347     SHORT sSpacing;
348     COLORREF crBackColor;
349     LCID lcid;
350     DWORD dwReserved;
351     SHORT sStyle;
352     WORD wKerning;
353     BYTE bUnderlineType;
354     BYTE bAnimation;
355     BYTE bRevAuthor;
356 }
357 
358 struct CHARFORMAT2W {
359     UINT cbSize = this.sizeof;
360     DWORD dwMask;
361     DWORD dwEffects;
362     LONG yHeight;
363     LONG yOffset;
364     COLORREF crTextColor;
365     BYTE bCharSet;
366     BYTE bPitchAndFamily;
367     WCHAR[LF_FACESIZE] szFaceName = 0;
368     WORD wWeight;
369     SHORT sSpacing;
370     COLORREF crBackColor;
371     LCID lcid;
372     DWORD dwReserved;
373     SHORT sStyle;
374     WORD wKerning;
375     BYTE bUnderlineType;
376     BYTE bAnimation;
377     BYTE bRevAuthor;
378 }
379 
380 struct CHARRANGE {
381     LONG cpMin;
382     LONG cpMax;
383 }
384 
385 struct COMPCOLOR {
386     COLORREF crText;
387     COLORREF crBackground;
388     DWORD dwEffects;
389 }
390 
391 extern (Windows) {
392     alias DWORD function(DWORD_PTR,PBYTE,LONG,LONG*) EDITSTREAMCALLBACK;
393 }
394 
395 struct EDITSTREAM {
396 align(4):
397     DWORD_PTR dwCookie;
398     DWORD dwError;
399     EDITSTREAMCALLBACK pfnCallback;
400 }
401 
402 struct ENCORRECTTEXT {
403 align(4):
404     NMHDR nmhdr;
405     CHARRANGE chrg;
406     WORD seltyp;
407 }
408 
409 struct ENDROPFILES {
410 align(4):
411     NMHDR nmhdr;
412     HANDLE hDrop;
413     LONG cp;
414     BOOL fProtected;
415 }
416 
417 struct ENLINK {
418 align(4):
419     NMHDR nmhdr;
420     UINT msg;
421     WPARAM wParam;
422     LPARAM lParam;
423     CHARRANGE chrg;
424 }
425 
426 struct ENOLEOPFAILED {
427 align(4):
428     NMHDR nmhdr;
429     LONG iob;
430     LONG lOper;
431     HRESULT hr;
432 }
433 
434 struct ENPROTECTED {
435 align(4):
436     NMHDR nmhdr;
437     UINT msg;
438     WPARAM wParam;
439     LPARAM lParam;
440     CHARRANGE chrg;
441 }
442 alias ENPROTECTED* LPENPROTECTED;
443 
444 struct ENSAVECLIPBOARD {
445 align(4):
446     NMHDR nmhdr;
447     LONG cObjectCount;
448     LONG cch;
449 }
450 
451 struct FINDTEXTA {
452     CHARRANGE chrg;
453     LPSTR lpstrText;
454 }
455 
456 struct FINDTEXTW {
457     CHARRANGE chrg;
458     LPWSTR lpstrText;
459 }
460 
461 struct FINDTEXTEXA {
462     CHARRANGE chrg;
463     LPSTR lpstrText;
464     CHARRANGE chrgText;
465 }
466 
467 struct FINDTEXTEXW {
468     CHARRANGE chrg;
469     LPWSTR lpstrText;
470     CHARRANGE chrgText;
471 }
472 
473 struct FORMATRANGE {
474     HDC hdc;
475     HDC hdcTarget;
476     RECT rc;
477     RECT rcPage;
478     CHARRANGE chrg;
479 }
480 
481 struct MSGFILTER {
482 align(4):
483     NMHDR nmhdr;
484     UINT msg;
485     WPARAM wParam;
486     LPARAM lParam;
487 }
488 
489 struct PARAFORMAT {
490     UINT cbSize = this.sizeof;
491     DWORD dwMask;
492     WORD wNumbering;
493     WORD wReserved;
494     LONG dxStartIndent;
495     LONG dxRightIndent;
496     LONG dxOffset;
497     WORD wAlignment;
498     SHORT cTabCount;
499     LONG[MAX_TAB_STOPS] rgxTabs;
500 }
501 
502 struct PARAFORMAT2 {
503     UINT cbSize = this.sizeof;
504     DWORD dwMask;
505     WORD wNumbering;
506     WORD wEffects;
507     LONG dxStartIndent;
508     LONG dxRightIndent;
509     LONG dxOffset;
510     WORD wAlignment;
511     SHORT cTabCount;
512     LONG[MAX_TAB_STOPS] rgxTabs;
513     LONG dySpaceBefore;
514     LONG dySpaceAfter;
515     LONG dyLineSpacing;
516     SHORT sStype;
517     BYTE bLineSpacingRule;
518     BYTE bOutlineLevel;
519     WORD wShadingWeight;
520     WORD wShadingStyle;
521     WORD wNumberingStart;
522     WORD wNumberingStyle;
523     WORD wNumberingTab;
524     WORD wBorderSpace;
525     WORD wBorderWidth;
526     WORD wBorders;
527 }
528 
529 struct SELCHANGE {
530     NMHDR nmhdr;
531     CHARRANGE chrg;
532     WORD seltyp;
533 }
534 
535 struct TEXTRANGEA {
536     CHARRANGE chrg;
537     LPSTR lpstrText;
538 }
539 
540 struct TEXTRANGEW {
541     CHARRANGE chrg;
542     LPWSTR lpstrText;
543 }
544 
545 struct REQRESIZE {
546     NMHDR nmhdr;
547     RECT rc;
548 }
549 
550 struct REPASTESPECIAL {
551 align(4):
552     DWORD dwAspect;
553     DWORD_PTR dwParam;
554 }
555 
556 struct PUNCTUATION {
557 align(4):
558     UINT iSize;
559     LPSTR szPunctuation;
560 }
561 
562 struct GETTEXTEX {
563 align(4):
564     DWORD cb;
565     DWORD flags;
566     UINT codepage;
567     LPCSTR lpDefaultChar;
568     LPBOOL lpUsedDefChar;
569 }
570 
571 extern (Windows) {
572 alias LONG function(char*,LONG,BYTE,INT) EDITWORDBREAKPROCEX;
573 }
574 
575 /* Defines for EM_SETTYPOGRAPHYOPTIONS */
576 enum TO_ADVANCEDTYPOGRAPHY = 1;
577 enum TO_SIMPLELINEBREAK    = 2;
578 
579 /* Defines for GETTEXTLENGTHEX */
580 enum GTL_DEFAULT  = 0;
581 enum GTL_USECRLF  = 1;
582 enum GTL_PRECISE  = 2;
583 enum GTL_CLOSE    = 4;
584 enum GTL_NUMCHARS = 8;
585 enum GTL_NUMBYTES = 16;
586 
587 struct GETTEXTLENGTHEX {
588 align(4):
589     DWORD flags;
590     UINT codepage;
591 }
592 
version(Unicode)593 version (Unicode) {
594     alias CHARFORMATW CHARFORMAT;
595     alias CHARFORMAT2W CHARFORMAT2;
596     alias FINDTEXTW FINDTEXT;
597     alias FINDTEXTEXW FINDTEXTEX;
598     alias TEXTRANGEW TEXTRANGE;
599 } else {
600     alias CHARFORMATA CHARFORMAT;
601     alias CHARFORMAT2A CHARFORMAT2;
602     alias FINDTEXTA FINDTEXT;
603     alias FINDTEXTEXA FINDTEXTEX;
604     alias TEXTRANGEA TEXTRANGE;
605 }
606