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