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