About Rich Edit Controls

The following topics are discussed in this section.

Versions of Rich Edit

The original specification for rich edit controls is Microsoft Rich Edit 1.0; the current specification is Microsoft Rich Edit 4.1. Each version of rich edit is a superset of the preceding one, except that only Asian builds of Microsoft Rich Edit 1.0 have a vertical text option. Before creating a rich edit control, you should call the LoadLibrary1 function to verify which version of Microsoft Rich Edit is installed.

The following table shows which DLL corresponds with which version of Rich Edit. Note that the name of the file did not change from version 2.0 to version 3.0. This allows version 2.0 to be upgraded to version 3.0 without breaking existing code.

Rich Edit versionDLLWindow Class
1.0Riched32.dllRICHEDIT_CLASS
2.0Riched20.dllRICHEDIT_CLASS
3.0Riched20.dllRICHEDIT_CLASS
4.1Msftedit.dllMSFTEDIT_CLASS

 

The following list describes which versions of Rich Edit are included in which releases of Windows.

Windows XP SP1Includes Microsoft Rich Edit 4.1, Microsoft Rich Edit 3.0, and a Microsoft Rich Edit 1.0 emulator.
Windows XPIncludes Microsoft Rich Edit 3.0 with a Microsoft Rich Edit 1.0 emulator.
Windows MeIncludes Microsoft Rich Edit 1.0 and 3.0.
Windows 2000Includes Microsoft Rich Edit 3.0 with a Microsoft Rich Edit 1.0 emulator.
Windows 98Includes Microsoft Rich Edit 1.0 and 2.0.
Windows 95Includes only Microsoft Rich Edit 1.0. However, Riched20.dll is compatible with Windows 95 and may be installed by an application that requires it.

 

The following topics describe the new features introduced in each version of Rich Edit.

Rich Edit Version 1.0

Microsoft Rich Edit 1.0 includes the following features.

Text entry and selectionMostly standard (system-edit control) selection and entry of text. Selection bar support (the selection bar is an unmarked area to the left of each paragraph that when clicked, selects the line). Word-wrap and auto-word-select options. Single-, double-, and triple-click selection.
ANSI (single-byte character set (SBCS) and multibyte character set (MBCS)) editingHowever, there is no Unicode editing.
Basic set of character/paragraph formatting propertiesSee CHARFORMAT2 and PARAFORMAT3.
Character formatting propertiesFont name and size, bold, italic, solid underline, strike-out, protected, link, offset, and text color.
Paragraph formatting propertiesStart indent, right indent, subsequent line offset, bullet, alignment (left, center, right), and tabs.
Find forwardIncludes case-insensitive and match-whole-word options.
Message-based interfaceAlmost a superset of the system edit-control message set plus two interfaces, IRichEditOle4 and IRichEditOleCallback5.
Embedded objectsRequires client collaboration based on IRichEditOle4 and IRichEditOleCallback5 interfaces.
Right-button menu supportUses IRichEditOleCallback5 interface.
Drag-and-drop editingDrag-and-drop editing is supported.
Notifications WM_COMMAND6 messages sent to client plus a number of others. This is a superset of common-control notifications.
Single-level undo/redoBehaves similarly to the system edit control. Selecting Undo reverses the last action, and that action then becomes the new Redo action.
Simple vertical text(Asian builds only).
Input Method Editor (IME) support(Asian builds only).
WYSIWYG editing using printer metricsThis feature is needed for Microsoft WordPad, in particular.
Cut/Copy/Paste/StreamIn/StreamOutWith plain text (CF_TEXT) or Rich Text Format (RTF) with and without objects.
C code baseThe code is written in C, which provides a solid and versatile foundation.
Different builds for different scriptsMicrosoft Rich Edit 1.0 addresses localization issues with different builds.

 

Rich Edit Version 2.0

Microsoft Rich Edit 2.0 incorporated several additional features, such as support for Unicode and Asian languages, multilevel Undo, Component Object Model (COM) interfaces, and numerous UI enhancements.

Microsoft Rich Edit 2.0 includes the following features in addition to the features provided by Microsoft Rich Edit 1.0.

UnicodeUnicode eases the effort in handling international text. However effort is needed to maintain compatibility with existing non-Unicode documents—that is, the ability to convert to/from non-Unicode plain and rich text.
General international supportGeneral line breaking algorithm (extension of Kinsoku rules), simple font linking, keyboard font switching.
Asian supportLevel 2 (dialog box) and 3 (inline) is supported in IMEs.
Find Up/Find Down supportSearching forward and backward is supported.
Bidirectional supportThis is included in Microsoft Rich Edit 2.1
Multilevel undoAn extensible Undo architecture allows client to participate in application-wide Undo model.
Magellan mouse supportThis is the mouse with a roller for scrolling.
Dual-font supportThe keyboard can automatically switch fonts when the active font is inappropriate for current keyboard, for example, Kanji characters in Times New Roman.
Smart font applyFont change request does not apply Western fonts to Asian characters.
Improved displayAn off-screen bitmap is used when multiple fonts occur on the same line. This allows, for example, the last letter of the word cool not to be chopped off.
Transparency supportAlso in windowless mode.
System selection colorsUsed for selecting text.
Automatic URL recognitionCan check for a number of URL formats (for example, http:)
Microsoft Word edit UI compatibilitySelection, cursor-keypad semantics.
Word standard EOPThe end-of-paragraph mark (CR) can also handle carriage return/line feed (CR/LF) (carriage return, line feed).
Plain-text as well as rich-text functionalitySingle-character format and single-paragraph format.
Single-line and multiline controlsTruncate at first end-of-paragraph and no wordwrap.
Accelerator keysAccelerator keys are supported.
Password window stylePassword edit controls are supplied through EM_GETPASSWORDCHAR7 and EM_SETPASSWORDCHAR8.
Scalable architectureTo reduce instance size.
Windowless operation and interfacesThis is provided through the ITextHost9 and ITextServices10 interfaces.
COM dual interfacesText Object Model (TOM) interfaces.
CHARFORMAT2Added font weight, background color, locale identifier, underline type, superscript and subscript (in addition to offset), disabled effect. For RTF roundtripping only, added amount to space between letters, twip size above which to kern character pair, animated-text type, various effects: font shadow/outline, all caps, small caps, hidden, embossed, imprint, and revised.
PARAFORMAT2Added space before and after and Word line spacing. For RTF roundtripping only, added shading weight/style, numbering start/style/tab, border space/width/sides, tab alignment/leaders, various Word paragraph effects: RTL paragraph, keep, keep-next, page-break-before, no-line-number, no-widow-control, do-not-hyphenate, side-by-side.
More RTF roundtrippingAll of the Word FormatFont and FormatParagraph properties.
Code stability and stabilizationExamples: parameter and object validation, function invariants, reentrancy guards, object stabilization.
Strong testing infrastructureIncluding extensive regressions tests.
Improved performanceSmaller working set, faster load and redisplay times, and so on.
C++ code baseThe code is written in C++, which provides a solid foundation on which to build Microsoft Rich Edit 3.0.

 

With a few exceptions, Microsoft Rich Edit 2.0 uses the same functions, structures, and messages as Microsoft Rich Edit 1.0. Note, however, the following differences:

  • The name of the Microsoft Rich Edit 1.0 window class is RichEdit. Microsoft Rich Edit 2.0 has both ANSI and Unicode window classes—RichEdit20A and RichEdit20W, respectively. To specify the appropriate rich edit window class, use the RICHEDIT_CLASS constant, which the Richedit.h file defines depending on the definition of the UNICODE compile flag.
  • In Microsoft Rich Edit 2.0, if you create a Unicode rich edit control (one that expects Unicode text messages), you must specify only Unicode data in any window messages sent to the control. Similarly, if you create an ANSI rich edit control, send only ANSI or double-byte character set (DBCS) data. You can use the IsWindowUnicode11 function to determine whether a rich edit control uses Unicode text messages. Note that the rich edit COM interfaces use Unicode text unless they encounter a code page argument.
  • Microsoft Rich Edit 1.0 used CR/LF character combinations for paragraph markers. Microsoft Rich Edit 2.0 used only a carriage return character ('\r'). Microsoft Rich Edit 3.0 uses only a carriage return character but can emulate Microsoft Rich Edit 1.0 in this regard.
  • Microsoft Rich Edit 2.0 introduced the following new messages.
    MessageDescription
    EM_AUTOURLDETECT12 Enables or disables automatic URL detection.
    EM_CANREDO13 Determines whether there are any actions in the redo queue.
    EM_GETIMECOMPMODE14 Retrieves the current input method editor (IME) mode.
    EM_GETLANGOPTIONS15 Retrieves options for IME and Asian language support.
    EM_GETREDONAME16 Retrieves the type name of the next action in the redo queue.
    EM_GETTEXTMODE17 Retrieves the text mode or undo level.
    EM_GETUNDONAME18 Retrieves the type name of the next action in the undo queue.
    EM_REDO19 Redoes the next action in the redo queue.
    EM_SETLANGOPTIONS20 Sets options for IME and Asian language support.
    EM_SETTEXTMODE21 Sets the text mode or undo level.
    EM_SETUNDOLIMIT22 Sets the maximum number of actions in the undo queue.
    EM_STOPGROUPTYPING23 Stops grouping consecutive typing actions into the current undo action.

     

  • Microsoft Rich Edit 2.0 introduced the following new structures.
    StructureDescription
    CHARFORMAT224 Contains information about character formatting.
    PARAFORMAT225 Contains information about paragraph formatting.

     

  • The following messages are supported only in Asian-language versions of Microsoft Rich Edit 1.0. They are not supported in any later versions of Rich Edit.

    EM_CONVPOSITION26

    EM_GETIMECOLOR27

    EM_GETIMEOPTIONS28

    EM_GETPUNCTUATION29

    EM_GETWORDWRAPMODE30

    EM_SETIMECOLOR31

    EM_SETIMEOPTIONS32

    EM_SETPUNCTUATION33

    EM_SETWORDWRAPMODE34

Rich Edit Version 3.0

Microsoft Rich Edit 3.0 is a single, scalable, world-wide DLL that offers high performance and compatibility with Word in a small package. New features for Microsoft Rich Edit 3.0 include richer text, zoom, font binding, more powerful IME support, and rich complex script support (bidirectional, Indic, and Thai).

Microsoft Rich Edit 3.0 includes the following features in addition to the features provided by Rich Edit Version 2.0.

ZoomThe zoom factor is given by a ratio.
Paragraph numbering (single-level)Numeric, upper and lower alphabetic, or Roman numeral.
Simple tablesDeleting and inserting rows is possible, but not resizing nor wrapping inside cells. With advanced typography turned on (see EM_GETTYPOGRAPHYOPTIONS35), Microsoft Rich Edit 3.0 can align columns centered or flush right, and include decimals. Cells are simulated by tabs, so text tabs and carriage returns are replaced by blanks.
Normal and heading stylesBuilt-in normal style and heading styles 1 through 9 are supported by the EM_SETPARAFORMAT36 and Text Object Model37 (TOM) interfaces.
More underline typesDashed, dash-dot, dash-dot-dot, and dot underlining has been added.
Underline coloringUnderlined text can be tagged with one of 15 document choices for underline colors.
Hidden textMarked by CHARFORMAT2 attribute. Handy for roundtripping (writing out to a file what was read in) of information that ordinarily should not be displayed.
More default hot keysThese hot keys function the same as those in Word. For example, European accent dead keys (U.S. keyboards only). Number hot key (CTRL+L) cycles through numbering options available, starting with bullet.
HexToUnicode IMEAllows a user to convert between hexadecimal and Unicode by using hot keys.
Smart quotesThis feature is toggled on and off by CTRL+ALT+' for U.S. keyboards.
Soft hyphens For plain text, use 0xAD. For RTF, use \-.
Italics cursor In addition, the mouse cursor changes to a hand when over URLs.
Advanced typography option Microsoft Rich Edit 3.0 can use an advanced typography option for line breaking and display (see EM_GETTYPOGRAPHYOPTIONS35). This elegant option was added primarily to facilitate handling complex scripts (bidirectional, Indic, and Thai). In addition, a number of improvements occur for simple scripts. Examples are:
  • Center, right, decimal tabs
  • Fully justified text
  • Underline averaging, which provides a uniform underline even when adjacent text runs have different font sizes.
Complex script supportMicrosoft Rich Edit 3.0 supports bidirectional (text with Arabic and/or Hebrew mixed with other scripts), Indic (Indian scripts like Devangari), and Thai text. For support of these complex scripts, the advanced typography and Uniscribe components are used.
Font bindingMicrosoft Rich Edit 3.0 will automatically choose an appropriate font for characters that clearly do not belong to the current character set stamp. This is done by assigning character sets to text runs and associating fonts with those character sets. For more information, see Font Binding38.
Plain-text read/write options specific to character setsThis allows reading a file using one character set, and writing with a different character set.
UTF-8 RTFThis is recommended for cutting, copying, and pasting operations. This file format is more compact than ordinary RTF, faster, and compatible with Unicode.
Microsoft Office 9 IME support (IME98)This more powerful IME capability has been separated into an independent module. Features include:
  • Reconversion

    In the earlier versions, the user needed to delete the final string first and then type in a new string to get to the correct candidate. This new feature enables the user to convert the final string back to composition mode, thereby allowing easy selection of a different candidate string.

  • Document feed

    This feature provides IME98 with the text for the current paragraph, which helps IME98 perform more accurate conversion during typing.

  • Mouse operation

    This feature provides better control over the candidate and UI windows during typing.

  • Caret position

    This feature provides the current caret and line information, which IME98 uses to position UI windows (for example, a candidate list).

Active Input Method Manager (IMM) supportUsers can invoke the Active IMM object, which enables users to enter Asian characters on U.S. systems.
HexToUnicode supportUsers can convert between hexadecimal notation and Unicode by using hot keys.
More RTF roundtrippingRTF text that is read in from a file will be written back out intact.
Improved 1.0 compatibility modeMicrosoft Rich Edit 3.0 can emulate Microsoft Rich Edit 1.0 behavior. For example, it is possible to change between MBCS and Unicode character-position (cp) mappings. This feature emulates Microsoft Rich Edit 1.0 in Windows 2000.
Increased freeze controlThe display can be frozen over multiple API calls and then unfrozen to display the updates.
Increased undo controlUndo can be suspended and resumed (an IME requirement).
Increase/decrease font sizeIncreases or decreases font size to one of six standard values (12, 28, 36, 48, 72, and 80 points).

 

Rich Edit Version 4.1

The window class for Microsoft Rich Edit 4.1 is MSFTEDIT_CLASS.

New features for Microsoft Rich Edit 4.1 include hyphenation, page rotation, and Text Services Framework (TSF) support.

Microsoft Rich Edit 4.1 includes the following features in addition to the features provided by Rich Edit Version 3.0.

HyphenationHyphenation is supported through the following APIs: HyphenateProc39, EM_SETHYPHENATEINFO40, and EM_GETHYPHENATEINFO41.
Page rotationTop-to-bottom and bottom-to-top layout is supported through EM_SETPAGEROTATE42 and EM_GETPAGEROTATE43.
Text Services Framework support
Additional IME support
Additional EM_SETEDITSTYLE44 settingsBesides the TSF settings, there are new settings that exclude IMEs, set bidirectional text flow, use draftmode fonts, and more.
Additional EM_SETCHARFORMAT54 settingsNew flags allow the client to set the default font and font sizes for a given LCID or character set, to set the default font for the control, to prevent keyboard switching to match the font, and more.
Restricting input to ANSI textUsing TM_SINGLECODEPAGE55 in EM_SETTEXTMODE21 prevents Unicode input from entering a Rich Edit control.
Unsupported RTF keyword notification EN_LOWFIRTF56 warns an application when there is an unsupported RTF keyword.
Additional language supportAdditional languages include Armenian, Divehi, Telugu, and others.
Improved table supportFeatures include: wrapping within cells, improved handling via RTF, and improved navigation.
ES_VERTICALThe ES_VERTICAL57 window style is supported.
WM_UNICHAR58 supportTo send or post Unicode characters to ANSI windows, use WM_UNICHAR58. It is equivalent to WM_CHAR59, but it uses (UTF)-32.

 

Unsupported Edit Control Functionality

Rich edit controls support most but not all functionality for multiline edit controls. This section lists the edit control messages and window styles that are not supported by rich edit controls.

The following messages are processed by edit controls but not by rich edit controls.

Unsupported messageComments
EM_FMTLINES60 Not supported.
EM_GETHANDLE61 Rich edit controls do not store text as a simple array of characters.
EM_GETIMESTATUS62 Not supported.
EM_GETMARGINS63 Not supported.
EM_SETHANDLE64 Rich edit controls do not store text as a simple array of characters.
EM_SETIMESTATUS65 Not supported.
EM_SETMARGINS66 Supported in Microsoft Rich Edit 3.0.
EM_SETRECTNP67 Not supported.
EM_SETTABSTOPS68 The EM_SETPARAFORMAT36 message is used instead.

Supported in Microsoft Rich Edit 3.0.

WM_CTLCOLOR69 The EM_SETBKGNDCOLOR70 message is used instead.
WM_GETFONT71 The EM_GETCHARFORMAT72 message is used instead.

 

The following window styles are used with multiline edit controls but not with rich edit controls: ES_LOWERCASE73, ES_UPPERCASE74, and ES_OEMCONVERT75.

Rich Edit Shortcut Keys

Rich edit controls support the following shortcut keys.

KeysOperationsComments
Shift+BackspaceGenerate a LRM/LRM on a bidi keyboardBiDi specific
Ctrl+TabTab
Ctrl+ClearSelect all
Ctrl+Number Pad 5Select all
Ctrl+ASelect all
Ctrl+ECenter alignment
Ctrl+JJustify alignment
Ctrl+RRight alignment
Ctrl+LLeft alignment
Ctrl+CCopy
Ctrl+VPaste
Ctrl+XCut
Ctrl+ZUndo
Ctrl+YRedo
Ctrl+'+' (Ctrl+Shift+'=')Superscript
Ctrl+'='Subscript
Ctrl+1Line spacing = 1 line.
Ctrl+2Line spacing = 2 lines.
Ctrl+5Line spacing = 1.5 lines.
Ctrl+' (apostrophe)Accent acuteAfter pressing the short cut key, press the appropriate letter (for example a, e, or u). This applies to English, French, German, Italian, and Spanish keyboards only.
Ctrl+` (grave)Accent grave See Ctrl+' comments.
Ctrl+~ (tilde)Accent tildeSee Ctrl+' comments.
Ctrl+; (semicolon)Accent umlautSee Ctrl+' comments.
Ctrl+Shift+6Accent caret (circumflex)See Ctrl+' comments.
Ctrl+, (comma)Accent cedillaSee Ctrl+' comments.
Ctrl+Shift+' (apostrophe)Activate smart quotes
BackspaceIf text is protected, beep and do not delete it. Otherwise, delete previous character.
Ctrl+BackspaceDelete previous word. This generates a VK_F16 code.
F16Same as Backspace.
Ctrl+InsertCopy
Shift+InsertPaste
InsertOverwriteDBCS does not overwrite.
Ctrl+Left Arrow Move cursor one word to the left.On bidi keyboard, this depends on the direction of the text.
Ctrl+Right ArrowMove cursor one word to the right.See Ctrl+Left Arrow comments.
Ctrl+Left ShiftLeft alignmentIn BiDi documents, this is for left-to-right reading order.
Ctrl+Right ShiftRight alignmentIn BiDi documents, this is for right-to-left reading order.
Ctrl+Up ArrowMove to the line above.
Ctrl+Down ArrowMove to the line below.
Ctrl+HomeMove to the beginning of the document.
Ctrl+EndMove to the end of the document.
Ctrl+Page UpMove one page up.If in SystemEditMode and Single Line control, do nothing.
Ctrl+Page DownMove one page down.See Ctrl+Page Up comments.
Ctrl+DeleteDelete the next word or selected characters.
Shift+DeleteCut the selected characters.
EscStop drag-drop.While doing a drag-drop of text.
Alt+EscChange the active application.
Alt+XConverts the Unicode hexadecimal value preceding the insertion point to the corresponding Unicode character.
Alt+Shift+XConverts the Unicode character preceding the insertion point to the corresponding Unicode hexadecimal value.
Alt+0xxx (Number Pad) Inserts Unicode values if xxx is greater than 255. When xxx is less than 256, ASCI range text is inserted based on the current keyboard. Must enter decimal values.
Alt+Shift+Ctrl+F12Hex to Unicode.In case Alt+X is already taken for another use.
Alt+Shift+Ctrl+F11Selected text will be output to the debugger window and saved to %temp%\DumpFontInfo.txt.For Debug only (need to set Flag=8 in Win.ini)
Ctrl+Shift+A Set all caps.
Ctrl+Shift+L Fiddle bullet style.
Ctrl+Shift+Right Arrow Increase font size.Font size changes by 1 point in the range 4pt-11pt; by 2points for 12pt-28pt; it changes from 28pt -> 36pt -> 48pt -> 72pt -> 80pt; it changes by 10 points in the range 80pt - 1630pt; the maximum value is 1638.
Ctrl+Shift+Left Arrow Decrease font size.See Ctrl+Shift+Right Arrow comments.

 

Related topics

Conceptual
Using Rich Edit Controls76
Windowless Rich Edit Controls77

 

 

Send comments about this topic to Microsoft78

Build date: 9/6/2011

Links Table
1http://msdn.microsoft.com/en-us/library/ms684175.aspx
2http://msdn.microsoft.com/en-us/library/bb787881.aspx
3http://msdn.microsoft.com/en-us/library/bb787940.aspx
4http://msdn.microsoft.com/en-us/library/bb774306.aspx
5http://msdn.microsoft.com/en-us/library/bb774308.aspx
6http://msdn.microsoft.com/en-us/library/ms647591.aspx
7http://msdn.microsoft.com/en-us/library/bb761594.aspx
8http://msdn.microsoft.com/en-us/library/bb761653.aspx
9http://msdn.microsoft.com/en-us/library/bb787615.aspx
10http://msdn.microsoft.com/en-us/library/bb787617.aspx
11http://msdn.microsoft.com/en-us/library/ms633529.aspx
12http://msdn.microsoft.com/en-us/library/bb787991.aspx
13http://msdn.microsoft.com/en-us/library/bb787995.aspx
14http://msdn.microsoft.com/en-us/library/bb788035.aspx
15http://msdn.microsoft.com/en-us/library/bb788040.aspx
16http://msdn.microsoft.com/en-us/library/bb774186.aspx
17http://msdn.microsoft.com/en-us/library/bb774197.aspx
18http://msdn.microsoft.com/en-us/library/bb774202.aspx
19http://msdn.microsoft.com/en-us/library/bb774218.aspx
20http://msdn.microsoft.com/en-us/library/bb774250.aspx
21http://msdn.microsoft.com/en-us/library/bb774286.aspx
22http://msdn.microsoft.com/en-us/library/bb774290.aspx
23http://msdn.microsoft.com/en-us/library/bb774300.aspx
24http://msdn.microsoft.com/en-us/library/bb787883.aspx
25http://msdn.microsoft.com/en-us/library/bb787942.aspx
26http://msdn.microsoft.com/en-us/library/hh298392.aspx
27http://msdn.microsoft.com/en-us/library/bb788034.aspx
28http://msdn.microsoft.com/en-us/library/bb788038.aspx
29http://msdn.microsoft.com/en-us/library/bb774184.aspx
30http://msdn.microsoft.com/en-us/library/bb774206.aspx
31http://msdn.microsoft.com/en-us/library/bb774244.aspx
32http://msdn.microsoft.com/en-us/library/bb774248.aspx
33http://msdn.microsoft.com/en-us/library/bb774278.aspx
34http://msdn.microsoft.com/en-us/library/bb774294.aspx
35http://msdn.microsoft.com/en-us/library/bb774201.aspx
36http://msdn.microsoft.com/en-us/library/bb774276.aspx
37http://msdn.microsoft.com/en-us/library/bb787607.aspx
38http://msdn.microsoft.com/en-us/library/bb787877.aspx#re_font_binding
39http://msdn.microsoft.com/en-us/library/bb774370.aspx
40http://msdn.microsoft.com/en-us/library/bb774242.aspx
41http://msdn.microsoft.com/en-us/library/bb788033.aspx
42http://msdn.microsoft.com/en-us/library/bb774256.aspx
43http://msdn.microsoft.com/en-us/library/bb774180.aspx
44http://msdn.microsoft.com/en-us/library/bb774236.aspx
45http://msdn.microsoft.com/en-us/library/bb774232.aspx
46http://msdn.microsoft.com/en-us/library/bb788028.aspx
47http://msdn.microsoft.com/en-us/library/bb774234.aspx
48http://msdn.microsoft.com/en-us/library/bb788030.aspx
49http://msdn.microsoft.com/en-us/library/bb774246.aspx
50http://msdn.microsoft.com/en-us/library/bb788037.aspx
51http://msdn.microsoft.com/en-us/library/bb788039.aspx
52http://msdn.microsoft.com/en-us/library/bb788036.aspx
53http://msdn.microsoft.com/en-us/library/bb774212.aspx
54http://msdn.microsoft.com/en-us/library/bb774230.aspx
55http://msdn.microsoft.com/en-us/library/bb774364.aspx#TM_SINGLECODEPAGE
56http://msdn.microsoft.com/en-us/library/bb787972.aspx
57http://msdn.microsoft.com/en-us/library/bb774367.aspx#ES_VERTICAL
58http://msdn.microsoft.com/en-us/library/ms646288.aspx
59http://msdn.microsoft.com/en-us/library/ms646276.aspx
60http://msdn.microsoft.com/en-us/library/bb761570.aspx
61http://msdn.microsoft.com/en-us/library/bb761576.aspx
62http://msdn.microsoft.com/en-us/library/bb761580.aspx
63http://msdn.microsoft.com/en-us/library/bb761590.aspx
64http://msdn.microsoft.com/en-us/library/bb761641.aspx
65http://msdn.microsoft.com/en-us/library/bb761645.aspx
66http://msdn.microsoft.com/en-us/library/bb761649.aspx
67http://msdn.microsoft.com/en-us/library/bb761659.aspx
68http://msdn.microsoft.com/en-us/library/bb761663.aspx
69http://msdn.microsoft.com/en-us/library/bb432504.aspx
70http://msdn.microsoft.com/en-us/library/bb774228.aspx
71http://msdn.microsoft.com/en-us/library/ms632624.aspx
72http://msdn.microsoft.com/en-us/library/bb788026.aspx
73http://msdn.microsoft.com/en-us/library/bb775464.aspx#ES_LOWERCASE
74http://msdn.microsoft.com/en-us/library/bb775464.aspx#ES_UPPERCASE
75http://msdn.microsoft.com/en-us/library/bb775464.aspx#ES_OEMCONVERT
76http://msdn.microsoft.com/en-us/library/bb787877.aspx
77http://msdn.microsoft.com/en-us/library/bb787609.aspx
78Send comments about this topic to Microsoft; mailto:wsddocfb@microsoft.com?subject=Documentation%20feedback%20%5Bcontrols%5Ccontrols%5D:%20About%20Rich%20Edit%20Controls%20%20RELEASE:%20(9/6/2011)&body=%0A%0APRIVACY%20STATEMENT%0A%0AThe%20SDK%20team%20uses%20the%20feedback%20submitted%20to%20improve%20the%20SDK%20documentation.%20We%20do%20not%20use%20your%20email%20address%20for%20any%20other%20purpose.%20We%20will%20remove%20your%20email%20address%20from%20our%20system%20after%20the%20issue%20you%20are%20reporting%20has%20been%20resolved.%20While%20we%20are%20working%20to%20resolve%20this%20issue,%20we%20may%20send%20you%20an%20email%20message%20to%20request%20more%20information%20about%20your%20feedback.%20After%20the%20issues%20have%20been%20addressed,%20we%20may%20send%20you%20an%20email%20message%20to%20let%20you%20know%20that%20your%20feedback%20has%20been%20addressed.%0A%0AFor%20more%20information%20about%20Microsoft's%20privacy%20policy,%20see%20http://privacy.microsoft.com/en-us/default.aspx.
Community Content Add
Annotations FAQ
RichEdit 4.1 loads 30x faster
Timings with EM_STREAMIN show that big RTF files (around 1MB) load roughly 30 times faster with version 4.1, as compared to 3.0. Be aware, though, that when using EM_STREAMOUT to write plain text, Rich Edit 4.1 occasionally loses two bytes at the beginning of the n*2048 bytes border, where n can vary a lot (e.g. 10, 133...).
Another factor to observe is that when streaming out plain text, 3.0 includes hidden text while 4.1 writes only the visible one.
Incorrect shortcut combinations
In the Rich Edit Shortcut Keys table, the key combination for increasing or decreasing the font size is incorrect, and should be "Ctrl+Shift+Right Angle Bracket" and "Ctrl+Shift+Left Angle Bracket", respectively. The combination for move to line above/below is also incorrect, as the user just needs to press either the arrow key UP or arrow key DOWN, respectively.