home *** CD-ROM | disk | FTP | other *** search
/ PC World Plus! (NZ) 2001 June / HDC50.iso / Runimage / Delphi50 / Source / Rtl / Win / RICHEDIT.PAS < prev    next >
Pascal/Delphi Source File  |  1999-08-11  |  42KB  |  1,207 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Borland Delphi Run-time Library                 }
  5. {       Win32 Rich Edit control Interface Unit          }
  6. {                                                       }
  7. {       Copyright (c) 1985-1999, Microsoft Corporation  }
  8. {                                                       }
  9. {       Translator: Inprise Corporation                 }
  10. {                                                       }
  11. {*******************************************************}
  12.  
  13. {$HPPEMIT '#include <RichEdit.h>'}
  14.  
  15. unit RichEdit;
  16.  
  17. {$WEAKPACKAGEUNIT}
  18.  
  19. interface
  20.  
  21. uses Messages, Windows;
  22.  
  23. const
  24.   {$EXTERNALSYM cchTextLimitDefault}
  25.   cchTextLimitDefault     = 32767; 
  26.  
  27.  
  28.   {$EXTERNALSYM RICHEDIT_CLASSA}
  29.   RICHEDIT_CLASSA       = 'RichEdit20A';     { Richedit2.0 Window Class. }
  30.   {$EXTERNALSYM RICHEDIT_CLASSW}
  31.   RICHEDIT_CLASSW       = 'RichEdit20W';     { Richedit2.0 Window Class. }
  32.   {$EXTERNALSYM RICHEDIT_CLASS}
  33.   RICHEDIT_CLASS = RICHEDIT_CLASSA;
  34.   RICHEDIT_CLASS10A       = 'RICHEDIT';        { Richedit 1.0 }
  35.  
  36. { RichEdit messages }
  37.  
  38.   {$EXTERNALSYM WM_CONTEXTMENU}
  39.   WM_CONTEXTMENU                      = $007B; 
  40.   {$EXTERNALSYM WM_PRINTCLIENT}
  41.   WM_PRINTCLIENT                      = $0318; 
  42.  
  43.   {$EXTERNALSYM EM_GETLIMITTEXT}
  44.   EM_GETLIMITTEXT                     = WM_USER + 37; 
  45. //  EM_POSFROMCHAR                      = WM_USER + 38;
  46. //  EM_CHARFROMPOS                      = WM_USER + 39; 
  47.   {$EXTERNALSYM EM_SCROLLCARET}
  48.   EM_SCROLLCARET                      = WM_USER + 49; 
  49.   {$EXTERNALSYM EM_CANPASTE}
  50.   EM_CANPASTE                         = WM_USER + 50; 
  51.   {$EXTERNALSYM EM_DISPLAYBAND}
  52.   EM_DISPLAYBAND                      = WM_USER + 51; 
  53.   {$EXTERNALSYM EM_EXGETSEL}
  54.   EM_EXGETSEL                         = WM_USER + 52; 
  55.   {$EXTERNALSYM EM_EXLIMITTEXT}
  56.   EM_EXLIMITTEXT                      = WM_USER + 53; 
  57.   {$EXTERNALSYM EM_EXLINEFROMCHAR}
  58.   EM_EXLINEFROMCHAR                   = WM_USER + 54; 
  59.   {$EXTERNALSYM EM_EXSETSEL}
  60.   EM_EXSETSEL                         = WM_USER + 55; 
  61.   {$EXTERNALSYM EM_FINDTEXT}
  62.   EM_FINDTEXT                         = WM_USER + 56; 
  63.   {$EXTERNALSYM EM_FORMATRANGE}
  64.   EM_FORMATRANGE                      = WM_USER + 57; 
  65.   {$EXTERNALSYM EM_GETCHARFORMAT}
  66.   EM_GETCHARFORMAT                    = WM_USER + 58; 
  67.   {$EXTERNALSYM EM_GETEVENTMASK}
  68.   EM_GETEVENTMASK                     = WM_USER + 59; 
  69.   {$EXTERNALSYM EM_GETOLEINTERFACE}
  70.   EM_GETOLEINTERFACE                  = WM_USER + 60; 
  71.   {$EXTERNALSYM EM_GETPARAFORMAT}
  72.   EM_GETPARAFORMAT                    = WM_USER + 61; 
  73.   {$EXTERNALSYM EM_GETSELTEXT}
  74.   EM_GETSELTEXT                       = WM_USER + 62; 
  75.   {$EXTERNALSYM EM_HIDESELECTION}
  76.   EM_HIDESELECTION                    = WM_USER + 63; 
  77.   {$EXTERNALSYM EM_PASTESPECIAL}
  78.   EM_PASTESPECIAL                     = WM_USER + 64; 
  79.   {$EXTERNALSYM EM_REQUESTRESIZE}
  80.   EM_REQUESTRESIZE                    = WM_USER + 65; 
  81.   {$EXTERNALSYM EM_SELECTIONTYPE}
  82.   EM_SELECTIONTYPE                    = WM_USER + 66; 
  83.   {$EXTERNALSYM EM_SETBKGNDCOLOR}
  84.   EM_SETBKGNDCOLOR                    = WM_USER + 67; 
  85.   {$EXTERNALSYM EM_SETCHARFORMAT}
  86.   EM_SETCHARFORMAT                    = WM_USER + 68; 
  87.   {$EXTERNALSYM EM_SETEVENTMASK}
  88.   EM_SETEVENTMASK                     = WM_USER + 69; 
  89.   {$EXTERNALSYM EM_SETOLECALLBACK}
  90.   EM_SETOLECALLBACK                   = WM_USER + 70; 
  91.   {$EXTERNALSYM EM_SETPARAFORMAT}
  92.   EM_SETPARAFORMAT                    = WM_USER + 71; 
  93.   {$EXTERNALSYM EM_SETTARGETDEVICE}
  94.   EM_SETTARGETDEVICE                  = WM_USER + 72; 
  95.   {$EXTERNALSYM EM_STREAMIN}
  96.   EM_STREAMIN                         = WM_USER + 73; 
  97.   {$EXTERNALSYM EM_STREAMOUT}
  98.   EM_STREAMOUT                        = WM_USER + 74; 
  99.   {$EXTERNALSYM EM_GETTEXTRANGE}
  100.   EM_GETTEXTRANGE                     = WM_USER + 75; 
  101.   {$EXTERNALSYM EM_FINDWORDBREAK}
  102.   EM_FINDWORDBREAK                    = WM_USER + 76; 
  103.   {$EXTERNALSYM EM_SETOPTIONS}
  104.   EM_SETOPTIONS                       = WM_USER + 77; 
  105.   {$EXTERNALSYM EM_GETOPTIONS}
  106.   EM_GETOPTIONS                       = WM_USER + 78; 
  107.   {$EXTERNALSYM EM_FINDTEXTEX}
  108.   EM_FINDTEXTEX                       = WM_USER + 79; 
  109.   {$EXTERNALSYM EM_GETWORDBREAKPROCEX}
  110.   EM_GETWORDBREAKPROCEX               = WM_USER + 80; 
  111.   {$EXTERNALSYM EM_SETWORDBREAKPROCEX}
  112.   EM_SETWORDBREAKPROCEX               = WM_USER + 81; 
  113.  
  114. { Richedit v2.0 messages }
  115.  
  116.   {$EXTERNALSYM EM_SETUNDOLIMIT}
  117.   EM_SETUNDOLIMIT                     = WM_USER + 82; 
  118.   {$EXTERNALSYM EM_REDO}
  119.   EM_REDO                             = WM_USER + 84; 
  120.   {$EXTERNALSYM EM_CANREDO}
  121.   EM_CANREDO                          = WM_USER + 85; 
  122.   {$EXTERNALSYM EM_GETUNDONAME}
  123.   EM_GETUNDONAME                      = WM_USER + 86; 
  124.   {$EXTERNALSYM EM_GETREDONAME}
  125.   EM_GETREDONAME                      = WM_USER + 87; 
  126.   {$EXTERNALSYM EM_STOPGROUPTYPING}
  127.   EM_STOPGROUPTYPING                  = WM_USER + 88; 
  128.   {$EXTERNALSYM EM_SETTEXTMODE}
  129.   EM_SETTEXTMODE                      = WM_USER + 89; 
  130.   {$EXTERNALSYM EM_GETTEXTMODE}
  131.   EM_GETTEXTMODE                      = WM_USER + 90; 
  132.  
  133. { for use with EM_GET/SETTEXTMODE }
  134.  
  135.   TM_PLAINTEXT                       = 1;
  136.   {$EXTERNALSYM TM_PLAINTEXT}
  137.   TM_RICHTEXT                        = 2;     { default behavior }
  138.   {$EXTERNALSYM TM_RICHTEXT}
  139.   TM_SINGLELEVELUNDO                 = 4;
  140.   {$EXTERNALSYM TM_SINGLELEVELUNDO}
  141.   TM_MULTILEVELUNDO                  = 8;     { default behavior }
  142.   {$EXTERNALSYM TM_MULTILEVELUNDO}
  143.   TM_SINGLECODEPAGE                  = 16;
  144.   {$EXTERNALSYM TM_SINGLECODEPAGE}
  145.   TM_MULTICODEPAGE                   = 32;    { default behavior }
  146.   {$EXTERNALSYM TM_MULTICODEPAGE}
  147.  
  148.   {$EXTERNALSYM EM_AUTOURLDETECT}
  149.   EM_AUTOURLDETECT                    = WM_USER + 91; 
  150.   {$EXTERNALSYM EM_GETAUTOURLDETECT}
  151.   EM_GETAUTOURLDETECT                 = WM_USER + 92; 
  152.   {$EXTERNALSYM EM_SETPALETTE}
  153.   EM_SETPALETTE                       = WM_USER + 93; 
  154.   {$EXTERNALSYM EM_GETTEXTEX}
  155.   EM_GETTEXTEX                        = WM_USER + 94; 
  156.   {$EXTERNALSYM EM_GETTEXTLENGTHEX}
  157.   EM_GETTEXTLENGTHEX                  = WM_USER + 95; 
  158.  
  159. { Far East specific messages }
  160.  
  161.   {$EXTERNALSYM EM_SETPUNCTUATION}
  162.   EM_SETPUNCTUATION                   = WM_USER + 100; 
  163.   {$EXTERNALSYM EM_GETPUNCTUATION}
  164.   EM_GETPUNCTUATION                   = WM_USER + 101; 
  165.   {$EXTERNALSYM EM_SETWORDWRAPMODE}
  166.   EM_SETWORDWRAPMODE                  = WM_USER + 102; 
  167.   {$EXTERNALSYM EM_GETWORDWRAPMODE}
  168.   EM_GETWORDWRAPMODE                  = WM_USER + 103; 
  169.   {$EXTERNALSYM EM_SETIMECOLOR}
  170.   EM_SETIMECOLOR                      = WM_USER + 104; 
  171.   {$EXTERNALSYM EM_GETIMECOLOR}
  172.   EM_GETIMECOLOR                      = WM_USER + 105; 
  173.   {$EXTERNALSYM EM_SETIMEOPTIONS}
  174.   EM_SETIMEOPTIONS                    = WM_USER + 106; 
  175.   {$EXTERNALSYM EM_GETIMEOPTIONS}
  176.   EM_GETIMEOPTIONS                    = WM_USER + 107; 
  177.   {$EXTERNALSYM EM_CONVPOSITION}
  178.   EM_CONVPOSITION                     = WM_USER + 108; 
  179.  
  180.   {$EXTERNALSYM EM_SETLANGOPTIONS}
  181.   EM_SETLANGOPTIONS                   = WM_USER + 120; 
  182.   {$EXTERNALSYM EM_GETLANGOPTIONS}
  183.   EM_GETLANGOPTIONS                   = WM_USER + 121; 
  184.   {$EXTERNALSYM EM_GETIMECOMPMODE}
  185.   EM_GETIMECOMPMODE                   = WM_USER + 122; 
  186.  
  187. { Options for EM_SETLANGOPTIONS and EM_GETLANGOPTIONS }
  188.  
  189.   {$EXTERNALSYM IMF_AUTOKEYBOARD}
  190.   IMF_AUTOKEYBOARD            = $0001; 
  191.   {$EXTERNALSYM IMF_AUTOFONT}
  192.   IMF_AUTOFONT                = $0002; 
  193.   {$EXTERNALSYM IMF_IMECANCELCOMPLETE}
  194.   IMF_IMECANCELCOMPLETE       = $0004;  { high completes the comp string when aborting, low cancels. }
  195.   {$EXTERNALSYM IMF_IMEALWAYSSENDNOTIFY}
  196.   IMF_IMEALWAYSSENDNOTIFY     = $0008; 
  197.  
  198. { Values for EM_GETIMECOMPMODE }
  199.  
  200.   {$EXTERNALSYM ICM_NOTOPEN}
  201.   ICM_NOTOPEN                         = $0000; 
  202.   {$EXTERNALSYM ICM_LEVEL3}
  203.   ICM_LEVEL3                          = $0001; 
  204.   {$EXTERNALSYM ICM_LEVEL2}
  205.   ICM_LEVEL2                          = $0002; 
  206.   {$EXTERNALSYM ICM_LEVEL2_5}
  207.   ICM_LEVEL2_5                        = $0003; 
  208.   {$EXTERNALSYM ICM_LEVEL2_SUI}
  209.   ICM_LEVEL2_SUI                      = $0004; 
  210.  
  211. { New notifications }
  212.  
  213.   {$EXTERNALSYM EN_MSGFILTER}
  214.   EN_MSGFILTER                        = $0700; 
  215.   {$EXTERNALSYM EN_REQUESTRESIZE}
  216.   EN_REQUESTRESIZE                    = $0701; 
  217.   {$EXTERNALSYM EN_SELCHANGE}
  218.   EN_SELCHANGE                        = $0702; 
  219.   {$EXTERNALSYM EN_DROPFILES}
  220.   EN_DROPFILES                        = $0703; 
  221.   {$EXTERNALSYM EN_PROTECTED}
  222.   EN_PROTECTED                        = $0704; 
  223.   {$EXTERNALSYM EN_CORRECTTEXT}
  224.   EN_CORRECTTEXT                      = $0705;                  { PenWin specific }
  225.   {$EXTERNALSYM EN_STOPNOUNDO}
  226.   EN_STOPNOUNDO                       = $0706; 
  227.   {$EXTERNALSYM EN_IMECHANGE}
  228.   EN_IMECHANGE                        = $0707;                  { Far East specific }
  229.   {$EXTERNALSYM EN_SAVECLIPBOARD}
  230.   EN_SAVECLIPBOARD                    = $0708; 
  231.   {$EXTERNALSYM EN_OLEOPFAILED}
  232.   EN_OLEOPFAILED                      = $0709; 
  233.   {$EXTERNALSYM EN_OBJECTPOSITIONS}
  234.   EN_OBJECTPOSITIONS                  = $070a; 
  235.   {$EXTERNALSYM EN_LINK}
  236.   EN_LINK                             = $070b; 
  237.   {$EXTERNALSYM EN_DRAGDROPDONE}
  238.   EN_DRAGDROPDONE                     = $070c; 
  239.  
  240. { Event notification masks }
  241.  
  242.   {$EXTERNALSYM ENM_NONE}
  243.   ENM_NONE                            = $00000000; 
  244.   {$EXTERNALSYM ENM_CHANGE}
  245.   ENM_CHANGE                          = $00000001; 
  246.   {$EXTERNALSYM ENM_UPDATE}
  247.   ENM_UPDATE                          = $00000002; 
  248.   {$EXTERNALSYM ENM_SCROLL}
  249.   ENM_SCROLL                          = $00000004; 
  250.   {$EXTERNALSYM ENM_KEYEVENTS}
  251.   ENM_KEYEVENTS                       = $00010000; 
  252.   {$EXTERNALSYM ENM_MOUSEEVENTS}
  253.   ENM_MOUSEEVENTS                     = $00020000; 
  254.   {$EXTERNALSYM ENM_REQUESTRESIZE}
  255.   ENM_REQUESTRESIZE                   = $00040000; 
  256.   {$EXTERNALSYM ENM_SELCHANGE}
  257.   ENM_SELCHANGE                       = $00080000; 
  258.   {$EXTERNALSYM ENM_DROPFILES}
  259.   ENM_DROPFILES                       = $00100000; 
  260.   {$EXTERNALSYM ENM_PROTECTED}
  261.   ENM_PROTECTED                       = $00200000; 
  262.   {$EXTERNALSYM ENM_CORRECTTEXT}
  263.   ENM_CORRECTTEXT                     = $00400000;              { PenWin specific }
  264.   {$EXTERNALSYM ENM_SCROLLEVENTS}
  265.   ENM_SCROLLEVENTS                    = $00000008; 
  266.   {$EXTERNALSYM ENM_DRAGDROPDONE}
  267.   ENM_DRAGDROPDONE                    = $00000010; 
  268.  
  269. { Far East specific notification mask }
  270.  
  271.   {$EXTERNALSYM ENM_IMECHANGE}
  272.   ENM_IMECHANGE                       = $00800000;              { unused by RE2.0 }
  273.   {$EXTERNALSYM ENM_LANGCHANGE}
  274.   ENM_LANGCHANGE                      = $01000000; 
  275.   {$EXTERNALSYM ENM_OBJECTPOSITIONS}
  276.   ENM_OBJECTPOSITIONS                 = $02000000; 
  277.   {$EXTERNALSYM ENM_LINK}
  278.   ENM_LINK                            = $04000000; 
  279.  
  280. { New edit control styles }
  281.  
  282.   {$EXTERNALSYM ES_SAVESEL}
  283.   ES_SAVESEL                          = $00008000; 
  284.   {$EXTERNALSYM ES_SUNKEN}
  285.   ES_SUNKEN                           = $00004000; 
  286.   {$EXTERNALSYM ES_DISABLENOSCROLL}
  287.   ES_DISABLENOSCROLL                  = $00002000;
  288. { same as WS_MAXIMIZE, but that doesn't make sense so we re-use the value }
  289.   {$EXTERNALSYM ES_SELECTIONBAR}
  290.   ES_SELECTIONBAR                     = $01000000; 
  291. { same as ES_UPPERCASE, but re-used to completely disable OLE drag'n'drop }
  292.   {$EXTERNALSYM ES_NOOLEDRAGDROP}
  293.   ES_NOOLEDRAGDROP                    = $00000008; 
  294.  
  295. { New edit control extended style }
  296.  
  297.   {$EXTERNALSYM ES_EX_NOCALLOLEINIT}
  298.   ES_EX_NOCALLOLEINIT                 = $01000000; 
  299.  
  300. { These flags are used in FE Windows }
  301.  
  302.   {$EXTERNALSYM ES_VERTICAL}
  303.   ES_VERTICAL                         = $00400000; 
  304.   {$EXTERNALSYM ES_NOIME}
  305.   ES_NOIME                            = $00080000; 
  306.   {$EXTERNALSYM ES_SELFIME}
  307.   ES_SELFIME                          = $00040000; 
  308.  
  309. { Edit control options }
  310.  
  311.   {$EXTERNALSYM ECO_AUTOWORDSELECTION}
  312.   ECO_AUTOWORDSELECTION       = $00000001; 
  313.   {$EXTERNALSYM ECO_AUTOVSCROLL}
  314.   ECO_AUTOVSCROLL             = $00000040; 
  315.   {$EXTERNALSYM ECO_AUTOHSCROLL}
  316.   ECO_AUTOHSCROLL             = $00000080; 
  317.   {$EXTERNALSYM ECO_NOHIDESEL}
  318.   ECO_NOHIDESEL               = $00000100; 
  319.   {$EXTERNALSYM ECO_READONLY}
  320.   ECO_READONLY                = $00000800; 
  321.   {$EXTERNALSYM ECO_WANTRETURN}
  322.   ECO_WANTRETURN              = $00001000; 
  323.   {$EXTERNALSYM ECO_SAVESEL}
  324.   ECO_SAVESEL                 = $00008000; 
  325.   {$EXTERNALSYM ECO_SELECTIONBAR}
  326.   ECO_SELECTIONBAR            = $01000000; 
  327.   {$EXTERNALSYM ECO_VERTICAL}
  328.   ECO_VERTICAL                = $00400000;              { FE specific }
  329.  
  330. { ECO operations }
  331.  
  332.   {$EXTERNALSYM ECOOP_SET}
  333.   ECOOP_SET                                   = $0001; 
  334.   {$EXTERNALSYM ECOOP_OR}
  335.   ECOOP_OR                                    = $0002; 
  336.   {$EXTERNALSYM ECOOP_AND}
  337.   ECOOP_AND                                   = $0003; 
  338.   {$EXTERNALSYM ECOOP_XOR}
  339.   ECOOP_XOR                                   = $0004; 
  340.  
  341. { new word break function actions }
  342.  
  343.   {$EXTERNALSYM WB_CLASSIFY}
  344.   WB_CLASSIFY                 = 3; 
  345.   {$EXTERNALSYM WB_MOVEWORDLEFT}
  346.   WB_MOVEWORDLEFT             = 4; 
  347.   {$EXTERNALSYM WB_MOVEWORDRIGHT}
  348.   WB_MOVEWORDRIGHT            = 5; 
  349.   {$EXTERNALSYM WB_LEFTBREAK}
  350.   WB_LEFTBREAK                = 6; 
  351.   {$EXTERNALSYM WB_RIGHTBREAK}
  352.   WB_RIGHTBREAK               = 7; 
  353.  
  354. { Far East specific flags }
  355.  
  356.   {$EXTERNALSYM WB_MOVEWORDPREV}
  357.   WB_MOVEWORDPREV             = 4; 
  358.   {$EXTERNALSYM WB_MOVEWORDNEXT}
  359.   WB_MOVEWORDNEXT             = 5; 
  360.   {$EXTERNALSYM WB_PREVBREAK}
  361.   WB_PREVBREAK                = 6; 
  362.   {$EXTERNALSYM WB_NEXTBREAK}
  363.   WB_NEXTBREAK                = 7; 
  364.  
  365.   {$EXTERNALSYM PC_FOLLOWING}
  366.   PC_FOLLOWING                = 1; 
  367.   {$EXTERNALSYM PC_LEADING}
  368.   PC_LEADING                  = 2; 
  369.   {$EXTERNALSYM PC_OVERFLOW}
  370.   PC_OVERFLOW                 = 3; 
  371.   {$EXTERNALSYM PC_DELIMITER}
  372.   PC_DELIMITER                = 4; 
  373.   {$EXTERNALSYM WBF_WORDWRAP}
  374.   WBF_WORDWRAP                = $010; 
  375.   {$EXTERNALSYM WBF_WORDBREAK}
  376.   WBF_WORDBREAK               = $020; 
  377.   {$EXTERNALSYM WBF_OVERFLOW}
  378.   WBF_OVERFLOW                = $040; 
  379.   {$EXTERNALSYM WBF_LEVEL1}
  380.   WBF_LEVEL1                  = $080; 
  381.   {$EXTERNALSYM WBF_LEVEL2}
  382.   WBF_LEVEL2                  = $100; 
  383.   {$EXTERNALSYM WBF_CUSTOM}
  384.   WBF_CUSTOM                  = $200; 
  385.  
  386. { Far East specific flags }
  387.  
  388.   {$EXTERNALSYM IMF_FORCENONE}
  389.   IMF_FORCENONE               = $0001; 
  390.   {$EXTERNALSYM IMF_FORCEENABLE}
  391.   IMF_FORCEENABLE             = $0002; 
  392.   {$EXTERNALSYM IMF_FORCEDISABLE}
  393.   IMF_FORCEDISABLE            = $0004; 
  394.   {$EXTERNALSYM IMF_CLOSESTATUSWINDOW}
  395.   IMF_CLOSESTATUSWINDOW       = $0008; 
  396.   {$EXTERNALSYM IMF_VERTICAL}
  397.   IMF_VERTICAL                = $0020; 
  398.   {$EXTERNALSYM IMF_FORCEACTIVE}
  399.   IMF_FORCEACTIVE             = $0040; 
  400.   {$EXTERNALSYM IMF_FORCEINACTIVE}
  401.   IMF_FORCEINACTIVE           = $0080; 
  402.   {$EXTERNALSYM IMF_FORCEREMEMBER}
  403.   IMF_FORCEREMEMBER           = $0100; 
  404.   {$EXTERNALSYM IMF_MULTIPLEEDIT}
  405.   IMF_MULTIPLEEDIT            = $0400; 
  406.  
  407. { Word break flags (used with WB_CLASSIFY) }
  408.  
  409.   {$EXTERNALSYM WBF_CLASS}
  410.   WBF_CLASS                   = $0F; 
  411.   {$EXTERNALSYM WBF_ISWHITE}
  412.   WBF_ISWHITE                 = $10; 
  413.   {$EXTERNALSYM WBF_BREAKLINE}
  414.   WBF_BREAKLINE               = $20; 
  415.   {$EXTERNALSYM WBF_BREAKAFTER}
  416.   WBF_BREAKAFTER              = $40; 
  417.  
  418. { all character format measurements are in twips }
  419.  
  420. type
  421.   TCharFormatA = record
  422.     cbSize: UINT;
  423.     dwMask: Longint;
  424.     dwEffects: Longint;
  425.     yHeight: Longint;
  426.     yOffset: Longint;
  427.     crTextColor: TColorRef;
  428.     bCharSet: Byte;
  429.     bPitchAndFamily: Byte;
  430.     szFaceName: array[0..LF_FACESIZE - 1] of AnsiChar;
  431.   end;
  432.   TCharFormatW = record
  433.     cbSize: UINT;
  434.     dwMask: Longint;
  435.     dwEffects: Longint;
  436.     yHeight: Longint;
  437.     yOffset: Longint;
  438.     crTextColor: TColorRef;
  439.     bCharSet: Byte;
  440.     bPitchAndFamily: Byte;
  441.     szFaceName: array[0..LF_FACESIZE - 1] of WideChar;
  442.   end;
  443.   TCharFormat = TCharFormatA;
  444.  
  445. { CHARFORMAT masks }
  446.  
  447. const
  448.   {$EXTERNALSYM CFM_BOLD}
  449.   CFM_BOLD            = $00000001; 
  450.   {$EXTERNALSYM CFM_ITALIC}
  451.   CFM_ITALIC          = $00000002; 
  452.   {$EXTERNALSYM CFM_UNDERLINE}
  453.   CFM_UNDERLINE       = $00000004; 
  454.   {$EXTERNALSYM CFM_STRIKEOUT}
  455.   CFM_STRIKEOUT       = $00000008; 
  456.   {$EXTERNALSYM CFM_PROTECTED}
  457.   CFM_PROTECTED       = $00000010; 
  458.   {$EXTERNALSYM CFM_LINK}
  459.   CFM_LINK            = $00000020;              { Exchange hyperlink extension }
  460.   {$EXTERNALSYM CFM_SIZE}
  461.   CFM_SIZE            = $80000000; 
  462.   {$EXTERNALSYM CFM_COLOR}
  463.   CFM_COLOR           = $40000000; 
  464.   {$EXTERNALSYM CFM_FACE}
  465.   CFM_FACE            = $20000000; 
  466.   {$EXTERNALSYM CFM_OFFSET}
  467.   CFM_OFFSET          = $10000000; 
  468.   {$EXTERNALSYM CFM_CHARSET}
  469.   CFM_CHARSET         = $08000000; 
  470.  
  471. { CHARFORMAT effects }
  472.  
  473.   {$EXTERNALSYM CFE_BOLD}
  474.   CFE_BOLD            = $0001; 
  475.   {$EXTERNALSYM CFE_ITALIC}
  476.   CFE_ITALIC          = $0002; 
  477.   {$EXTERNALSYM CFE_UNDERLINE}
  478.   CFE_UNDERLINE       = $0004; 
  479.   {$EXTERNALSYM CFE_STRIKEOUT}
  480.   CFE_STRIKEOUT       = $0008; 
  481.   {$EXTERNALSYM CFE_PROTECTED}
  482.   CFE_PROTECTED       = $0010; 
  483.   {$EXTERNALSYM CFE_LINK}
  484.   CFE_LINK            = $0020; 
  485.   {$EXTERNALSYM CFE_AUTOCOLOR}
  486.   CFE_AUTOCOLOR       = $40000000;  { NOTE: this corresponds to CFM_COLOR, }
  487.                                     { which controls it }
  488.   {$EXTERNALSYM yHeightCharPtsMost}
  489.   yHeightCharPtsMost  = 1638; 
  490.  
  491. { EM_SETCHARFORMAT wParam masks }
  492.  
  493.   {$EXTERNALSYM SCF_SELECTION}
  494.   SCF_SELECTION       = $0001; 
  495.   {$EXTERNALSYM SCF_WORD}
  496.   SCF_WORD            = $0002; 
  497.   {$EXTERNALSYM SCF_DEFAULT}
  498.   SCF_DEFAULT         = $0000;          { set the default charformat or paraformat }
  499.   {$EXTERNALSYM SCF_ALL}
  500.   SCF_ALL             = $0004;          { not valid with SCF_SELECTION or SCF_WORD }
  501.   {$EXTERNALSYM SCF_USEUIRULES}
  502.   SCF_USEUIRULES      = $0008;          { modifier for SCF_SELECTION; says that }
  503.                                         { the format came from a toolbar, etc. and }
  504.                                         { therefore UI formatting rules should be }
  505.                                         { used instead of strictly formatting the }
  506.                                         { selection. }
  507.  
  508. type
  509.   _charrange = record
  510.     cpMin: Longint;
  511.     cpMax: LongInt;
  512.   end;
  513.   {$EXTERNALSYM _charrange}
  514.   TCharRange = _charrange;
  515.   CHARRANGE = _charrange;
  516.   {$EXTERNALSYM CHARRANGE}
  517.  
  518.   TEXTRANGEA = record
  519.     chrg: TCharRange;
  520.     lpstrText: PAnsiChar;
  521.   end;
  522.   {$EXTERNALSYM TEXTRANGEA}
  523.   TTextRangeA = TEXTRANGEA;
  524.   TEXTRANGEW = record
  525.     chrg: TCharRange;
  526.     lpstrText: PWideChar;
  527.   end;
  528.   {$EXTERNALSYM TEXTRANGEW}
  529.   TTextRangeW = TEXTRANGEW;
  530.   TEXTRANGE = TEXTRANGEA;
  531.  
  532. type
  533.   TEditStreamCallBack = function (dwCookie: Longint; pbBuff: PByte; 
  534.     cb: Longint; var pcb: Longint): Longint; stdcall;
  535.     
  536.   {$EXTERNALSYM _editstream}
  537.   _editstream = record
  538.     dwCookie: Longint;
  539.     dwError: Longint;
  540.     pfnCallback: TEditStreamCallBack;
  541.   end;
  542.   TEditStream = _editstream;
  543.   {$EXTERNALSYM EDITSTREAM}
  544.   EDITSTREAM = _editstream;
  545.  
  546. { stream formats }
  547.  
  548. const
  549.   {$EXTERNALSYM SF_TEXT}
  550.   SF_TEXT             = $0001; 
  551.   {$EXTERNALSYM SF_RTF}
  552.   SF_RTF              = $0002; 
  553.   {$EXTERNALSYM SF_RTFNOOBJS}
  554.   SF_RTFNOOBJS        = $0003;          { outbound only }
  555.   {$EXTERNALSYM SF_TEXTIZED}
  556.   SF_TEXTIZED         = $0004;          { outbound only }
  557.   {$EXTERNALSYM SF_UNICODE}
  558.   SF_UNICODE          = $0010;          { Unicode file of some kind }
  559.  
  560. { Flag telling stream operations to operate on the selection only }
  561. { EM_STREAMIN will replace the current selection }
  562. { EM_STREAMOUT will stream out the current selection }
  563.  
  564.   {$EXTERNALSYM SFF_SELECTION}
  565.   SFF_SELECTION       = $8000; 
  566.  
  567. { Flag telling stream operations to operate on the common RTF keyword only }
  568. { EM_STREAMIN will accept the only common RTF keyword }
  569. { EM_STREAMOUT will stream out the only common RTF keyword }
  570.  
  571.   {$EXTERNALSYM SFF_PLAINRTF}
  572.   SFF_PLAINRTF        = $4000; 
  573.  
  574. { EM_FINDTEXT flags (removed in 3.0 SDK - leave in!) }
  575.  
  576.   FT_MATCHCASE = 4;
  577.   FT_WHOLEWORD = 2;
  578.  
  579. type
  580.   FINDTEXTA = record
  581.     chrg: TCharRange;
  582.     lpstrText: PAnsiChar;
  583.   end;
  584.   {$EXTERNALSYM FINDTEXTA}
  585.   FINDTEXTW = record
  586.     chrg: TCharRange;
  587.     lpstrText: PWideChar;
  588.   end;
  589.   {$EXTERNALSYM FINDTEXTW}
  590.   FINDTEXT = FINDTEXTA;
  591.   TFindTextA = FINDTEXTA;
  592.   TFindTextW = FINDTEXTW;
  593.   TFindText = TFindTextA;
  594.  
  595.   FINDTEXTEXA = record
  596.     chrg: TCharRange;
  597.     lpstrText: PAnsiChar;
  598.     chrgText: TCharRange;
  599.   end;
  600.   {$EXTERNALSYM FINDTEXTEXA}
  601.   FINDTEXTEXW = record
  602.     chrg: TCharRange;
  603.     lpstrText: PWideChar;
  604.     chrgText: TCharRange;
  605.   end;
  606.   {$EXTERNALSYM FINDTEXTEXW}
  607.   FINDTEXTEX = FINDTEXTEXA;
  608.   TFindTextExA = FINDTEXTEXA;
  609.   TFindTextExW = FINDTEXTEXW;
  610.   TFindTextEx = TFindTextExA;
  611.  
  612.   {$EXTERNALSYM _formatrange}
  613.   _formatrange = record
  614.     hdc: HDC;
  615.     hdcTarget: HDC;
  616.     rc: TRect;
  617.     rcPage: TRect;
  618.     chrg: TCharRange;
  619.   end;
  620.   TFormatRange = _formatrange;
  621.   {$EXTERNALSYM FORMATRANGE}
  622.   FORMATRANGE = _formatrange;
  623.  
  624. { all paragraph measurements are in twips }
  625.  
  626. const
  627.   {$EXTERNALSYM MAX_TAB_STOPS}
  628.   MAX_TAB_STOPS     = 32; 
  629.   {$EXTERNALSYM lDefaultTab}
  630.   lDefaultTab     = 720; 
  631.  
  632. type
  633.   {$EXTERNALSYM _paraformat}
  634.   _paraformat = record
  635.     cbSize: UINT;
  636.     dwMask: DWORD;
  637.     wNumbering: Word;
  638.     wReserved: Word;
  639.     dxStartIndent: Longint;
  640.     dxRightIndent: Longint;
  641.     dxOffset: Longint;
  642.     wAlignment: Word;
  643.     cTabCount: Smallint;
  644.     rgxTabs: array [0..MAX_TAB_STOPS - 1] of Longint;
  645.   end;
  646.   TParaFormat = _paraformat;
  647.   {$EXTERNALSYM PARAFORMAT}
  648.   PARAFORMAT = _paraformat;
  649.  
  650. { PARAFORMAT mask values }
  651.  
  652. const
  653.   {$EXTERNALSYM PFM_STARTINDENT}
  654.   PFM_STARTINDENT                     = $00000001; 
  655.   {$EXTERNALSYM PFM_RIGHTINDENT}
  656.   PFM_RIGHTINDENT                     = $00000002; 
  657.   {$EXTERNALSYM PFM_OFFSET}
  658.   PFM_OFFSET                          = $00000004; 
  659.   {$EXTERNALSYM PFM_ALIGNMENT}
  660.   PFM_ALIGNMENT                       = $00000008; 
  661.   {$EXTERNALSYM PFM_TABSTOPS}
  662.   PFM_TABSTOPS                        = $00000010; 
  663.   {$EXTERNALSYM PFM_NUMBERING}
  664.   PFM_NUMBERING                       = $00000020; 
  665.   {$EXTERNALSYM PFM_OFFSETINDENT}
  666.   PFM_OFFSETINDENT                    = $80000000; 
  667.  
  668. { PARAFORMAT numbering options }
  669.  
  670.   {$EXTERNALSYM PFN_BULLET}
  671.   PFN_BULLET                  = $0001; 
  672.  
  673. { PARAFORMAT alignment options }
  674.  
  675.   {$EXTERNALSYM PFA_LEFT}
  676.   PFA_LEFT            = $0001; 
  677.   {$EXTERNALSYM PFA_RIGHT}
  678.   PFA_RIGHT           = $0002; 
  679.   {$EXTERNALSYM PFA_CENTER}
  680.   PFA_CENTER          = $0003; 
  681.  
  682. type  
  683.   CHARFORMAT2A = record
  684.     cbSize: UINT;
  685.     dwMask: DWORD;
  686.     dwEffects: DWORD;
  687.     yHeight: Longint;
  688.     yOffset: Longint;
  689.     crTextColor: TColorRef;
  690.     bCharSet: Byte;
  691.     bPitchAndFamily: Byte;
  692.     szFaceName: array[0..LF_FACESIZE - 1] of AnsiChar;
  693.     wWeight: Word;                   { Font weight (LOGFONT value)         }
  694.     sSpacing: Smallint;              { Amount to space between letters     }
  695.     crBackColor: TColorRef;          { Background color                     }
  696.     lid: LCID;                       { Locale ID                         }
  697.     dwReserved: DWORD;               { Reserved. Must be 0                 }
  698.     sStyle: Smallint;                { Style handle                         }
  699.     wKerning: Word;                  { Twip size above which to kern char pair }
  700.     bUnderlineType: Byte;            { Underline type                     }
  701.     bAnimation: Byte;                { Animated text like marching ants     }
  702.     bRevAuthor: Byte;                { Revision author index             }
  703.     bReserved1: Byte;
  704.   end;
  705.   CHARFORMAT2W = record
  706.     cbSize: UINT;
  707.     dwMask: DWORD;
  708.     dwEffects: DWORD;
  709.     yHeight: Longint;
  710.     yOffset: Longint;
  711.     crTextColor: TColorRef;
  712.     bCharSet: Byte;
  713.     bPitchAndFamily: Byte;
  714.     szFaceName: array[0..LF_FACESIZE - 1] of WideChar;
  715.     wWeight: Word;                   { Font weight (LOGFONT value)         }
  716.     sSpacing: Smallint;              { Amount to space between letters     }
  717.     crBackColor: TColorRef;          { Background color                     }
  718.     lid: LCID;                       { Locale ID                         }
  719.     dwReserved: DWORD;               { Reserved. Must be 0                 }
  720.     sStyle: Smallint;                { Style handle                         }
  721.     wKerning: Word;                  { Twip size above which to kern char pair }
  722.     bUnderlineType: Byte;            { Underline type                     }
  723.     bAnimation: Byte;                { Animated text like marching ants     }
  724.     bRevAuthor: Byte;                { Revision author index             }
  725.     bReserved1: Byte;
  726.   end;
  727.   CHARFORMAT2 = CHARFORMAT2A;
  728.   {$EXTERNALSYM CHARFORMAT2A}
  729.   TCharFormat2A = CHARFORMAT2A;
  730.   {$EXTERNALSYM CHARFORMAT2W}
  731.   TCharFormat2W = CHARFORMAT2W;
  732.   {$EXTERNALSYM TCharFormat2}
  733.   TCharFormat2 = TCharFormat2A;
  734.  
  735. { CHARFORMAT and PARAFORMAT "ALL" masks
  736.   CFM_COLOR mirrors CFE_AUTOCOLOR, a little hack to easily deal with autocolor }
  737. const
  738.   {$EXTERNALSYM CFM_EFFECTS}
  739.   CFM_EFFECTS = CFM_BOLD or CFM_ITALIC or CFM_UNDERLINE or CFM_COLOR or 
  740.     CFM_STRIKEOUT or CFE_PROTECTED or CFM_LINK; 
  741.   {$EXTERNALSYM CFM_ALL}
  742.   CFM_ALL = CFM_EFFECTS or CFM_SIZE or CFM_FACE or CFM_OFFSET or CFM_CHARSET; 
  743.   {$EXTERNALSYM PFM_ALL}
  744.   PFM_ALL = PFM_STARTINDENT or PFM_RIGHTINDENT or PFM_OFFSET or  
  745.     PFM_ALIGNMENT or PFM_TABSTOPS or PFM_NUMBERING or PFM_OFFSETINDENT; 
  746.  
  747. { New masks and effects -- a parenthesized asterisk indicates that
  748.    the data is stored by RichEdit2.0, but not displayed }
  749.  
  750.   {$EXTERNALSYM CFM_SMALLCAPS}
  751.   CFM_SMALLCAPS               = $0040;                  { (*)     }
  752.   {$EXTERNALSYM CFM_ALLCAPS}
  753.   CFM_ALLCAPS                 = $0080;                  { (*)     }
  754.   {$EXTERNALSYM CFM_HIDDEN}
  755.   CFM_HIDDEN                  = $0100;                  { (*)     }
  756.   {$EXTERNALSYM CFM_OUTLINE}
  757.   CFM_OUTLINE                 = $0200;                  { (*)     }
  758.   {$EXTERNALSYM CFM_SHADOW}
  759.   CFM_SHADOW                  = $0400;                  { (*)     }
  760.   {$EXTERNALSYM CFM_EMBOSS}
  761.   CFM_EMBOSS                  = $0800;                  { (*)     }
  762.   {$EXTERNALSYM CFM_IMPRINT}
  763.   CFM_IMPRINT                 = $1000;                  { (*)     }
  764.   {$EXTERNALSYM CFM_DISABLED}
  765.   CFM_DISABLED                = $2000; 
  766.   {$EXTERNALSYM CFM_REVISED}
  767.   CFM_REVISED                 = $4000; 
  768.  
  769.   {$EXTERNALSYM CFM_BACKCOLOR}
  770.   CFM_BACKCOLOR               = $04000000; 
  771.   {$EXTERNALSYM CFM_LCID}
  772.   CFM_LCID                    = $02000000; 
  773.   {$EXTERNALSYM CFM_UNDERLINETYPE}
  774.   CFM_UNDERLINETYPE           = $00800000;              { (*)     }
  775.   {$EXTERNALSYM CFM_WEIGHT}
  776.   CFM_WEIGHT                  = $00400000; 
  777.   {$EXTERNALSYM CFM_SPACING}
  778.   CFM_SPACING                 = $00200000;              { (*)     }
  779.   {$EXTERNALSYM CFM_KERNING}
  780.   CFM_KERNING                 = $00100000;              { (*)     }
  781.   {$EXTERNALSYM CFM_STYLE}
  782.   CFM_STYLE                   = $00080000;              { (*)     }
  783.   {$EXTERNALSYM CFM_ANIMATION}
  784.   CFM_ANIMATION               = $00040000;              { (*)     }
  785.   {$EXTERNALSYM CFM_REVAUTHOR}
  786.   CFM_REVAUTHOR               = $00008000; 
  787.  
  788.   {$EXTERNALSYM CFE_SUBSCRIPT}
  789.   CFE_SUBSCRIPT               = $00010000;              { Superscript and subscript are }
  790.   {$EXTERNALSYM CFE_SUPERSCRIPT}
  791.   CFE_SUPERSCRIPT             = $00020000;              {  mutually exclusive             }
  792.  
  793.   {$EXTERNALSYM CFM_SUBSCRIPT}
  794.   CFM_SUBSCRIPT               = CFE_SUBSCRIPT or CFE_SUPERSCRIPT; 
  795.   {$EXTERNALSYM CFM_SUPERSCRIPT}
  796.   CFM_SUPERSCRIPT             = CFM_SUBSCRIPT; 
  797.  
  798.   {$EXTERNALSYM CFM_EFFECTS2}
  799.   CFM_EFFECTS2 = CFM_EFFECTS or CFM_DISABLED or CFM_SMALLCAPS or CFM_ALLCAPS or 
  800.     CFM_HIDDEN  or CFM_OUTLINE or CFM_SHADOW or CFM_EMBOSS or 
  801.     CFM_IMPRINT or CFM_DISABLED or CFM_REVISED or 
  802.     CFM_SUBSCRIPT or CFM_SUPERSCRIPT or CFM_BACKCOLOR; 
  803.  
  804.   {$EXTERNALSYM CFM_ALL2}
  805.   CFM_ALL2 = CFM_ALL or CFM_EFFECTS2 or CFM_BACKCOLOR or CFM_LCID or 
  806.     CFM_UNDERLINETYPE or CFM_WEIGHT or CFM_REVAUTHOR or 
  807.     CFM_SPACING or CFM_KERNING or CFM_STYLE or CFM_ANIMATION; 
  808.  
  809.   {$EXTERNALSYM CFE_SMALLCAPS}
  810.   CFE_SMALLCAPS               = CFM_SMALLCAPS; 
  811.   {$EXTERNALSYM CFE_ALLCAPS}
  812.   CFE_ALLCAPS                 = CFM_ALLCAPS; 
  813.   {$EXTERNALSYM CFE_HIDDEN}
  814.   CFE_HIDDEN                  = CFM_HIDDEN; 
  815.   {$EXTERNALSYM CFE_OUTLINE}
  816.   CFE_OUTLINE                 = CFM_OUTLINE; 
  817.   {$EXTERNALSYM CFE_SHADOW}
  818.   CFE_SHADOW                  = CFM_SHADOW; 
  819.   {$EXTERNALSYM CFE_EMBOSS}
  820.   CFE_EMBOSS                  = CFM_EMBOSS; 
  821.   {$EXTERNALSYM CFE_IMPRINT}
  822.   CFE_IMPRINT                 = CFM_IMPRINT; 
  823.   {$EXTERNALSYM CFE_DISABLED}
  824.   CFE_DISABLED                = CFM_DISABLED; 
  825.   {$EXTERNALSYM CFE_REVISED}
  826.   CFE_REVISED                 = CFM_REVISED; 
  827.  
  828. { NOTE: CFE_AUTOCOLOR and CFE_AUTOBACKCOLOR correspond to CFM_COLOR and
  829.    CFM_BACKCOLOR, respectively, which control them }
  830.    
  831.   {$EXTERNALSYM CFE_AUTOBACKCOLOR}
  832.   CFE_AUTOBACKCOLOR           = CFM_BACKCOLOR; 
  833.  
  834. { Underline types }
  835.  
  836.   {$EXTERNALSYM CFU_CF1UNDERLINE}
  837.   CFU_CF1UNDERLINE            = $FF;    { map charformat's bit underline to CF2. }
  838.   {$EXTERNALSYM CFU_INVERT}
  839.   CFU_INVERT                  = $FE;    { For IME composition fake a selection. }
  840.   {$EXTERNALSYM CFU_UNDERLINEDOTTED}
  841.   CFU_UNDERLINEDOTTED         = $4;             { (*) displayed as ordinary underline     }
  842.   {$EXTERNALSYM CFU_UNDERLINEDOUBLE}
  843.   CFU_UNDERLINEDOUBLE         = $3;             { (*) displayed as ordinary underline     }
  844.   {$EXTERNALSYM CFU_UNDERLINEWORD}
  845.   CFU_UNDERLINEWORD           = $2;             { (*) displayed as ordinary underline     }
  846.   {$EXTERNALSYM CFU_UNDERLINE}
  847.   CFU_UNDERLINE               = $1; 
  848.   {$EXTERNALSYM CFU_UNDERLINENONE}
  849.   CFU_UNDERLINENONE           = 0; 
  850.  
  851. type
  852.   PARAFORMAT2 = record
  853.     cbSize: UINT;
  854.     dwMask: DWORD;
  855.     wNumbering: Word;
  856.     wReserved: Word;
  857.     dxStartIndent: Longint;
  858.     dxRightIndent: Longint;
  859.     dxOffset: Longint;
  860.     wAlignment: Word;
  861.     cTabCount: Smallint;
  862.     rgxTabs: array [0..MAX_TAB_STOPS - 1] of Longint;
  863.     dySpaceBefore: Longint;     { Vertical spacing before para             }
  864.     dySpaceAfter: Longint;      { Vertical spacing after para             }
  865.     dyLineSpacing: Longint;     { Line spacing depending on Rule         }
  866.     sStyle: Smallint;           { Style handle                             }
  867.     bLineSpacingRule: Byte;     { Rule for line spacing (see tom.doc)     }
  868.     bCRC: Byte;                 { Reserved for CRC for rapid searching     }
  869.     wShadingWeight: Word;       { Shading in hundredths of a per cent     }
  870.     wShadingStyle: Word;        { Nibble 0: style, 1: cfpat, 2: cbpat     }
  871.     wNumberingStart: Word;      { Starting value for numbering             }
  872.     wNumberingStyle: Word;      { Alignment, roman/arabic, (), ), ., etc. }
  873.     wNumberingTab: Word;        { Space bet 1st indent and 1st-line text }
  874.     wBorderSpace: Word;         { Space between border and text (twips) }
  875.     wBorderWidth: Word;         { Border pen width (twips)                 }
  876.     wBorders: Word;             { Byte 0: bits specify which borders     }
  877.                                 { Nibble 2: border style, 3: color index }
  878.   end;
  879.   TParaFormat2 = PARAFORMAT2;
  880.   {$EXTERNALSYM PARAFORMAT2}
  881.  
  882. { PARAFORMAT 2.0 masks and effects }
  883. const
  884.   {$EXTERNALSYM PFM_SPACEBEFORE}
  885.   PFM_SPACEBEFORE                     = $00000040; 
  886.   {$EXTERNALSYM PFM_SPACEAFTER}
  887.   PFM_SPACEAFTER                      = $00000080; 
  888.   {$EXTERNALSYM PFM_LINESPACING}
  889.   PFM_LINESPACING                     = $00000100; 
  890.   {$EXTERNALSYM PFM_STYLE}
  891.   PFM_STYLE                           = $00000400; 
  892.   {$EXTERNALSYM PFM_BORDER}
  893.   PFM_BORDER                          = $00000800;      { (*)     }
  894.   {$EXTERNALSYM PFM_SHADING}
  895.   PFM_SHADING                         = $00001000;      { (*)     }
  896.   {$EXTERNALSYM PFM_NUMBERINGSTYLE}
  897.   PFM_NUMBERINGSTYLE                  = $00002000;      { (*)     }
  898.   {$EXTERNALSYM PFM_NUMBERINGTAB}
  899.   PFM_NUMBERINGTAB                    = $00004000;      { (*)     }
  900.   {$EXTERNALSYM PFM_NUMBERINGSTART}
  901.   PFM_NUMBERINGSTART                  = $00008000;      { (*)     }
  902.  
  903.   {$EXTERNALSYM PFM_RTLPARA}
  904.   PFM_RTLPARA                         = $00010000; 
  905.   {$EXTERNALSYM PFM_KEEP}
  906.   PFM_KEEP                            = $00020000;      { (*)     }
  907.   {$EXTERNALSYM PFM_KEEPNEXT}
  908.   PFM_KEEPNEXT                        = $00040000;      { (*)     }
  909.   {$EXTERNALSYM PFM_PAGEBREAKBEFORE}
  910.   PFM_PAGEBREAKBEFORE                 = $00080000;      { (*)     }
  911.   {$EXTERNALSYM PFM_NOLINENUMBER}
  912.   PFM_NOLINENUMBER                    = $00100000;      { (*)     }
  913.   {$EXTERNALSYM PFM_NOWIDOWCONTROL}
  914.   PFM_NOWIDOWCONTROL                  = $00200000;      { (*)     }
  915.   {$EXTERNALSYM PFM_DONOTHYPHEN}
  916.   PFM_DONOTHYPHEN                     = $00400000;      { (*)     }
  917.   {$EXTERNALSYM PFM_SIDEBYSIDE}
  918.   PFM_SIDEBYSIDE                      = $00800000;      { (*)     }
  919.  
  920.   {$EXTERNALSYM PFM_TABLE}
  921.   PFM_TABLE                           = $c0000000;      { (*)     }
  922.  
  923. { Note: PARAFORMAT has no effects }
  924.  
  925.   {$EXTERNALSYM PFM_EFFECTS}
  926.   PFM_EFFECTS = PFM_RTLPARA or PFM_KEEP or PFM_KEEPNEXT or PFM_TABLE or 
  927.     PFM_PAGEBREAKBEFORE or PFM_NOLINENUMBER or 
  928.     PFM_NOWIDOWCONTROL or PFM_DONOTHYPHEN or PFM_SIDEBYSIDE or PFM_TABLE; 
  929.  
  930.   {$EXTERNALSYM PFM_ALL2}
  931.   PFM_ALL2 = PFM_ALL or PFM_EFFECTS or PFM_SPACEBEFORE or PFM_SPACEAFTER or 
  932.     PFM_LINESPACING or PFM_STYLE or PFM_SHADING or PFM_BORDER or 
  933.     PFM_NUMBERINGTAB or PFM_NUMBERINGSTART or PFM_NUMBERINGSTYLE; 
  934.  
  935.   {$EXTERNALSYM PFE_RTLPARA}
  936.   PFE_RTLPARA                         = PFM_RTLPARA         shr 16; 
  937.   {$EXTERNALSYM PFE_KEEP}
  938.   PFE_KEEP                            = PFM_KEEP             shr 16;                     { (*)     }
  939.   {$EXTERNALSYM PFE_KEEPNEXT}
  940.   PFE_KEEPNEXT                        = PFM_KEEPNEXT         shr 16;          { (*)     }
  941.   {$EXTERNALSYM PFE_PAGEBREAKBEFORE}
  942.   PFE_PAGEBREAKBEFORE                 = PFM_PAGEBREAKBEFORE shr 16;     { (*)     }
  943.   {$EXTERNALSYM PFE_NOLINENUMBER}
  944.   PFE_NOLINENUMBER                    = PFM_NOLINENUMBER     shr 16;       { (*)     }
  945.   {$EXTERNALSYM PFE_NOWIDOWCONTROL}
  946.   PFE_NOWIDOWCONTROL                  = PFM_NOWIDOWCONTROL     shr 16;     { (*)     }
  947.   {$EXTERNALSYM PFE_DONOTHYPHEN}
  948.   PFE_DONOTHYPHEN                     = PFM_DONOTHYPHEN      shr 16;       { (*)     }
  949.   {$EXTERNALSYM PFE_SIDEBYSIDE}
  950.   PFE_SIDEBYSIDE                      = PFM_SIDEBYSIDE         shr 16;        { (*)     }
  951.  
  952.   {$EXTERNALSYM PFE_TABLEROW}
  953.   PFE_TABLEROW                        = $c000;          { These 3 options are mutually     }
  954.   {$EXTERNALSYM PFE_TABLECELLEND}
  955.   PFE_TABLECELLEND                    = $8000;          {  exclusive and each imply     }
  956.   {$EXTERNALSYM PFE_TABLECELL}
  957.   PFE_TABLECELL                       = $4000;          {  that para is part of a table }
  958.  
  959.  *    PARAFORMAT numbering options (values for wNumbering):
  960.  *
  961.  *        Numbering Type        Value    Meaning
  962.  *        tomNoNumbering             0        Turn off paragraph numbering
  963.  *        tomNumberAsLCLetter      1        a, b, c, ...
  964.  *        tomNumberAsUCLetter      2        A, B, C, ...
  965.  *        tomNumberAsLCRoman      3        i, ii, iii, ...
  966.  *        tomNumberAsUCRoman      4        I, II, III, ...
  967.  *        tomNumberAsSymbols      5        default is bullet
  968.  *        tomNumberAsNumber         6        0, 1, 2, ...
  969.  *        tomNumberAsSequence      7        tomNumberingStart is first Unicode to use
  970.  *
  971.  *    Other valid Unicode chars are Unicodes for bullets.
  972. }
  973.  
  974.   {$EXTERNALSYM PFA_JUSTIFY}
  975.   PFA_JUSTIFY                         = 4;      { New paragraph-alignment option 2.0 (*) }
  976.  
  977. { notification structures }
  978. type
  979.   PMsgFilter = ^TMsgFilter;
  980.   {$EXTERNALSYM _msgfilter}
  981.   _msgfilter = record
  982.     nmhdr: TNMHdr;
  983.     msg: UINT;
  984.     wParam: WPARAM;
  985.     lParam: LPARAM;
  986.   end;
  987.   TMsgFilter = _msgfilter;
  988.   {$EXTERNALSYM MSGFILTER}
  989.   MSGFILTER = _msgfilter;
  990.  
  991.   PReqSize = ^TReqSize;
  992.   TReqSize = record
  993.     nmhdr: TNMHdr;
  994.     rc: TRect;
  995.   end;
  996.  
  997.   PSelChange = ^TSelChange;
  998.   {$EXTERNALSYM _selchange}
  999.   _selchange = record
  1000.     nmhdr: TNMHdr;
  1001.     chrg: TCharRange;
  1002.     seltyp: Word;
  1003.   end;
  1004.   TSelChange = _selchange;
  1005.   {$EXTERNALSYM SELCHANGE}
  1006.   SELCHANGE = _selchange;
  1007.  
  1008. const
  1009.   {$EXTERNALSYM SEL_EMPTY}
  1010.   SEL_EMPTY           = $0000; 
  1011.   {$EXTERNALSYM SEL_TEXT}
  1012.   SEL_TEXT            = $0001; 
  1013.   {$EXTERNALSYM SEL_OBJECT}
  1014.   SEL_OBJECT          = $0002; 
  1015.   {$EXTERNALSYM SEL_MULTICHAR}
  1016.   SEL_MULTICHAR       = $0004; 
  1017.   {$EXTERNALSYM SEL_MULTIOBJECT}
  1018.   SEL_MULTIOBJECT     = $0008; 
  1019.  
  1020. { used with IRichEditOleCallback::GetContextMenu, this flag will be
  1021.    passed as a "selection type".  It indicates that a context menu for
  1022.    a right-mouse drag drop should be generated.  The IOleObject parameter
  1023.    will really be the IDataObject for the drop
  1024. }
  1025.   {$EXTERNALSYM GCM_RIGHTMOUSEDROP}
  1026.   GCM_RIGHTMOUSEDROP      = $8000; 
  1027.  
  1028. type
  1029.   TEndDropFiles = record
  1030.     nmhdr: TNMHdr;
  1031.     hDrop: THandle;
  1032.     cp: Longint;
  1033.     fProtected: Bool;
  1034.   end;
  1035.  
  1036.   PENProtected = ^TENProtected;
  1037.   {$EXTERNALSYM _enprotected}
  1038.   _enprotected = record
  1039.     nmhdr: TNMHdr;
  1040.     msg: UINT;
  1041.     wParam: WPARAM;
  1042.     lParam: LPARAM;
  1043.     chrg: TCharRange;
  1044.   end;
  1045.   TENProtected = _enprotected;
  1046.   {$EXTERNALSYM ENPROTECTED}
  1047.   ENPROTECTED = _enprotected;
  1048.  
  1049.   PENSaveClipboard = ^TENSaveClipboard;
  1050.   {$EXTERNALSYM _ensaveclipboard}
  1051.   _ensaveclipboard = record
  1052.     nmhdr: TNMHdr;
  1053.     cObjectCount: Longint;
  1054.     cch: Longint;
  1055.   end;
  1056.   TENSaveClipboard = _ensaveclipboard;
  1057.   {$EXTERNALSYM ENSAVECLIPBOARD}
  1058.   ENSAVECLIPBOARD = _ensaveclipboard;
  1059.  
  1060.   ENOLEOPFAILED = packed record
  1061.     nmhdr: TNMHdr;
  1062.     iob: Longint;
  1063.     lOper: Longint;
  1064.     hr: HRESULT;
  1065.   end;
  1066.   {$EXTERNALSYM ENOLEOPFAILED}
  1067.   TENOleOpFailed = ENOLEOPFAILED;
  1068.  
  1069. const
  1070.   {$EXTERNALSYM OLEOP_DOVERB}
  1071.   OLEOP_DOVERB        = 1; 
  1072.  
  1073. type
  1074.   OBJECTPOSITIONS = packed record
  1075.     nmhdr: TNMHdr;
  1076.     cObjectCount: Longint;
  1077.     pcpPositions: PLongint;
  1078.   end;
  1079.   {$EXTERNALSYM OBJECTPOSITIONS}
  1080.   TObjectPositions = OBJECTPOSITIONS;
  1081.  
  1082.   ENLINK = record 
  1083.     nmhdr: TNMHdr;
  1084.     msg: UINT;
  1085.     wParam: WPARAM;
  1086.     lParam: LPARAM;
  1087.     chrg: TCharRange;
  1088.   end;
  1089.   {$EXTERNALSYM ENLINK}
  1090.   TENLink = ENLINK;
  1091.  
  1092. { PenWin specific }
  1093.   {$EXTERNALSYM _encorrecttext}
  1094.   _encorrecttext = record
  1095.     nmhdr: TNMHdr;
  1096.     chrg: TCharRange;
  1097.     seltyp: Word;
  1098.   end;
  1099.   TENCorrectText = _encorrecttext;
  1100.   {$EXTERNALSYM ENCORRECTTEXT}
  1101.   ENCORRECTTEXT = _encorrecttext;
  1102.  
  1103. { Far East specific }
  1104.   {$EXTERNALSYM _punctuation}
  1105.   _punctuation = record
  1106.     iSize: UINT;
  1107.     szPunctuation: PChar;
  1108.   end;
  1109.   TPunctuation = _punctuation;
  1110.   {$EXTERNALSYM PUNCTUATION}
  1111.   PUNCTUATION = _punctuation;
  1112.  
  1113. { Far East specific }
  1114.   {$EXTERNALSYM _compcolor}
  1115.   _compcolor = record
  1116.     crText: TColorRef;
  1117.     crBackground: TColorRef;
  1118.     dwEffects: Longint;
  1119.   end;
  1120.   TCompColor = _compcolor;
  1121.   {$EXTERNALSYM COMPCOLOR}
  1122.   COMPCOLOR = _compcolor;
  1123.  
  1124. { clipboard formats - use as parameter to RegisterClipboardFormat }
  1125.  
  1126. const
  1127.   {$EXTERNALSYM CF_RTF}
  1128.   CF_RTF                 = 'Rich Text Format';
  1129.   {$EXTERNALSYM CF_RTFNOOBJS}
  1130.   CF_RTFNOOBJS           = 'Rich Text Format Without Objects'; 
  1131.   {$EXTERNALSYM CF_RETEXTOBJ}
  1132.   CF_RETEXTOBJ           = 'RichEdit Text and Objects';
  1133.  
  1134. type
  1135.   {$EXTERNALSYM _repastespecial}
  1136.   _repastespecial = record
  1137.     dwAspect: DWORD;
  1138.     dwParam: DWORD;
  1139.   end;
  1140.   TRepasteSpecial = _repastespecial;
  1141.   {$EXTERNALSYM REPASTESPECIAL}
  1142.   REPASTESPECIAL = _repastespecial;
  1143.  
  1144. {     UndoName info }
  1145.  
  1146.   UNDONAMEID = (UID_UNKNOWN, UID_TYPING, UID_DELETE, UID_DRAGDROP, UID_CUT,
  1147.     UID_PASTE);
  1148.   {$EXTERNALSYM UNDONAMEID}
  1149.  
  1150. { flags for the GETEXTEX data structure }
  1151.  
  1152. const
  1153.   {$EXTERNALSYM GT_DEFAULT}
  1154.   GT_DEFAULT                  = 0; 
  1155.   {$EXTERNALSYM GT_USECRLF}
  1156.   GT_USECRLF                  = 1; 
  1157.  
  1158. { EM_GETTEXTEX info; this struct is passed in the wparam of the message }
  1159.  
  1160. type
  1161.   GETTEXTEX = record
  1162.     cb: DWORD;                 { count of bytes in the string  }
  1163.     flags: DWORD;              { flags (see the GT_XXX defines }
  1164.     codepage: UINT;            { code page for translation (CP_ACP for default,
  1165.                                  1200 for Unicode                      }
  1166.     lpDefaultChar: LPCSTR;     { replacement for unmappable chars             }
  1167.     lpUsedDefChar: PBOOL;      { pointer to flag set when def char used     }
  1168.   end;
  1169.   {$EXTERNALSYM GETTEXTEX}
  1170.   TGetTextEx = GETTEXTEX;
  1171. { flags for the GETTEXTLENGTHEX data structure }
  1172.  
  1173. const
  1174.   {$EXTERNALSYM GTL_DEFAULT}
  1175.   GTL_DEFAULT         = 0;      { do the default (return # of chars)         }
  1176.   {$EXTERNALSYM GTL_USECRLF}
  1177.   GTL_USECRLF         = 1;      { compute answer using CRLFs for paragraphs }
  1178.   {$EXTERNALSYM GTL_PRECISE}
  1179.   GTL_PRECISE         = 2;      { compute a precise answer                     }
  1180.   {$EXTERNALSYM GTL_CLOSE}
  1181.   GTL_CLOSE           = 4;      { fast computation of a "close" answer         }
  1182.   {$EXTERNALSYM GTL_NUMCHARS}
  1183.   GTL_NUMCHARS        = 8;      { return the number of characters             }
  1184.   {$EXTERNALSYM GTL_NUMBYTES}
  1185.   GTL_NUMBYTES        = 16;     { return the number of _bytes_                 }
  1186.  
  1187. { EM_GETTEXTLENGTHEX info; this struct is passed in the wparam of the msg }
  1188.  
  1189. type
  1190.   GETTEXTLENGTHEX = record 
  1191.     flags: DWORD;              { flags (see GTL_XXX defines)                 }
  1192.     codepage: UINT;            { code page for translation (CP_ACP for default,
  1193.                                  1200 for Unicode                      }
  1194.   end;
  1195.   {$EXTERNALSYM GETTEXTLENGTHEX}
  1196.   TGetTextLengthEx = GETTEXTLENGTHEX;
  1197.  
  1198. { UNICODE embedding character }
  1199. const
  1200.   {$EXTERNALSYM WCH_EMBEDDING}
  1201.   WCH_EMBEDDING     = $FFFC; 
  1202.  
  1203. implementation
  1204.  
  1205. end.
  1206.