CRichEditCtrl
Class
Provides the functionality of the rich edit control.
Syntax
class CRichEditCtrl : public CWnd
Members
Public Constructors
Name | Description |
---|---|
CRichEditCtrl::CRichEditCtrl |
Constructs a CRichEditCtrl object. |
Public Methods
Name | Description |
---|---|
CRichEditCtrl::CanPaste |
Determines if the contents of the Clipboard can be pasted into this rich edit control. |
CRichEditCtrl::CanRedo |
Determines whether there are any actions in the control's redo queue. |
CRichEditCtrl::CanUndo |
Determines if an editing operation can be undone. |
CRichEditCtrl::CharFromPos |
Retrieves information about the character closest to a specified point in the client area of an edit control. |
CRichEditCtrl::Clear |
Clears the current selection. |
CRichEditCtrl::Copy |
Copies the current selection to the Clipboard. |
CRichEditCtrl::Create |
Creates the Windows rich edit control and associates it with this CRichEditCtrl object. |
CRichEditCtrl::CreateEx |
Creates the Windows rich edit control with the specified extended Windows styles and associates it with this CRichEditCtrl object. |
CRichEditCtrl::Cut |
Cuts the current selection to the Clipboard. |
CRichEditCtrl::DisplayBand |
Displays a portion of the contents of this CRichEditCtrl object. |
CRichEditCtrl::EmptyUndoBuffer |
Resets (clears) the undo flag of this CRichEditCtrl object. |
CRichEditCtrl::FindText |
Locates text within this CRichEditCtrl object. |
CRichEditCtrl::FindWordBreak |
Finds the next word break before or after the specified character position, or retrieves information about the character at that position. |
CRichEditCtrl::FormatRange |
Formats a range of text for the target output device. |
CRichEditCtrl::GetCharPos |
Determines the location of a given character within this CRichEditCtrl object. |
CRichEditCtrl::GetDefaultCharFormat |
Retrieves the current default character formatting attributes in this CRichEditCtrl object. |
CRichEditCtrl::GetEventMask |
Retrieves the event mask for this CRichEditCtrl object. |
CRichEditCtrl::GetFirstVisibleLine |
Determines the topmost visible line in this CRichEditCtrl object. |
CRichEditCtrl::GetIRichEditOle |
Retrieves a pointer to the IRichEditOle interface for this rich edit control. |
CRichEditCtrl::GetLimitText |
Gets the limit on the amount of text a user can enter into this CRichEditCtrl object. |
CRichEditCtrl::GetLine |
Retrieves a line of text from this CRichEditCtrl object. |
CRichEditCtrl::GetLineCount |
Retrieves the number of lines in this CRichEditCtrl object. |
CRichEditCtrl::GetModify |
Determines if the contents of this CRichEditCtrl object have changed since the last save. |
CRichEditCtrl::GetOptions |
Retrieves the rich edit control options. |
CRichEditCtrl::GetParaFormat |
Retrieves the paragraph formatting attributes in the current selection in this CRichEditCtrl object. |
CRichEditCtrl::GetPunctuation |
Retrieves the current punctuation characters for the rich edit control. This message is available only in Asian-language versions of the operating system. |
CRichEditCtrl::GetRect |
Retrieves the formatting rectangle for this CRichEditCtrl object. |
CRichEditCtrl::GetRedoName |
Retrieves the type of the next action, if any, in the control's redo queue. |
CRichEditCtrl::GetSel |
Gets the starting and ending positions of the current selection in this CRichEditCtrl object. |
CRichEditCtrl::GetSelectionCharFormat |
Retrieves the character formatting attributes in the current selection in this CRichEditCtrl object. |
CRichEditCtrl::GetSelectionType |
Retrieves the type of contents in the current selection in this CRichEditCtrl object. |
CRichEditCtrl::GetSelText |
Gets the text of the current selection in this CRichEditCtrl object |
CRichEditCtrl::GetTextLength |
Retrieves the length of the text, in characters, in this CRichEditCtrl object. Does not include the terminating null character. |
CRichEditCtrl::GetTextLengthEx |
Retrieves 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::GetTextMode |
Retrieves the current text mode and undo level of a rich edit control. |
CRichEditCtrl::GetTextRange |
Retrieves the specified range of text. |
CRichEditCtrl::GetUndoName |
Retrieves the type of the next undo action, if any. |
CRichEditCtrl::GetWordWrapMode |
Retrieves 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::HideSelection |
Shows or hides the current selection. |
CRichEditCtrl::LimitText |
Limits the amount of text a user can enter into the CRichEditCtrl object. |
CRichEditCtrl::LineFromChar |
Determines which line contains the given character. |
CRichEditCtrl::LineIndex |
Retrieves the character index of a given line in this CRichEditCtrl object. |
CRichEditCtrl::LineLength |
Retrieves the length of a given line in this CRichEditCtrl object. |
CRichEditCtrl::LineScroll |
Scrolls the text in this CRichEditCtrl object. |
CRichEditCtrl::Paste |
Inserts the contents of the Clipboard into this rich edit control. |
CRichEditCtrl::PasteSpecial |
Inserts the contents of the Clipboard into this rich edit control in the specified data format. |
CRichEditCtrl::PosFromChar |
Retrieves the client area coordinates of a specified character in an edit control. |
CRichEditCtrl::Redo |
Redoes the next action in the control's redo queue. |
CRichEditCtrl::ReplaceSel |
Replaces the current selection in this CRichEditCtrl object with specified text. |
CRichEditCtrl::RequestResize |
Forces this CRichEditCtrl object to send request resize notifications. |
CRichEditCtrl::SetAutoURLDetect |
Indicates if the auto URL detection is active in a rich edit control. |
CRichEditCtrl::SetBackgroundColor |
Sets the background color in this CRichEditCtrl object. |
CRichEditCtrl::SetDefaultCharFormat |
Sets the current default character formatting attributes in this CRichEditCtrl object. |
CRichEditCtrl::SetEventMask |
Sets the event mask for this CRichEditCtrl object. |
CRichEditCtrl::SetModify |
Sets or clears the modification flag for this CRichEditCtrl object. |
CRichEditCtrl::SetOLECallback |
Sets the IRichEditOleCallback COM object for this rich edit control. |
CRichEditCtrl::SetOptions |
Sets the options for this CRichEditCtrl object. |
CRichEditCtrl::SetParaFormat |
Sets the paragraph formatting attributes in the current selection in this CRichEditCtrl object. |
CRichEditCtrl::SetPunctuation |
Sets the punctuation characters for a rich edit control. This message is available only in Asian-language versions of the operating system. |
CRichEditCtrl::SetReadOnly |
Sets the read-only option for this CRichEditCtrl object. |
CRichEditCtrl::SetRect |
Sets the formatting rectangle for this CRichEditCtrl object. |
CRichEditCtrl::SetSel |
Sets the selection in this CRichEditCtrl object. |
CRichEditCtrl::SetSelectionCharFormat |
Sets the character formatting attributes in the current selection in this CRichEditCtrl object. |
CRichEditCtrl::SetTargetDevice |
Sets the target output device for this CRichEditCtrl object. |
CRichEditCtrl::SetTextMode |
Sets the text mode or undo level of a rich edit control. The message fails if the control contains text. |
CRichEditCtrl::SetUndoLimit |
Sets the maximum number of actions that can stored in the undo queue. |
CRichEditCtrl::SetWordCharFormat |
Sets the character formatting attributes in the current word in this CRichEditCtrl object. |
CRichEditCtrl::SetWordWrapMode |
Sets 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::StopGroupTyping |
Stops 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::StreamIn |
Inserts text from an input stream into this CRichEditCtrl object. |
CRichEditCtrl::StreamOut |
Stores text from this CRichEditCtrl object into an output stream. |
CRichEditCtrl::Undo |
Reverses the last editing operation. |
Remarks
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.
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
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:
For an example of using a rich edit control in an MFC application, see the WORDPAD sample application.
Inheritance Hierarchy
CRichEditCtrl
Requirements
Header: afxcmn.h
CRichEditCtrl::CanPaste
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();
}
CRichEditCtrl::CanRedo
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.
CRichEditCtrl::CanUndo
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();
CRichEditCtrl::CharFromPos
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.
CRichEditCtrl::Clear
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();
CRichEditCtrl::Copy
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();
CRichEditCtrl::Create
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 library, call the global function 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);
CRichEditCtrl::CreateEx
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_
.
CRichEditCtrl::CRichEditCtrl
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;
CRichEditCtrl::Cut
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();
CRichEditCtrl::DisplayBand
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
.
CRichEditCtrl::EmptyUndoBuffer
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());
}
CRichEditCtrl::FindText
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);
CRichEditCtrl::FindWordBreak
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.
CRichEditCtrl::FormatRange
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();
}
CRichEditCtrl::GetCharPos
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.
CRichEditCtrl::GetDefaultCharFormat
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
.
CRichEditCtrl::GetEventMask
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
.
CRichEditCtrl::GetFirstVisibleLine
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);
}
CRichEditCtrl::GetIRichEditOle
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.
CRichEditCtrl::GetLimitText
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);
CRichEditCtrl::GetLine
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.
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
.
CRichEditCtrl::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);
}
CRichEditCtrl::GetModify
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);
CRichEditCtrl::GetOptions
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.
CRichEditCtrl::GetParaFormat
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
.
CRichEditCtrl::GetPunctuation
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.
CRichEditCtrl::GetRect
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
.
CRichEditCtrl::GetRedoName
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.
CRichEditCtrl::GetSel
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 theCHARRANGE
structure with itscpMin
andcpMax
members to return the bounds.GetSel(
nStartChar
,nEndChar
) This form returns the bounds in the parametersnStartChar
andnEndChar
.
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);
CRichEditCtrl::GetSelectionCharFormat
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
.
CRichEditCtrl::GetSelectionType
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);
}
CRichEditCtrl::GetSelText
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 intolpBuf
, 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
.
CRichEditCtrl::GetTextLength
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());
CRichEditCtrl::GetTextLengthEx
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.
CRichEditCtrl::GetTextMode
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.
CRichEditCtrl::GetTextRange
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.
CRichEditCtrl::GetUndoName
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.
CRichEditCtrl::GetWordWrapMode
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.
CRichEditCtrl::HideSelection
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);
CRichEditCtrl::LimitText
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.
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);
CRichEditCtrl::LineFromChar
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));
CRichEditCtrl::LineIndex
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 than 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);
}
CRichEditCtrl::LineLength
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 TCHAR
) of the line specified by nLine
. It does not include the carriage-return character at the end of the line. When LineLength
is called for a single-line edit control, the return value is the length (in TCHAR
) of the text in the edit control. If nLine
is greater than the number of characters in the control, the return value is zero.
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
.
CRichEditCtrl::LineScroll
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
.
CRichEditCtrl::Paste
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();
CRichEditCtrl::PasteSpecial
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);
CRichEditCtrl::PosFromChar
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.
CRichEditCtrl::Redo
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.
CRichEditCtrl::ReplaceSel
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
.
CRichEditCtrl::RequestResize
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.
CRichEditCtrl::SetAutoURLDetect
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.
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.
CRichEditCtrl::SetBackgroundColor
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));
CRichEditCtrl::SetDefaultCharFormat
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);
CRichEditCtrl::SetEventMask
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);
CRichEditCtrl::SetModify
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
.
CRichEditCtrl::SetOLECallback
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.
CRichEditCtrl::SetOptions
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 bydwFlags
.ECOOP_OR
Combine the current options with those specified bydwFlags
.ECOOP_AND
Retain only those current options that are also specified bydwFlags
.ECOOP_XOR
Logically exclusive OR the current options with those specified bydwFlags
.
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 specifyECO_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);
CRichEditCtrl::SetParaFormat
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);
CRichEditCtrl::SetPunctuation
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.
CRichEditCtrl::SetReadOnly
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);
CRichEditCtrl::SetRect
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);
}
CRichEditCtrl::SetSel
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 theCHARRANGE
structure with itscpMin
andcpMax
members to set the bounds.SetSel(
nStartChar
,nEndChar
) This form use the parametersnStartChar
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
.
CRichEditCtrl::SetSelectionCharFormat
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);
CRichEditCtrl::SetTargetDevice
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();
}
CRichEditCtrl::SetTextMode
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.
CRichEditCtrl::SetUndoLimit
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.
CRichEditCtrl::SetWordCharFormat
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);
CRichEditCtrl::SetWordWrapMode
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.
CRichEditCtrl::StopGroupTyping
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.
CRichEditCtrl::StreamIn
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);
CRichEditCtrl::StreamOut
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);
CRichEditCtrl::Undo
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
.
See also
MFC Sample WORDPAD
CWnd
Class
Hierarchy Chart
CEdit
Class
CRichEditView
Class