CRichEditCtrl Class

 

For the latest documentation on Visual Studio 2017 RC, see Visual Studio 2017 RC Documentation.

Provides the functionality of the rich edit control.

class CRichEditCtrl : public CWnd  

Public Constructors

NameDescription
CRichEditCtrl::CRichEditCtrlConstructs a CRichEditCtrl object.

Public Methods

NameDescription
CRichEditCtrl::CanPasteDetermines if the contents of the Clipboard can be pasted into this rich edit control.
CRichEditCtrl::CanRedoDetermines whether there are any actions in the control's redo queue.
CRichEditCtrl::CanUndoDetermines if an editing operation can be undone.
CRichEditCtrl::CharFromPosRetrieves information about the character closest to a specified point in the client area of an edit control.
CRichEditCtrl::ClearClears the current selection.
CRichEditCtrl::CopyCopies the current selection to the Clipboard.
CRichEditCtrl::CreateCreates the Windows rich edit control and associates it with this CRichEditCtrl object.
CRichEditCtrl::CreateExCreates the Windows rich edit control with the specified extended Windows styles and associates it with this CRichEditCtrl object.
CRichEditCtrl::CutCuts the current selection to the Clipboard.
CRichEditCtrl::DisplayBandDisplays a portion of the contents of this CRichEditCtrl object.
CRichEditCtrl::EmptyUndoBufferResets (clears) the undo flag of this CRichEditCtrl object.
CRichEditCtrl::FindTextLocates text within this CRichEditCtrl object.
CRichEditCtrl::FindWordBreakFinds the next word break before or after the specified character position, or retrieves information about the character at that position.
CRichEditCtrl::FormatRangeFormats a range of text for the target output device.
CRichEditCtrl::GetCharPosDetermines the location of a given character within this CRichEditCtrl object.
CRichEditCtrl::GetDefaultCharFormatRetrieves the current default character formatting attributes in this CRichEditCtrl object.
CRichEditCtrl::GetEventMaskRetrieves the event mask for this CRichEditCtrl object.
CRichEditCtrl::GetFirstVisibleLineDetermines the topmost visible line in this CRichEditCtrl object.
CRichEditCtrl::GetIRichEditOleRetrieves a pointer to the IRichEditOle interface for this rich edit control.
CRichEditCtrl::GetLimitTextGets the limit on the amount of text a user can enter into this CRichEditCtrl object.
CRichEditCtrl::GetLineRetrieves a line of text from this CRichEditCtrl object.
CRichEditCtrl::GetLineCountRetrieves the number of lines in this CRichEditCtrl object.
CRichEditCtrl::GetModifyDetermines if the contents of this CRichEditCtrl object have changed since the last save.
CRichEditCtrl::GetOptionsRetrieves the rich edit control options.
CRichEditCtrl::GetParaFormatRetrieves the paragraph formatting attributes in the current selection in this CRichEditCtrl object.
CRichEditCtrl::GetPunctuationRetrieves the current punctuation characters for the rich edit control. This message is available only in Asian-language versions of the operating system.
CRichEditCtrl::GetRectRetrieves the formatting rectangle for this CRichEditCtrl object.
CRichEditCtrl::GetRedoNameRetrieves the type of the next action, if any, in the control's redo queue.
CRichEditCtrl::GetSelGets the starting and ending positions of the current selection in this CRichEditCtrl object.
CRichEditCtrl::GetSelectionCharFormatRetrieves the character formatting attributes in the current selection in this CRichEditCtrl object.
CRichEditCtrl::GetSelectionTypeRetrieves the type of contents in the current selection in this CRichEditCtrl object.
CRichEditCtrl::GetSelTextGets the text of the current selection in this CRichEditCtrl object
CRichEditCtrl::GetTextLengthRetrieves the length of the text, in characters, in this CRichEditCtrl object. Does not include the terminating null character.
CRichEditCtrl::GetTextLengthExRetrieves the number of characters or bytes in the rich edit view. Accepts a list of flags to indicate the method of determining length of the text in a rich edit control
CRichEditCtrl::GetTextModeRetrieves the current text mode and undo level of a rich edit control.
CRichEditCtrl::GetTextRangeRetrieves the specified range of text.
CRichEditCtrl::GetUndoNameRetrieves the type of the next undo action, if any.
CRichEditCtrl::GetWordWrapModeRetrieves the current word wrapping and word breaking options for the rich edit control. This message is available only in Asian-language versions of the operating system.
CRichEditCtrl::HideSelectionShows or hides the current selection.
CRichEditCtrl::LimitTextLimits the amount of text a user can enter into the CRichEditCtrl object.
CRichEditCtrl::LineFromCharDetermines which line contains the given character.
CRichEditCtrl::LineIndexRetrieves the character index of a given line in this CRichEditCtrl object.
CRichEditCtrl::LineLengthRetrieves the length of a given line in this CRichEditCtrl object.
CRichEditCtrl::LineScrollScrolls the text in this CRichEditCtrl object.
CRichEditCtrl::PasteInserts the contents of the Clipboard into this rich edit control.
CRichEditCtrl::PasteSpecialInserts the contents of the Clipboard into this rich edit control in the specified data format.
CRichEditCtrl::PosFromCharRetrieves the client area coordinates of a specified character in an edit control.
CRichEditCtrl::RedoRedoes the next action in the control's redo queue.
CRichEditCtrl::ReplaceSelReplaces the current selection in this CRichEditCtrl object with specified text.
CRichEditCtrl::RequestResizeForces this CRichEditCtrl object to send request resize notifications.
CRichEditCtrl::SetAutoURLDetectIndicates if the auto URL detection is active in a rich edit control.
CRichEditCtrl::SetBackgroundColorSets the background color in this CRichEditCtrl object.
CRichEditCtrl::SetDefaultCharFormatSets the current default character formatting attributes in this CRichEditCtrl object.
CRichEditCtrl::SetEventMaskSets the event mask for this CRichEditCtrl object.
CRichEditCtrl::SetModifySets or clears the modification flag for this CRichEditCtrl object.
CRichEditCtrl::SetOLECallbackSets the IRichEditOleCallback COM object for this rich edit control.
CRichEditCtrl::SetOptionsSets the options for this CRichEditCtrl object.
CRichEditCtrl::SetParaFormatSets the paragraph formatting attributes in the current selection in this CRichEditCtrl object.
CRichEditCtrl::SetPunctuationSets the punctuation characters for a rich edit control. This message is available only in Asian-language versions of the operating system.
CRichEditCtrl::SetReadOnlySets the read-only option for this CRichEditCtrl object.
CRichEditCtrl::SetRectSets the formatting rectangle for this CRichEditCtrl object.
CRichEditCtrl::SetSelSets the selection in this CRichEditCtrl object.
CRichEditCtrl::SetSelectionCharFormatSets the character formatting attributes in the current selection in this CRichEditCtrl object.
CRichEditCtrl::SetTargetDeviceSets the target output device for this CRichEditCtrl object.
CRichEditCtrl::SetTextModeSets the text mode or undo level of a rich edit control. The message fails if the control contains text.
CRichEditCtrl::SetUndoLimitSets the maximum number of actions that can stored in the undo queue.
CRichEditCtrl::SetWordCharFormatSets the character formatting attributes in the current word in this CRichEditCtrl object.
CRichEditCtrl::SetWordWrapModeSets the word-wrapping and word-breaking options for the rich edit control. This message is available only in Asian-language versions of the operating system.
CRichEditCtrl::StopGroupTypingStops the control from collecting additional typing actions into the current undo action. The control stores the next typing action, if any, into a new action in the undo queue.
CRichEditCtrl::StreamInInserts text from an input stream into this CRichEditCtrl object.
CRichEditCtrl::StreamOutStores text from this CRichEditCtrl object into an output stream.
CRichEditCtrl::UndoReverses the last editing operation.

A "rich edit control" is a window in which the user can enter and edit text. The text can be assigned character and paragraph formatting, and can include embedded OLE objects. Rich edit controls provide a programming interface for formatting text. However, an application must implement any user interface components necessary to make formatting operations available to the user.

This Windows Common control (and therefore the CRichEditCtrl class) is available only to programs running under Windows 95/98 and Windows NT versions 3.51 and later. The CRichEditCtrl class supports versions 2.0 and 3.0 of the Windows SDK rich edit control.

System_CAPS_ICON_caution.jpg Caution

If you are using a rich edit control in a dialog box (regardless whether your application is SDI, MDI, or dialog-based), you must call [AfxInitRichEdit]--brokenlink--(../Topic/not%20found.md#afxinitrichedit) once before the dialog box is displayed. A typical place to call this function is in your program's InitInstance member function. You do not need to call it for each time you display the dialog box, only the first time. You do not have to call AfxInitRichEdit if you are working with CRichEditView.

For more information on using CRichEditCtrl, see:

  • Controls

  • Using CRichEditCtrl

  • Knowledge Base article Q259949 : INFO: SetCaretPos() Is Not Appropriate with CEdit or CRichEditCtrl Controls

For an example of using a rich edit control in an MFC application, see the WORDPAD sample application.

CObject

CCmdTarget

CWnd

CRichEditCtrl

Header: afxcmn.h

Determines if the rich edit control can paste the specified Clipboard format.

BOOL CanPaste(UINT nFormat = 0) const;

 

Parameters

nFormat
The Clipboard data format to query. This parameter can be one of the predefined Clipboard formats or the value returned by RegisterClipboardFormat.

Return Value

Nonzero if the Clipboard format can be pasted; otherwise 0.

Remarks

If nFormat is 0, CanPaste will try any format currently on the Clipboard.

For more information, see EM_CANPASTE message and RegisterClipboardFormat function in the Windows SDK.

Example

   // Paste the clipboard data if possible.
   if (m_myRichEditCtrl.CanPaste())
   {
      m_myRichEditCtrl.Paste();
   }

Determines if the redo queue contains any actions.

BOOL CanRedo() const;

 

Return Value

Nonzero if the redo queue contains actions, otherwise 0.

Remarks

To discover the name of the operation in the redo queue, call CRichEditCtrl::GetRedoName. To redo the most recent Undo operation, call Redo.

For more information, see EM_CANREDO in the Windows SDK.

Determines if the last editing operation can be undone.

BOOL CanUndo() const;

 

Return Value

Nonzero if the last edit operation can be undone by a call to the Undo member function; 0 if it cannot be undone.

Remarks

For more information, see EM_CANUNDO in the Windows SDK.

Example

   // Undo the last operation, if possible.
   if (m_myRichEditCtrl.CanUndo())
      m_myRichEditCtrl.Undo();

Retrieves information about the character at the point specified by the parameter pt.

int CharFromPos(CPoint pt) const;

 

Parameters

pt
A CPoint object containing the coordinates of the specified point.

Return Value

The zero-based character index of the character nearest the specified point. If the specified point is beyond the last character in the control, the return value indicates the last character in the control.

Remarks

This member function works with a rich edit control. To get the information for an edit control, call CEdit::CharFromPos.

For more information, see EM_CHARFROMPOS in the Windows SDK.

Deletes (clears) the current selection (if any) in the rich edit control.

void Clear();

Remarks

The deletion performed by Clear can be undone by calling the Undo member function.

To delete the current selection and place the deleted contents onto the Clipboard, call the Cut member function.

For more information, see WM_CLEAR in the Windows SDK.

Example

   // Delete all of the text.
   m_myRichEditCtrl.SetSel(0, -1);
   m_myRichEditCtrl.Clear();

Copies the current selection (if any) in the rich edit control to the Clipboard.

void Copy();

Remarks

For more information, see WM_COPY in the Windows SDK.

Example

   // Copy all of the text to the clipboard.
   m_myRichEditCtrl.SetSel(0, -1);
   m_myRichEditCtrl.Copy();

Creates the Windows rich edit control and associates it with this CRichEditCtrl object.

virtual BOOL Create(
    DWORD dwStyle,  
    const RECT& rect,  
    CWnd* pParentWnd,  
    UINT nID);

Parameters

dwStyle
Specifies the edit control's style. Apply a combination of the window styles listed in the Remarks section below, and edit control styles, described in the Windows SDK.

rect
Specifies the edit control's size and position. Can be a CRect object or RECT structure.

pParentWnd
Specifies the edit control's parent window (often a CDialog). It must not be NULL.

nID
Specifies the edit control's ID.

Return Value

Nonzero if initialization is successful; otherwise, 0.

Remarks

You construct a CRichEditCtrl object in two steps. First, call the CRichEditCtrl constructor, then call Create, which creates the Windows edit control and attaches it to the CRichEditCtrl object.

When you create a rich edit control with this function, first you must load the necessary common controls library. To load the libary, call the global function [AfxInitRichEdit]--brokenlink--(../Topic/not%20found.md#afxinitrichedit), which in turn initializes the common controls library. You need to call AfxInitRichEdit only once in your process.

When Create executes, Windows sends the WM_NCCREATE, WM_NCCALCSIZE, WM_CREATE, and WM_GETMINMAXINFO messages to the edit control.

These messages are handled by default by the OnNcCreate, OnNcCalcSize, OnCreate, and OnGetMinMaxInfo member functions in the CWnd base class. To extend the default message handling, derive a class from CRichEditCtrl, add a message map to the new class, and override the above message-handler member functions. Override OnCreate, for example, to perform needed initialization for the new class.

Apply the following window styles to an edit control.

  • WS_CHILD Always.

  • WS_VISIBLE Usually.

  • WS_DISABLED Rarely.

  • WS_GROUP To group controls.

  • WS_TABSTOP To include edit control in the tabbing order.

For more information about window styles, see CreateWindow in the Windows SDK.

Example

   m_myRichEditCtrl.Create(
      WS_CHILD|WS_VISIBLE|WS_BORDER|ES_MULTILINE,
      CRect(10,10,100,200), pParentWnd, IDD_RICHEDITCTRL);

Creates a control (a child window) and associates it with the CRichEditCtrl object.

virtual BOOL CreateEx(
    DWORD dwExStyle,  
    DWORD dwStyle,  
    const RECT& rect,  
    CWnd* pParentWnd,  
    UINT nID);

Parameters

dwExStyle
Specifies the extended style of the control being created. For a list of extended Windows styles, see the dwExStyle parameter for CreateWindowEx in the Windows SDK.

dwStyle
Specifies the edit control's style. Apply a combination of the window styles listed in the Remarks section of Create and edit control styles, described in the Windows SDK.

rect
A reference to a RECT structure describing the size and position of the window to be created, in client coordinates of pParentWnd.

pParentWnd
A pointer to the window that is the control's parent.

nID
The control's child-window ID.

Return Value

Nonzero if successful; otherwise 0.

Remarks

Use CreateEx instead of Create to apply extended Windows styles, specified by the Windows extended style preface WS_EX_.

Constructs a CRichEditCtrl object.

CRichEditCtrl();

Remarks

Use Create to construct the Windows rich edit control.

Example

      // Declare a local CRichEditCtrl object.
      CRichEditCtrl myRichEditCtrl;

      // Declare a dynamic CRichEditCtrl object.
      CRichEditCtrl* pRichEditCtrl = new CRichEditCtrl;

Delete (cuts) the current selection (if any) in the rich edit control and copies the deleted text to the Clipboard.

void Cut();

Remarks

The deletion performed by Cut can be undone by calling the Undo member function.

To delete the current selection without placing the deleted text into the Clipboard, call the Clear member function.

For more information, see WM_CUT in the Windows SDK.

Example

   // Delete all of the text and copy it to the clipboard.
   m_myRichEditCtrl.SetSel(0, -1);
   m_myRichEditCtrl.Cut();

Displays a portion of the contents of the rich edit control (text and OLE items), as previously formatted by FormatRange.

BOOL DisplayBand(LPRECT pDisplayRect);

Parameters

pDisplayRect
Pointer to a RECT or CRect object specifying the area of the device to display the text.

Return Value

Nonzero if the display of the formatted text succeeds, otherwise, 0.

Remarks

The text and OLE items are clipped to the area specified by the pointer pDisplayRect.

For more information, see EM_DISPLAYBAND in the Windows SDK.

Example

See the example for CRichEditCtrl::FormatRange.

Resets (clear) the undo flag of this rich edit control.

void EmptyUndoBuffer();

Remarks

The control will now be unable to undo the last editing operation. The undo flag is set whenever an operation within the rich edit control can be undone.

The undo flag is automatically cleared whenever you call the CWnd member function SetWindowText.

For more information, see EM_EMPTYUNDOBUFFER in the Windows SDK.

Example

   // Clear the undo buffer.
   if (m_myRichEditCtrl.CanUndo())
   {
      m_myRichEditCtrl.EmptyUndoBuffer();
      ASSERT(!m_myRichEditCtrl.CanUndo());
   }

Finds text within the rich edit control.

long FindText(
    DWORD dwFlags,  
    FINDTEXTEX* pFindText) const;

 

Parameters

dwFlags
For a list of possible values, see wParam in EM_FINDTEXTEXT in the Windows SDK.

pFindText
Pointer to the FINDTEXTEX structure giving the parameters for the search and returning the range where the match was found.

Return Value

Zero-based character position of the next match; – 1 if there are no more matches.

Remarks

You can search either up or down by setting the proper range parameters in the CHARRANGE structure within the FINDTEXTEX structure.

For more information, see EM_FINDTEXTEX message and FINDTEXTEX structure in the Windows SDK.

Example

      // Set the selection to be the first occurrence of the 
      // string lpszmyString, if it is found.   
      FINDTEXTEX ft;
      ft.chrg.cpMin = 0;
      ft.chrg.cpMax = 50;
      ft.lpstrText = _T("wallaby");
      long n = m_myRichEditCtrl.FindText(FR_MATCHCASE|FR_WHOLEWORD, &ft);
      if (n != -1)
         m_myRichEditCtrl.SetSel(ft.chrgText);

Finds the next word break before or after the position specified by nStart.

DWORD FindWordBreak(
    UINT nCode,  
    DWORD nStart) const;

 

Parameters

nCode
Indicates the action to take. For a list of possible values, see the description for the parameter code in EM_FINDWORDBREAK in the Windows SDK.

nStart
The zero-based character position from which to start.

Return Value

Based on the parameter nCode. For more information, see EM_FINDWORDBREAK in the Windows SDK.

Remarks

You can use this member function to retrieve information about a character at a given position.

Formats a range of text in a rich edit control for a specific device.

long FormatRange(
    FORMATRANGE* pfr,  
    BOOL bDisplay = TRUE);

Parameters

pfr
Pointer to the FORMATRANGE structure which contains information about the output device. NULL indicates that cached information within the rich edit control can be freed.

bDisplay
Indicates if the text should be rendered. If FALSE, the text is just measured.

Return Value

The index of the last character that fits in the region plus one.

Remarks

Typically, this call is followed by a call to DisplayBand.

For more information, see EM_FORMATRANGE message and FORMATRANGE structure in the Windows SDK.

Example

      // First obtain a pointer to a printer DC.
      CPageSetupDialog psDlg;
      if (IDOK == psDlg.DoModal())
      {
         CDC* pMyPrinterDC = CDC::FromHandle(psDlg.CreatePrinterDC());

         FORMATRANGE fr;

         // Get the page width and height from the printer.
         long lPageWidth = ::MulDiv(pMyPrinterDC->GetDeviceCaps(PHYSICALWIDTH),
             1440, pMyPrinterDC->GetDeviceCaps(LOGPIXELSX));
         long lPageHeight = ::MulDiv(pMyPrinterDC->GetDeviceCaps(PHYSICALHEIGHT),
             1440, pMyPrinterDC->GetDeviceCaps(LOGPIXELSY));
         CRect rcPage(0, 0, lPageWidth, lPageHeight);

         // Format the text and render it to the printer.
         fr.hdc = pMyPrinterDC->m_hDC;
         fr.hdcTarget = pMyPrinterDC->m_hDC;
         fr.rc = rcPage;
         fr.rcPage = rcPage;
         fr.chrg.cpMin = 0;
         fr.chrg.cpMax = -1;
         m_myRichEditCtrl.FormatRange(&fr, TRUE);

         // Update the display with the new formatting.
         RECT rcClient;
         m_myRichEditCtrl.GetClientRect(&rcClient);
         m_myRichEditCtrl.DisplayBand(&rcClient);   

         pMyPrinterDC->DeleteDC();
      }

Gets the position (top-left corner) of a given character within this CRichEditCtrl object.

CPoint GetCharPos(long lChar) const;

 

Parameters

lChar
Zero-based index of the character.

Return Value

The location of the top-left corner of the character specified by lChar.

Remarks

The character is specified by giving its zero-based index value. If lChar is greater than the index of the last character in this CRichEditCtrl object, the return value specifies the coordinates of the character position just past the last character in this CRichEditCtrl object.

For more information, see EM_POSFROMCHAR in the Windows SDK.

Gets the default character formatting attributes of this CRichEditCtrl object.

DWORD GetDefaultCharFormat(CHARFORMAT& cf) const;

 
 
DWORD GetDefaultCharFormat(CHARFORMAT2& cf) const;

 

Parameters

cf
In the first version, a pointer to a CHARFORMAT structure holding the default character formatting attributes.

In the second version, a pointer to a CHARFORMAT2 structure, which is a Rich Edit 2.0 extension to the CHARFORMAT structure, holding the default character formatting attributes.

Return Value

The dwMask data member of cf. It specified the default character formatting attributes.

Remarks

For more information, see the EM_GETCHARFORMAT message and the CHARFORMAT and CHARFORMAT2 structures in the Windows SDK.

Example

See the example for SetDefaultCharFormat.

Gets the event mask for this CRichEditCtrl object.

long GetEventMask() const;

 

Return Value

The event mask for this CRichEditCtrl object.

Remarks

The event mask specifies which notification messages the CRichEditCtrl object sends to its parent window.

For more information, see EM_GETEVENTMASK in the Windows SDK.

Example

See the example for CRichEditCtrl::SetEventMask.

Determines the topmost visible line in this CRichEditCtrl object.

int GetFirstVisibleLine() const;

 

Return Value

Zero-based index of the uppermost visible line in this CRichEditCtrl object.

Remarks

For more information, see EM_GETFIRSTVISIBLELINE in the Windows SDK.

Example

      int nFirstVisible = m_myRichEditCtrl.GetFirstVisibleLine();

      // Scroll the rich edit control so that the first visible line
      // is the first line of text.
      if (nFirstVisible > 0)
      {
         m_myRichEditCtrl.LineScroll(-nFirstVisible, 0);
      }

Accesses the IRichEditOle interface for this CRichEditCtrl object.

IRichEditOle* GetIRichEditOle() const;

 

Return Value

Pointer to the IRichEditOle interface that can be used to access this CRichEditCtrl object's OLE functionality; NULL if the interface is not accessible.

Remarks

Use this interface to access this CRichEditCtrl object's OLE functionality.

For more information, see EM_GETOLEINTERFACE message and IRichEditOle interface in the Windows SDK.

Gets the text limit for this CRichEditCtrl object.

long GetLimitText() const;

 

Return Value

The current text limit, in bytes, for this CRichEditCtrl object.

Remarks

The text limit is the maximum amount of text, in bytes, the rich edit control can accept.

For more information, see EM_GETLIMITTEXT in the Windows SDK.

Example

      // The new text of the rich edit control.
      LPCTSTR lpszmyString = _T("Here's some text in our rich edit control!");
      long nLength = (long)_tcslen(lpszmyString);

      // Want the text limit to be at least the size of the new string.
      if (m_myRichEditCtrl.GetLimitText() < nLength)
         m_myRichEditCtrl.LimitText(nLength);

      m_myRichEditCtrl.SetWindowText(lpszmyString);   

Retrieves a line of text from this CRichEditCtrl object.

int GetLine(
    int nIndex,  
    LPTSTR lpszBuffer) const;

 
 
int GetLine(
    int nIndex,  
    LPTSTR lpszBuffer,  
    int nMaxLength) const;

 

Parameters

nIndex
Zero-based index of the line to retrieve.

lpszBuffer
Points to the buffer to receive the text. The first word of the buffer must specify the maximum number of bytes that can be copied into the buffer.

nMaxLength
Maximum number of characters that can be copied into lpszBuffer. The second form of GetLine places this value into the first word of the buffer specified by lpszBuffer.

Return Value

The number of characters copied into lpszBuffer.

Remarks

The copied line does not contain a terminating null character.

System_CAPS_ICON_note.jpg Note

Because the first word of the buffer stores the number of characters to be copied, make sure that your buffer is at least 4 bytes long.

For more information, see EM_GETLINE in the Windows SDK.

Example

See the example for GetLineCount.

Retrieves the number of lines in the CRichEditCtrl object.

int GetLineCount() const;

 

Return Value

The number of lines in this CRichEditCtrl object.

Remarks

For more information, see EM_GETLINECOUNT in the Windows SDK.

Example

      int nLineLength, nLineIndex, nLineCount = m_myRichEditCtrl.GetLineCount();
      CString strText, strLine;

      // Dump every line of text of the rich edit control.
      for (int i = 0; i < nLineCount; i++)
      {
         nLineIndex = m_myRichEditCtrl.LineIndex(i);
         nLineLength = m_myRichEditCtrl.LineLength(nLineIndex);
         m_myRichEditCtrl.GetLine(i, strText.GetBufferSetLength(nLineLength + 1),
            nLineLength);
         strText.SetAt(nLineLength, _T('\0')); // null terminate
         strText.ReleaseBuffer(nLineLength + 1);

         TRACE(_T("line %d: '%s'\r\n"), i, strText);
      }

Determines if the contents of this CRichEditCtrl object have been modified.

BOOL GetModify() const;

 

Return Value

Nonzero if the text in this CRichEditCtrl object has been modified; otherwise 0.

Remarks

Windows maintains an internal flag indicating whether the contents of the rich edit control have been changed. This flag is cleared when the edit control is first created and can also be cleared by calling the SetModify member function.

For more information, see EM_GETMODIFY in the Windows SDK.

Example

   // Reset the modified state only if the text has been modified.
   if (m_myRichEditCtrl.GetModify())
      m_myRichEditCtrl.SetModify(FALSE);

Retrieves the options currently set for the rich edit control.

UINT GetOptions() const;

 

Return Value

A combination of the current option flag values. For a list of these values, see the fOptions parameter in the EM_SETOPTIONS message, as described in the Windows SDK.

Gets the paragraph formatting attributes of the current selection.

DWORD GetParaFormat(PARAFORMAT& pf) const;

 
 
DWORD GetParaFormat(PARAFORMAT2& pf) const;

 

Parameters

pf
In the first version, a pointer to a PARAFORMAT structure to hold the paragraph formatting attributes of the current selection.

In the second version, a pointer to a PARAFORMAT2 structure, which is a Rich Edit 2.0 extension to the PARAFORMAT structure, holding the default character formatting attributes.

Return Value

The dwMask data member of pf. It specifies the paragraph formatting attributes that are consistent throughout the current selection.

Remarks

If more than one paragraph is selected, pf receives the attributes of the first selected paragraph. The return value specifies which attributes are consistent throughout the selection.

For more information, see the EM_GETPARAFORMAT message and the PARAFORMAT and PARAFORMAT2 structures in the Windows SDK.

Example

See the example for CRichEditCtrl::SetParaFormat.

Gets the current punctuation characters in a rich edit control.

BOOL GetPunctuation(
    UINT fType,  
    PUNCTUATION* lpPunc) const;

 

Parameters

fType
The punctuation type flag, as described in the fType parameter of EM_GETPUNCTUATION in the Windows SDK.

lpPunc
A pointer to a PUNCTUATION structure, as described in the Windows SDK.

Return Value

Nonzero if the operation succeeded, otherwise 0.

Remarks

This member function is available with only the Asian-language versions of the operating system.

Retrieves the formatting rectangle for this CRichEditCtrl object.

void GetRect(LPRECT lpRect) const;

 

Parameters

lpRect
CRect or pointer to a RECT to receive the formatting rectangle of this CRichEditCtrl object.

Remarks

The formatting rectangle is the bounding rectangle for the text. This value is independent of the size of the CRichEditCtrl object.

For more information, see EM_GETRECT in the Windows SDK.

Example

See the example for LimitText.

Retrieves the type of the next available action in the redo queue, if any.

UNDONAMEID GetRedoName() const;

 

Return Value

If successful, GetRedoName returns the UNDONAMEID enumeration type indicating the type of the next action in the control's redo queue. If the redo queue is empty, or if the redo action in the queue is of an unknown type, GetRedoName returns 0.

Remarks

The types of actions that can be undone or redone include typing, delete, drag-drop, cut, and paste operations. This information can be useful for applications that provide an extended user interface for Undo and Redo operations, such as a drop-down list box of redoable actions.

Retrieves the bounds of the current selection in this CRichEditCtrl object.

void GetSel(
    CHARRANGE& cr) const;

 
 
void GetSel(
    long& nStartChar,  
    long& nEndChar) const;

 

Parameters

cr
Reference to a CHARRANGE structure to receive the bounds of the current selection.

nStartChar
Zero-based index of the first character in the current selection.

nEndChar
Zero-based index of the last character in the current selection.

Remarks

The two forms of this function provide alternate ways to get the bounds for the selection. Brief descriptions of these forms follow:

  • GetSel( cr ) This form uses the CHARRANGE structure with its cpMin and cpMax members to return the bounds.

  • GetSel( nStartChar , nEndChar ) This form returns the bounds in the parameters nStartChar and nEndChar.

The selection includes everything if the beginning ( cpMin or nStartChar) is 0 and the end ( cpMax or nEndChar) is – 1.

For more information, see EM_EXGETSEL message and CHARRANGE structure in the Windows SDK.

Example

      // Set the selection to be all characters after the current selection.
      long nStartChar, nEndChar;

      m_myRichEditCtrl.GetSel(nStartChar, nEndChar); 
      m_myRichEditCtrl.SetSel(nEndChar, -1);

Gets the character formatting attributes of the current selection.

DWORD GetSelectionCharFormat(CHARFORMAT& cf) const;

 
 
DWORD GetSelectionCharFormat(CHARFORMAT2& cf) const;

 

Parameters

cf
In the first version, a pointer to a CHARFORMAT structure to receive the character formatting attributes of the current selection.

In the second version, a pointer to a CHARFORMAT2 structure, which is a Rich Edit 2.0 extension to the CHARFORMAT structure to receive the character formatting attributes of the current selection.

Return Value

The dwMask data member of cf. It specifies the character formatting attributes that are consistent throughout the current selection.

Remarks

The cf parameter receives the attributes of the first character in the current selection. The return value specifies which attributes are consistent throughout the selection.

For more information, see the EM_GETCHARFORMAT message and the CHARFORMAT and CHARFORMAT2 structures in the Windows SDK.

Example

See the example for SetSelectionCharFormat.

Determines the selection type in this CRichEditCtrl object.

WORD GetSelectionType() const;

 

Return Value

Flags indicating the contents of the current selection. A combination of the following flags:

  • SEL_EMPTY Indicates that there is no current selection.

  • SEL_TEXT Indicates that the current selection contains text.

  • SEL_OBJECT Indicates that the current selection contains at least one OLE item.

  • SEL_MULTICHAR Indicates that the current selection contains more than one character of text.

  • SEL_MULTIOBJECT Indicates that the current selection contains more than one OLE object.

Remarks

For more information, see EM_SELECTIONTYPE in the Windows SDK.

Example

   // Dump the selection text only if it contains at least one text character.
   if (m_myRichEditCtrl.GetSelectionType() & (SEL_TEXT | SEL_MULTICHAR))
   {
      CString strText = m_myRichEditCtrl.GetSelText();

      TRACE(_T("selection text is '%s'.\r\n"), strText);
   }

Retrieves the text from the current selection in this CRichEditCtrl object.

long GetSelText(LPSTR lpBuf) const;

 
 
CString GetSelText() const;

 

Parameters

lpBuf
Pointer to the buffer to receive the text in the current selection.

Return Value

Depends on the form:

  • GetSelText( lpBuf ) The number of characters copied into lpBuf, not including the null termination.

  • GetSelText( ) The string containing the current selection.

Remarks

If you use the first form, GetSelText( lpBuf ), you must ensure that the buffer is large enough for the text it will receive. Call GetSel to determine the number of characters in the current selection.

For more information, see EM_GETSELTEXT in the Windows SDK.

Example

See the example for CRichEditCtrl::GetSelectionType.

Retrieves the length of the text, in characters, in this CRichEditCtrl object, not including the terminating null character.

long GetTextLength() const;

 

Return Value

The length of the text in this CRichEditCtrl object.

Remarks

For more information, see WM_GETTEXTLENGTH in the Windows SDK.

Example

   // Limit the rich edit controls text to the number of 
   // characters currently in it.
   m_myRichEditCtrl.LimitText(m_myRichEditCtrl.GetTextLength());

Calculates the length of the text in the rich edit control.

long GetTextLengthEx(
    DWORD dwFlags,  
    UINT uCodePage = -1) const;

 

Parameters

dwFlags
Value specifying the method to be used in determining the text length. This member can be one or more of the values listed in the flags member of GETTEXTLENGTHEX described in the Windows SDK.

uCodePage
Code page for translation (CP_ACP for ANSI Code Page, 1200 for Unicode).

Return Value

The number of characters or bytes in the edit control. If incompatible flags were set in dwFlags, this member function returns E_INVALIDARG.

Remarks

GetTextLengthEx provides additional ways of determining the length of the text. It supports the Rich Edit 2.0 functionality. See About Rich Edit Controls in the Windows SDKfor more information.

Retrieves the current text mode and undo level of a rich edit control.

UINT GetTextMode() const;

 

Return Value

A set of bit flags from the TEXTMODE enumeration type, as described in the Windows SDK. The flags indicate the current text mode and undo level of the control.

Gets the specified range of characters.

int GetTextRange(
    int nFirst,  
    int nLast,  
    CString& refString) const;

 

Parameters

nFirst
The character position index immediately preceding the first character in the range.

nLast
The character position immediately following the last character in the range.

refString
A reference to a CString object that will receive the text.

Return Value

The number of characters copied, not including the terminating null character.

Remarks

For more information, see EM_GETTEXTRANGE in the Windows SDK.

GetTextRange supports the Rich Edit 2.0 functionality. See About Rich Edit Controls in the Windows SDKfor more information.

Retrieves the type of the next available action in the undo queue, if any.

UNDONAMEID GetUndoName() const;

 

Return Value

If an undo action is in the control's undo queue, GetUndoName returns the UNDONAMEID enumeration type indicating the type of the next action in the queue. If the undo queue is empty, or if the undo action in the queue is of an unknown type, GetUndoName returns 0.

Remarks

The types of actions that can be undone or redone include typing, delete, drag-drop, cut, and paste operations. This information can be useful for applications that provide an extended user interface for Undo and Redo operations, such as a drop-down list box of actions that can be undone.

Retrieves the current word wrapping and word breaking options for the rich edit control.

UINT GetWordWrapMode() const;

 

Return Value

The current word wrapping and word breaking options. These options are described in EM_SETWORDWRAPMODE in the Windows SDK.

Remarks

This member function is available only for Asian-language versions of the operating system.

Changes the visibility of the selection.

void HideSelection(
    BOOL bHide,  
    BOOL bPerm);

Parameters

bHide
Indicates if the selection should be shown or hidden, TRUE to hide the selection.

bPerm
Indicates if this change in visibility for the selection should be permanent.

Remarks

When bPerm is TRUE, it changes the ECO_NOHIDESEL option for this CRichEditCtrl object. For a brief description of this option, see SetOptions. You can use this function to set all the options for this CRichEditCtrl object.

For more information, see EM_HIDESELECTION in the Windows SDK.

Example

   // Show the selection and make it permanent. 
   m_myRichEditCtrl.HideSelection(FALSE, TRUE);

Limits the length of the text that the user can enter into an edit control.

void LimitText(long nChars = 0);

Parameters

nChars
Specifies the length (in bytes) of the text that the user can enter. If this parameter is 0 (the default value), the text length is set to 64K bytes.

Remarks

Changing the text limit restricts only the text the user can enter. It has no effect on any text already in the edit control, nor does it affect the length of the text copied to the edit control by the SetWindowText member function in CWnd. If an application uses the SetWindowText function to place more text into an edit control than is specified in the call to LimitText, the user can delete any of the text within the edit control. However, the text limit will prevent the user from replacing the existing text with new text, unless deleting the current selection causes the text to fall below the text limit.

System_CAPS_ICON_note.jpg Note

For the text limit, each OLE item counts as a single character.

For more information, see EM_EXLIMITTEXT in the Windows SDK.

Example

      // Limit the number of characters to be the maximum number visible.

      // Get the text metrics for the edit; needed for the
      // average character width.
      TEXTMETRIC tm;
      CDC* pDC = m_myRichEditCtrl.GetDC();
      pDC->GetTextMetrics(&tm);
      m_myRichEditCtrl.ReleaseDC(pDC);

      CRect r;
      m_myRichEditCtrl.GetRect(&r);
      m_myRichEditCtrl.LimitText(r.Width()/tm.tmAveCharWidth);

Retrieves the line number of the line that contains the specified character index.

long LineFromChar(long nIndex) const;

 

Parameters

nIndex
Contains the zero-based index value for the desired character in the text of the edit control, or contains –1. If nIndex is –1, it specifies the current line, that is, the line that contains the caret.

Return Value

The zero-based line number of the line containing the character index specified by nIndex. If nIndex is –1, the number of the line that contains the first character of the selection is returned. If there is no selection, the current line number is returned.

Remarks

A character index is the number of characters from the beginning of the rich edit control. For character counting, an OLE item is counted as a single character.

For more information, see EM_EXLINEFROMCHAR in the Windows SDK.

Example

      // The index of the char to get information on.
      int nIndex = 11;

      CString strText;

      m_myRichEditCtrl.GetWindowText(strText);
      strText = strText.Mid(nIndex, 1);

      // Dump the index, character and line number.
      TRACE(_T("nIndex = %d, character = %c, line = %d\r\n"),
         nIndex, strText[0], m_myRichEditCtrl.LineFromChar(nIndex));   

Retrieves the character index of a line within this CRichEditCtrl object.

int LineIndex(int nLine = -1) const;

 

Parameters

nLine
Contains the index value for the desired line in the text of the edit control, or contains –1. If nLine is –1, it specifies the current line, that is, the line that contains the caret.

Return Value

The character index of the line specified in nLine or –1 if the specified line number is greater then the number of lines in the edit control.

Remarks

The character index is the number of characters from the beginning of the rich edit control to the specified line.

For more information, see EM_LINEINDEX in the Windows SDK.

Example

      // The string for replacing.
      LPCTSTR lpszmyString = _T("Hello, I'm the new second line.");

      int nBegin, nEnd, nIndex;

      // Replace the second line, if it exists, of the rich edit control
      // with the text lpszmyString.
      nIndex = m_myRichEditCtrl.LineIndex(1);
      if ((nBegin = nIndex) != -1)
      {
         nEnd = nBegin + m_myRichEditCtrl.LineLength(nIndex); 
         m_myRichEditCtrl.SetSel(nBegin, nEnd);
         m_myRichEditCtrl.ReplaceSel(lpszmyString);
      }   

Retrieves the length of a line in a rich edit control.

int LineLength(int nLine = -1) const;

 

Parameters

nLine
Specifies the character index of a character in the line whose length is to be retrieved. If this parameter is –1, the length of the current line (the line that contains the caret) is returned, not including the length of any selected text within the line. When LineLength is called for a single-line edit control, this parameter is ignored.

Return Value

When LineLength is called for a multiple-line edit control, the return value is the length (in bytes) of the line specified by nLine. When LineLength is called for a single-line edit control, the return value is the length (in bytes) of the text in the edit control.

Remarks

Use the LineIndex member function to retrieve a character index for a given line number within this CRichEditCtrl object.

For more information, see EM_LINELENGTH in the Windows SDK.

Example

See the example for LineIndex.

Scrolls the text of a multiple-line edit control.

void LineScroll(
    int nLines,  
    int nChars = 0);

Parameters

nLines
Specifies the number of lines to scroll vertically.

nChars
Specifies the number of character positions to scroll horizontally. This value is ignored if the rich edit control has either the ES_RIGHT or ES_CENTER style. Edit styles are specified in Create.

Remarks

The edit control does not scroll vertically past the last line of text in the edit control. If the current line plus the number of lines specified by nLines exceeds the total number of lines in the edit control, the value is adjusted so that the last line of the edit control is scrolled to the top of the edit-control window.

LineScroll can be used to scroll horizontally past the last character of any line.

For more information, see EM_LINESCROLL in the Windows SDK.

Example

See the example for GetFirstVisibleLine.

Inserts the data from the Clipboard into the CRichEditCtrl at the insertion point, the location of the caret.

void Paste();

Remarks

Data is inserted only if the Clipboard contains data in a recognized format.

For more information, see WM_PASTE in the Windows SDK.

Example

   // Replace all of the text with the text in the clipboard.
   m_myRichEditCtrl.SetSel(0, -1);
   m_myRichEditCtrl.Paste();

Pastes data in a specific Clipboard format into this CRichEditCtrl object.

void PasteSpecial(
    UINT nClipFormat,  
    DWORD dvAspect = 0,  
    HMETAFILE hMF = 0);

Parameters

nClipFormat
Clipboard format to paste into this CRichEditCtrl object.

dvAspect
Device aspect for the data to be retrieved from the Clipboard.

hMF
Handle to the metafile containing the iconic view of the object to be pasted.

Remarks

The new material is inserted at the insertion point, the location of the caret.

For more information, see EM_PASTESPECIAL in the Windows SDK.

Example

   // Paste the data from the clipboard as text. 
   m_myRichEditCtrl.PasteSpecial(CF_TEXT);

Retrieves the client area coordinates of a specified character in an edit control.

CPoint PosFromChar(UINT nChar) const;

 

Parameters

nChar
The zero-based index of the character.

Return Value

The position of the character, (x, y). For a single-line edit control, the y-coordinate is always zero.

Remarks

For more information, see EM_POSFROMCHAR in the Windows SDK.

Redoes the next action in the control's redo queue.

BOOL Redo();

Return Value

Nonzero if successful; otherwise, 0.

Remarks

For more information, see EM_REDO in the Windows SDK.

Replaces the current selection in this CRichEditCtrl object with the specified text.

void ReplaceSel(
    LPCTSTR lpszNewText,  
    BOOL bCanUndo = FALSE);

Parameters

lpszNewText
Pointer to a null-terminated string containing the replacement text.

bCanUndo
To specify that this function can be undone, set the value of this parameter to TRUE. The default value is FALSE.

Remarks

To replace all the text in this CRichEditCtrl object, use CWnd::SetWindowText.

If there is no current selection, the replacement text is inserted at the insertion point, that is, the current caret location.

This function will format the inserted text with the existing character formatting. When replacing the entire range of text (by calling SetSel(0,-1) before calling ReplaceSel), there is an end of paragraph character that retains the previous paragraph's formatting, which in inherited by the newly inserted text.

For more information, see EM_REPLACESEL in the Windows SDK.

Example

See the example for LineIndex.

Forces this CRichEditCtrl object to send EN_REQUESTRESIZE notification messages to its parent window.

void RequestResize();

Remarks

This function is useful during CWnd::OnSize processing for a bottomless CRichEditCtrl object.

For more information, see the EM_REQUESTRESIZE message and the Bottomless Rich Edit Controls section of About Rich Edit Controls in the Windows SDK.

Sets the rich edit control to automatically detect a URL.

BOOL SetAutoURLDetect(BOOL bEnable = TRUE);

Parameters

bEnable
Specifies whether the control is set to automatically detect a URL. If TRUE, it is enabled. If FALSE, it is disabled.

Return Value

Zero if successful, otherwise nonzero. For example, the message may fail due to insufficient memory.

Remarks

If enabled, the rich edit control will scan the text to determine if it matches a standard URL format. For a list of these URL formats, see EM_AUTOURLDETECT in the Windows SDK.

System_CAPS_ICON_note.jpg Note

Do not set SetAutoURLDetect to TRUE if your edit control uses the CFE_LINK effect for text other than URLs. SetAutoURLDetect enables this effect for URLs and disables it for all other text. See EN_LINK for more information about the CFE_LINK effect.

Sets the background color for this CRichEditCtrl object.

COLORREF SetBackgroundColor(
    BOOL bSysColor,  
    COLORREF cr);

Parameters

bSysColor
Indicates if the background color should be set to the system value. If this value is TRUE, cr is ignored.

cr
The requested background color. Used only if bSysColor is FALSE.

Return Value

The previous background color for this CRichEditCtrl object.

Remarks

The background color can be set to the system value or to a specified COLORREF value.

For more information, see EM_SETBKGNDCOLOR message and COLORREF structure in the Windows SDK.

Example

   // Use red as the background color. 
   m_myRichEditCtrl.SetBackgroundColor(FALSE, RGB(255,0, 0));

Sets the character formatting attributes for new text in this CRichEditCtrl object.

BOOL SetDefaultCharFormat(CHARFORMAT& cf);

 
BOOL SetDefaultCharFormat(CHARFORMAT2& cf);

Parameters

cf
In the first version, a pointer to a CHARFORMAT structure containing the new default character formatting attributes.

In the second version, a pointer to a CHARFORMAT2 structure, which is a Rich Edit 2.0 extension to the CHARFORMAT structure, containing the default character formatting attributes.

Return Value

Nonzero if successful; otherwise, 0.

Remarks

Only the attributes specified by the dwMask member of cf are changed by this function.

For more information, see the EM_SETCHARFORMAT message and the CHARFORMAT and CHARFORMAT2 structures in the Windows SDK.

Example

      CHARFORMAT cf = {0};

      // Modify the default character format so that all new
      // text is striked out and not bold.
      cf.cbSize = sizeof(cf);
      cf.dwMask = CFM_STRIKEOUT|CFM_BOLD;
      cf.dwEffects = CFE_STRIKEOUT;
      m_myRichEditCtrl.SetDefaultCharFormat(cf);

      // Verify the settings are what is expected.
      m_myRichEditCtrl.GetDefaultCharFormat(cf);
      ASSERT((cf.dwMask&(CFM_STRIKEOUT|CFM_BOLD)) == 
         (CFM_STRIKEOUT|CFM_BOLD));
      ASSERT((cf.dwEffects&(CFE_STRIKEOUT|CFE_BOLD)) == CFE_STRIKEOUT);

Sets the event mask for this CRichEditCtrl object.

DWORD SetEventMask(DWORD dwEventMask);

Parameters

dwEventMask
The new event mask for this CRichEditCtrl object.

Return Value

The previous event mask.

Remarks

The event mask specifies which notification messages the CRichEditCtrl object sends to its parent window.

For more information, see EM_SETEVENTMASK in the Windows SDK.

Example

   // Set the event mask so that the parent gets notified when the text
   // of the rich edit control changes. 
   m_myRichEditCtrl.SetEventMask(m_myRichEditCtrl.GetEventMask() |
      ENM_CHANGE);

Sets or clears the modified flag for an edit control.

void SetModify(BOOL bModified = TRUE);

Parameters

bModified
A value of TRUE indicates that the text has been modified, and a value of FALSE indicates it is unmodified. By default, the modified flag is set.

Remarks

The modified flag indicates whether or not the text within the edit control has been modified. It is automatically set whenever the user changes the text. Its value can be retrieved with the GetModify member function.

For more information, see EM_SETMODIFY in the Windows SDK.

Example

See the example for GetModify.

Gives this CRichEditCtrl object an IRichEditOleCallback object to use to access OLE-related resources and information.

BOOL SetOLECallback(IRichEditOleCallback* pCallback);

Parameters

pCallback
Pointer to an IRichEditOleCallback object that this CRichEditCtrl object will use to get OLE-related resources and information.

Return Value

Nonzero if successful; otherwise, 0.

Remarks

This CRichEditCtrl object will call IUnknown::AddRef to increment the usage count for the COM object specified by pCallback.

For more information, see EM_SETOLECALLBACK message and IRichEditOleCallback interface in the Windows SDK.

Sets the options for this CRichEditCtrl object.

void SetOptions(
    WORD wOp,  
    DWORD dwFlags);

Parameters

wOp
Indicates the type of operation. One of the following values:

  • ECOOP_SET Set the options to those specified by dwFlags.

  • ECOOP_OR Combine the current options with those specified by dwFlags.

  • ECOOP_AND Retain only those current options that are also specified by dwFlags.

  • ECOOP_XOR Retain only those current options that are not specified by dwFlags.

dwFlags
Rich edit options. The flag values are listed in the Remarks section.

Remarks

The options can be a combination of the following values:

  • ECO_AUTOWORDSELECTION Automatic word selection on double-click.

  • ECO_AUTOVSCROLL Automatically scrolls text to the right by 10 characters when the user types a character at the end of the line. When the user presses the ENTER key, the control scrolls all text back to position zero.

  • ECO_AUTOHSCROLL Automatically scrolls text up one page when the user presses the ENTER key on the last line.

  • ECO_NOHIDESEL Negates the default behavior for an edit control. The default behavior hides the selection when the control loses the input focus and shows the selection when the control receives the input focus. If you specify ECO_NOHIDESEL, the selected text is inverted, even if the control does not have the focus.

  • ECO_READONLY Prevents the user from typing or editing text in the edit control.

  • ECO_WANTRETURN Specifies that a carriage return be inserted when the user presses the ENTER key while entering text into a multiple-line rich edit control in a dialog box. If you do not specify this style, pressing the ENTER key sends a command to the rich edit control's parent window, which mimics clicking the parent window's default button (for example, the OK button in a dialog box). This style has no effect on a single-line edit control.

  • ECO_SAVESEL Preserves the selection when the control loses the focus. By default, the entire contents of the control are selected when it regains the focus.

  • ECO_VERTICAL Draws text and objects in a vertical direction. Available for Asian languages only.

For more information, see EM_SETOPTIONS in the Windows SDK.

Example

   // Add auto horizontal and vertical scrolling. 
   m_myRichEditCtrl.SetOptions(ECOOP_OR, ECO_AUTOVSCROLL | 
      ECO_AUTOHSCROLL);

Sets the paragraph formatting attributes for the current selection in this CRichEditCtrl object.

BOOL SetParaFormat(PARAFORMAT& pf);

 
BOOL SetParaFormat(PARAFORMAT2& pf);

Parameters

pf
In the first version, a pointer to a PARAFORMAT structure containing the new default paragraph formatting attributes.

In the second version, a pointer to a PARAFORMAT2 structure, which is a Rich Edit 2.0 extension to the PARAFORMAT structure, holding the default character formatting attributes.

Return Value

Nonzero if successful; otherwise, 0.

Remarks

Only the attributes specified by the dwMask member of pf are changed by this function.

For more information, see the EM_SETPARAFORMAT message and the PARAFORMAT and PARAFORMAT2 structures in the Windows SDK.

Example

      PARAFORMAT pf;

      // Modify the paragraph format so that the text is centered. 
      pf.cbSize = sizeof(PARAFORMAT);
      pf.dwMask = PFM_ALIGNMENT;
      pf.wAlignment = PFA_CENTER;
      m_myRichEditCtrl.SetParaFormat(pf);

      // Verify the settings are what is expected.
      m_myRichEditCtrl.GetParaFormat(pf);
      ASSERT(pf.dwMask&PFM_ALIGNMENT);
      ASSERT(pf.wAlignment == PFA_CENTER);

Sets the punctuation in a rich edit control.

BOOL SetPunctuation(
    UINT fType,  
    PUNCTUATION* lpPunc);

Parameters

fType
The punctuation flag. For a list of possible values, see the fType parameter for EM_SETPUNCTUATION in the Windows SDK.

lpPunc
A pointer to a PUNCTUATION structure, as described in the Windows SDK.

Return Value

Nonzero if successful, otherwise 0.

Remarks

This member function is available for only Asian-language versions of the operating system.

Changes the ECO_READONLY option for this CRichEditCtrl object.

BOOL SetReadOnly(BOOL bReadOnly = TRUE);

Parameters

bReadOnly
Indicates if this CRichEditCtrl object should be read only.

Return Value

Nonzero if successful; otherwise, 0.

Remarks

For a brief description of this option, see SetOptions. You can use this function to set all the options for this CRichEditCtrl object.

For more information, see EM_SETREADONLY in the Windows SDK.

Example

   // Set the rich edit control to be read-only.
   m_myRichEditCtrl.SetReadOnly(TRUE);
   ASSERT(m_myRichEditCtrl.GetStyle() & ES_READONLY);

Sets the formatting rectangle for this CRichEditCtrl object.

void SetRect(LPCRECT lpRect);

Parameters

lpRect
CRect or pointer to a RECT that indicates the new bounds for the formatting rectangle.

Remarks

The formatting rectangle is the limiting rectangle for the text. The limiting rectangle is independent of the size of the rich edit control window. When this CRichEditCtrl object is first created, the formatting rectangle is the same size as the client area of the window. Use SetRect to make the formatting rectangle larger or smaller than the rich edit window.

For more information, see EM_SETRECT in the Windows SDK.

Example

      CRect r;

      m_myRichEditCtrl.GetRect(&r);

      // Reduce the formatting rect of the rich edit control by
      // 10 pixels on each side.
      if ((r.Width() > 20) && (r.Height() > 20))
      {
         r.DeflateRect(0, 20);
         m_myRichEditCtrl.SetRect(&r);
      }

Sets the selection within this CRichEditCtrl object.

void SetSel(
    long nStartChar,  
    long nEndChar);

 
void SetSel(
    CHARRANGE& cr);

Parameters

nStartChar
Zero-based index of the first character for the selection.

nEndChar
Zero-based index of the last character for the selection.

cr
CHARRANGE structure which holds the bounds of the current selection.

Remarks

The two forms of this function provide alternate ways to set the bounds for the selection. Brief descriptions of these forms follow:

  • SetSel( cr ) This form uses the CHARRANGE structure with its cpMin and cpMax members to set the bounds.

  • SetSel( nStartChar , nEndChar ) This form use the parameters nStartChar and nEndChar to set the bounds.

The caret is placed at the end of the selection indicated by the greater of the start ( cpMin or nStartChar) and end ( cpMax or nEndChar) indices. This function scrolls the contents of the CRichEditCtrl so that the caret is visible.

To select all the text in this CRichEditCtrl object, call SetSel with a start index of 0 and an end index of – 1.

For more information, see EM_EXSETSEL message and CHARRANGE structure in the Windows SDK.

Example

See the example for GetSel.

Sets the character formatting attributes for the text in the current selection in this CRichEditCtrl object.

BOOL SetSelectionCharFormat(CHARFORMAT& cf);

 
BOOL SetSelectionCharFormat(CHARFORMAT2& cf);

Parameters

cf
In the first version, a pointer to a CHARFORMAT structure containing the new character formatting attributes for the current selection.

In the second version, a pointer to a CHARFORMAT2 structure, which is a Rich Edit 2.0 extension to the CHARFORMAT structure, containing the new character formatting attributes for the current selection.

Return Value

Nonzero if successful; otherwise, 0.

Remarks

Only the attributes specified by the dwMask member of cf are changed by this function.

For more information, see the EM_SETCHARFORMAT and the CHARFORMAT and CHARFORMAT2 structures in the Windows SDK.

Example

      CHARFORMAT cf;

      // Modify the selection format so that the selected text is 
      // displayed in bold and not striked out.
      cf.cbSize = sizeof(cf);
      cf.dwMask = CFM_STRIKEOUT|CFM_BOLD;
      cf.dwEffects = CFE_BOLD;
      m_myRichEditCtrl.SetSelectionCharFormat(cf);

      // Verify the settings are what is expected.
      m_myRichEditCtrl.GetSelectionCharFormat(cf);
      ASSERT((cf.dwMask&(CFM_STRIKEOUT|CFM_BOLD)) == 
         (CFM_STRIKEOUT|CFM_BOLD));
      ASSERT((cf.dwEffects&(CFE_STRIKEOUT|CFE_BOLD)) == CFE_BOLD);

Sets the target device and line width used for WYSIWYG (what you see is what you get) formatting in this CRichEditCtrl object.

BOOL SetTargetDevice(
    HDC hDC,  
    long lLineWidth);

 
BOOL SetTargetDevice(
    CDC& dc,  
    long lLineWidth);

Parameters

hDC
Handle to the device context for the new target device.

lLineWidth
Line width to use for formatting.

dc
CDC for the new target device.

Return Value

Nonzero if successful; otherwise, 0.

Remarks

If this function is successful, the rich edit control owns the device context passed as a parameter. In that case, the calling function should not destroy the device context.

For more information, see EM_SETTARGETDEVICE in the Windows SDK.

Example

      // First obtain a pointer to a printer DC.
      CPageSetupDialog psDlg;
      if (IDOK == psDlg.DoModal())
      {
         CDC* pMyPrinterDC = CDC::FromHandle(psDlg.CreatePrinterDC());

         // Get line width information from the printer.
         long lLineWidth = ::MulDiv(pMyPrinterDC->GetDeviceCaps(PHYSICALWIDTH),
             1440, pMyPrinterDC->GetDeviceCaps(LOGPIXELSX));

         // Set the printer as the target device.
         m_myRichEditCtrl.SetTargetDevice(*pMyPrinterDC, lLineWidth);   

         pMyPrinterDC->DeleteDC();
      }

Sets the text mode or undo and redo level for a rich edit control.

BOOL SetTextMode(UINT fMode);

Parameters

fMode
Specifies the new settings for the control's text mode and undo level parameters. For a list of the possible values, see the mode parameter for EM_SETTEXTMODE in the Windows SDK.

Return Value

Zero if successful, otherwise nonzero.

Remarks

For a description of the text modes, see EM_SETTEXTMODE in the Windows SDK.

This member function fails if the control contains text. To make sure the control is empty, send a WM_SETTEXT message with an empty string.

Sets the maximum number of actions that can stored in the undo queue.

UINT SetUndoLimit(UINT nLimit);

Parameters

nLimit
Specifies the maximum number of actions that can be stored in the undo queue. Set to zero to disable Undo.

Return Value

The new maximum number of undo actions for the rich edit control.

Remarks

By default, the maximum number of actions in the undo queue is 100. If you increase this number, there must be enough available memory to accommodate the new number. For better performance, set the limit to the smallest possible value.

Sets the character formatting attributes for the currently selected word in this CRichEditCtrl object.

BOOL SetWordCharFormat(CHARFORMAT& cf);

 
BOOL SetWordCharFormat(CHARFORMAT2& cf);

Parameters

cf
In the first version, a pointer to a CHARFORMAT structure containing the new character formatting attributes for the currently selected word.

In the second version, a pointer to a CHARFORMAT2 structure, which is a Rich Edit 2.0 extension to the CHARFORMAT structure, containing the new character formatting attributes for the currently selected word.

Return Value

Nonzero if successful; otherwise, 0.

Remarks

Only the attributes specified by the dwMask member of cf are changed by this function.

For more information, see the EM_SETCHARFORMAT message and the CHARFORMAT and CHARFORMAT2 structures in the Windows SDK.

Example

      CHARFORMAT cf;

      // Modify the word format so that the selected word is 
      // displayed in bold and not striked out.
      cf.cbSize = sizeof(cf);
      cf.dwMask = CFM_STRIKEOUT|CFM_BOLD;
      cf.dwEffects = CFE_BOLD;
      m_myRichEditCtrl.SetWordCharFormat(cf);

Sets the word-wrapping and word-breaking options for the rich edit control.

UINT SetWordWrapMode(UINT uFlags) const;

 

Parameters

uFlags
The options to set for word wrapping and word breaking. For a list of possible options, see EM_SETWORDWRAPMODE in the Windows SDK.

Return Value

The current word-wrapping and word-breaking options.

Remarks

This message is available only in Asian-language versions of the operating system.

Stops the control from collecting additional typing actions into the current undo action.

void StopGroupTyping();

Remarks

The control stores the next typing action, if any, into a new action in the undo queue.

For more information, see EM_STOPGROUPTYPING in the Windows SDK.

Replaces text in this CRichEditCtrl object with text from the specified input stream.

long StreamIn(
    int nFormat,  
    EDITSTREAM& es);

Parameters

nFormat
Flags specifying the input data formats. See the Remarks section for more information.

es
EDITSTREAM structure specifying the input stream. See the Remarks section for more information.

Return Value

Number of characters read from the input stream.

Remarks

The value of nFormat must be one of the following:

  • SF_TEXT Indicates reading text only.

  • SF_RTF Indicates reading text and formatting.

Either of these values can be combined with SFF_SELECTION. If SFF_SELECTION is specified, StreamIn replaces the current selection with the contents of the input stream. If it is not specified, StreamIn replaces the entire contents of this CRichEditCtrl object.

In the EDITSTREAM parameter es, you specify a callback function that fills a buffer with text. This callback function is called repeatedly, until the input stream is exhausted.

For more information, see EM_STREAMIN message and EDITSTREAM structure in the Windows SDK.

Example

// My callback procedure that reads the rich edit control contents
// from a file.
static DWORD CALLBACK 
MyStreamInCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{
   CFile* pFile = (CFile*) dwCookie;

   *pcb = pFile->Read(pbBuff, cb);

   return 0;
}

      // The example code.

      // The file from which to load the contents of the rich edit control.
      CFile cFile(TEXT("My_RichEdit_InFile.rtf"), CFile::modeRead);
      EDITSTREAM es;

      es.dwCookie = (DWORD) &cFile;
      es.pfnCallback = MyStreamInCallback; 
      m_myRichEditCtrl.StreamIn(SF_RTF, es);

Writes out the contents of this CRichEditCtrl object to the specified output stream.

long StreamOut(
    int nFormat,  
    EDITSTREAM& es);

Parameters

nFormat
Flags specifying the output data formats. See the Remarks section for more information.

es
EDITSTREAM structure specifying the output stream. See the Remarks section for more information.

Return Value

Number of characters written to the output stream.

Remarks

The value of nFormat must be one of the following:

  • SF_TEXT Indicates writing text only.

  • SF_RTF Indicates writing text and formatting.

  • SF_RTFNOOBJS Indicates writing text and formatting, replacing OLE items with spaces.

  • SF_TEXTIZED Indicates writing text and formatting, with textual representations of OLE items.

Any of these values can be combined with SFF_SELECTION. If SFF_SELECTION is specified, StreamOut writes out the current selection into the output stream. If it is not specified, StreamOut writes out the entire contents of this CRichEditCtrl object.

In the EDITSTREAM parameter es, you specify a callback function which fills a buffer with text. This callback function is called repeatedly, until the output stream is exhausted.

For more information, see EM_STREAMOUT message and EDITSTREAM structure in the Windows SDK.

Example

// My callback procedure that writes the rich edit control contents
// to a file.
static DWORD CALLBACK 
MyStreamOutCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{
   CFile* pFile = (CFile*) dwCookie;

   pFile->Write(pbBuff, cb);
   *pcb = cb;

   return 0;
}

      // The example code.

      // The file to store the contents of the rich edit control.
      CFile cFile(TEXT("My_RichEdit_OutFile.rtf"), 
         CFile::modeCreate|CFile::modeWrite);
      EDITSTREAM es;

      es.dwCookie = (DWORD) &cFile;
      es.pfnCallback = MyStreamOutCallback; 
      m_myRichEditCtrl.StreamOut(SF_RTF, es);

Undoes the last operation in the rich edit control.

BOOL Undo();

Return Value

Nonzero if the undo operation is successful; otherwise, 0.

Remarks

An undo operation can also be undone. For example, you can restore deleted text with the first call to Undo. As long as there is no intervening edit operation, you can remove the text again with a second call to Undo.

For more information, see EM_UNDO in the Windows SDK.

Example

See the example for CanUndo.

MFC Sample WORDPAD
CWnd Class
Hierarchy Chart
CEdit Class
CRichEditView Class

Show: