CRichEditCtrl

提供 Rich Edit 控件功能。

语法

class CRichEditCtrl : public CWnd

成员

公共构造函数

名称 描述
CRichEditCtrl::CRichEditCtrl 构造 CRichEditCtrl 对象。

公共方法

名称 描述
CRichEditCtrl::CanPaste 确定是否可以将剪贴板的内容粘贴到此 Rich Edit 控件中。
CRichEditCtrl::CanRedo 确定控件恢复队列中是否包含任何操作。
CRichEditCtrl::CanUndo 确定是否可以撤消编辑操作。
CRichEditCtrl::CharFromPos 检索有关编辑控件的工作区中最接近指定点的字符的信息。
CRichEditCtrl::Clear 清除当前的选择。
CRichEditCtrl::Copy 将当前选定内容复制到剪贴板。
CRichEditCtrl::Create 创建 Windows Rich Edit 控件并将其与此 CRichEditCtrl 对象相关联。
CRichEditCtrl::CreateEx 使用指定的扩展 Windows 样式创建 Windows Rich Edit控件,并将其与此 CRichEditCtrl 对象相关联。
CRichEditCtrl::Cut 将当前选定内容剪切到剪贴板。
CRichEditCtrl::DisplayBand 显示此 CRichEditCtrl 对象的一部分内容。
CRichEditCtrl::EmptyUndoBuffer 重置(清除)此 CRichEditCtrl 对象的撤消标志。
CRichEditCtrl::FindText 定位此 CRichEditCtrl 对象中的文本。
CRichEditCtrl::FindWordBreak 查找指定字符位置之前或之后的下一个换行符,或检索有关该位置字符的信息。
CRichEditCtrl::FormatRange 格式化目标输出设备的文本范围。
CRichEditCtrl::GetCharPos 确定给定字符在此 CRichEditCtrl 对象中的位置。
CRichEditCtrl::GetDefaultCharFormat 检索此 CRichEditCtrl 对象中的当前默认字符格式设置属性。
CRichEditCtrl::GetEventMask 检索此 CRichEditCtrl 对象的事件掩码。
CRichEditCtrl::GetFirstVisibleLine 确定此 CRichEditCtrl 对象中最顶部可见的行。
CRichEditCtrl::GetIRichEditOle 检索指向此 Rich Edit 控件的 IRichEditOle 接口的指针。
CRichEditCtrl::GetLimitText 获取用户可以输入到此 CRichEditCtrl 对象的文本数量的限制。
CRichEditCtrl::GetLine 从此 CRichEditCtrl 对象检索文本行。
CRichEditCtrl::GetLineCount 检索此 CRichEditCtrl 对象中的行数。
CRichEditCtrl::GetModify 确定自上次保存以来此 CRichEditCtrl 对象的内容是否已更改。
CRichEditCtrl::GetOptions 检索 Rich Edit 控件选项。
CRichEditCtrl::GetParaFormat 检索此 CRichEditCtrl 对象中当前选定内容中的段落格式设置属性。
CRichEditCtrl::GetPunctuation 检索 Rich Edit 控件的当前标点符号字符。 此消息仅适用于操作系统的亚洲语言版本。
CRichEditCtrl::GetRect 检索此 CRichEditCtrl 对象的格式设置矩形。
CRichEditCtrl::GetRedoName 检索控件恢复队列中下一个操作的类型(如果有)。
CRichEditCtrl::GetSel 获取当前选定内容在此 CRichEditCtrl 对象中的起始和结束位置。
CRichEditCtrl::GetSelectionCharFormat 检索此 CRichEditCtrl 对象中当前选定内容中的字符格式设置属性。
CRichEditCtrl::GetSelectionType 检索此 CRichEditCtrl 对象中当前选定内容中的内容类型。
CRichEditCtrl::GetSelText 获取此 CRichEditCtrl 对象中当前选定内容的文本
CRichEditCtrl::GetTextLength 检索此 CRichEditCtrl 对象中文本的长度(以字符为单位)。 不包括终止 null 字符。
CRichEditCtrl::GetTextLengthEx 检索 Rich Edit 视图中的字符数或字节数。 接受标志列表以指示在 Rich Edit 控件中确定文本长度的方法
CRichEditCtrl::GetTextMode 检索 Rich Edit 控件的当前文本模式和撤消级别。
CRichEditCtrl::GetTextRange 检索指定范围内的文本。
CRichEditCtrl::GetUndoName 检索下一个撤消操作的类型(如果有)。
CRichEditCtrl::GetWordWrapMode 检索 Rich Edit 控件的当前换行和断字选项。 此消息仅适用于操作系统的亚洲语言版本。
CRichEditCtrl::HideSelection 显示或隐藏当前选定内容。
CRichEditCtrl::LimitText 限制用户可以输入 CRichEditCtrl 对象的文本量。
CRichEditCtrl::LineFromChar 确定哪一行包含给定字符。
CRichEditCtrl::LineIndex 检索此 CRichEditCtrl 对象中给定行的字符索引。
CRichEditCtrl::LineLength 检索此 CRichEditCtrl 对象中给定行的长度。
CRichEditCtrl::LineScroll 滚动此 CRichEditCtrl 对象中的文本。
CRichEditCtrl::Paste 将剪贴板的内容插入 Rich Edit 控件。
CRichEditCtrl::PasteSpecial 以指定的数据格式将剪贴板的内容插入到此 Rich Edit 控件中。
CRichEditCtrl::PosFromChar 检索编辑控件中指定字符的工作区坐标。
CRichEditCtrl::Redo 恢复控件的恢复队列中的下一个操作。
CRichEditCtrl::ReplaceSel 将此 CRichEditCtrl 对象中的当前选定内容替换为指定的文本。
CRichEditCtrl::RequestResize 强制此 CRichEditCtrl 对象发送请求重设大小通知。
CRichEditCtrl::SetAutoURLDetect 指示自动 URL 检测在 Rich Edit 控件中是否处于活动状态。
CRichEditCtrl::SetBackgroundColor 设置此 CRichEditCtrl 对象中的背景色。
CRichEditCtrl::SetDefaultCharFormat 设置此 CRichEditCtrl 对象中的当前默认字符格式设置属性。
CRichEditCtrl::SetEventMask 设置此 CRichEditCtrl 对象的事件掩码。
CRichEditCtrl::SetModify 设置或清除此 CRichEditCtrl 对象的修改标志。
CRichEditCtrl::SetOLECallback 设置此 Rich Edit 控件的 IRichEditOleCallback COM 对象。
CRichEditCtrl::SetOptions 设置此 CRichEditCtrl 对象的选项。
CRichEditCtrl::SetParaFormat 设置此 CRichEditCtrl 对象中当前选定内容中的段落格式设置属性。
CRichEditCtrl::SetPunctuation 设置 Rich Edit 控件的标点符号。 此消息仅适用于操作系统的亚洲语言版本。
CRichEditCtrl::SetReadOnly 设置此 CRichEditCtrl 对象的只读选项。
CRichEditCtrl::SetRect 设置此 CRichEditCtrl 对象的格式设置矩形。
CRichEditCtrl::SetSel 设置此 CRichEditCtrl 对象中的选项。
CRichEditCtrl::SetSelectionCharFormat 设置此 CRichEditCtrl 对象中当前选定内容中的字符格式设置属性。
CRichEditCtrl::SetTargetDevice 设置此 CRichEditCtrl 对象的目标输出设备。
CRichEditCtrl::SetTextMode 设置 Rich Edit 控件的文本模式或撤消级别。 如果控件包含文本,消息将失败。
CRichEditCtrl::SetUndoLimit 设置可存储在撤消队列中的操作的最大操作数。
CRichEditCtrl::SetWordCharFormat 设置此 CRichEditCtrl 对象中当前单词中的字符格式设置属性。
CRichEditCtrl::SetWordWrapMode 设置 Rich Edit 控件的换行和断字选项。 此消息仅适用于操作系统的亚洲语言版本。
CRichEditCtrl::StopGroupTyping 阻止控件将其他键入操作收集到当前撤消操作中。 控件将下一个键入操作(如果有)存储到撤消队列中的新操作中。
CRichEditCtrl::StreamIn 将输入流中的文本插入到此 CRichEditCtrl 对象中。
CRichEditCtrl::StreamOut 将此 CRichEditCtrl 对象中的文本存储到输出流中。
CRichEditCtrl::Undo 反转上次编辑操作。

备注

Rich Edit 控件是用户可以在其中输入和编辑文本的窗口。 可以为文本分配字符和段落格式,并且可以包含嵌入的 OLE 对象。 Rich Edit 控件提供一个编程接口来设置文本格式。 但是,应用程序必须实现使用户可进行格式设置操作所需的任何用户界面组件。

此 Windows 通用控件(因此决定 CRichEditCtrl 类)仅适用于在 Windows 95/98 和 Windows NT 版本 3.51 及更高版本下运行的程序。 该 CRichEditCtrl 类支持 Windows SDK Rich Edit 控件版本 2.0 和 3.0。

注意

如果在对话框中使用 Rich Edit 控件(无论应用程序是 SDI、MDI 还是基于对话框),必须先调用一次 AfxInitRichEdit,然后才能显示对话框。 调用此函数的一个典型位置位于程序的 InitInstance 成员函数中。 您无需在每次显示对话框时调用它,仅第一次需要。 如果您使用 AfxInitRichEdit,则不必调用 CRichEditView

有关使用 CRichEditCtrl 的详细信息,请参阅:

有关在 MFC 应用程序中使用 Rich Edit 控件的示例,请参阅 WORDPAD 示例应用程序。

继承层次结构

CObject

CCmdTarget

CWnd

CRichEditCtrl

要求

标头afxcmn.h

CRichEditCtrl::CanPaste

确定 Rich Edit 控件是否可以粘贴指定的剪贴板格式。

BOOL CanPaste(UINT nFormat = 0) const;

参数

nFormat
要查询的剪贴板数据格式。 此参数可以是预定义剪贴板格式之一,也可以是 RegisterClipboardFormat 返回的值。

返回值

如果可以粘贴剪贴板格式,则为非零值;否则为 0。

备注

如果 nFormat 为 0,CanPaste 将尝试剪贴板上当前的任何格式。

有关详细信息,请参阅 Windows SDK 中的 EM_CANPASTE 消息和 RegisterClipboardFormat 函数。

示例

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

CRichEditCtrl::CanRedo

确定恢复队列是否包含任何操作。

BOOL CanRedo() const;

返回值

如果恢复队列包含操作,则为非零值,否则为 0。

注解

若要发现恢复队列中操作的名称,请调用 CRichEditCtrl::GetRedoName。 若要恢复最近的撤消操作,请调用 Redo

有关详细信息,请参阅 Windows SDK 中的 EM_CANREDO

CRichEditCtrl::CanUndo

确定是否可以撤消上一个编辑操作。

BOOL CanUndo() const;

返回值

如果上次编辑操作可通过调用 Undo 成员函数进行撤消,则为非零值;如果无法撤消,则为 0。

注解

有关详细信息,请参阅 Windows SDK 中的 EM_CANUNDO

示例

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

CRichEditCtrl::CharFromPos

检索由参数 pt 指定的点的字符信息。

int CharFromPos(CPoint pt) const;

参数

pt
包含指定点坐标的 CPoint 对象。

返回值

距离指定点最近的字符的从零开始的字符索引。 如果指定的点在控件中的最后一个字符之外,则返回值指示控件中的最后一个字符。

备注

此成员函数适用于 Rich Edit 控件。 若要获取编辑控件的信息,请调用 CEdit::CharFromPos

有关详细信息,请参阅 Windows SDK 中的 EM_CHARFROMPOS

CRichEditCtrl::Clear

删除(清除)Rich Edit 控件中的当前选定内容(如果有)。

void Clear();

备注

可通过调用 Undo 成员函数撤消 Clear 执行的删除。

若要删除当前选定内容并将已删除的内容放入剪贴板,请调用 Cut 成员函数。

有关详细信息,请参阅 Windows SDK 中的 WM_CLEAR

示例

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

CRichEditCtrl::Copy

将 Rich Edit 控件中的当前选定内容(如果有)复制到剪贴板。

void Copy();

备注

有关详细信息,请参阅 Windows SDK 中的 WM_COPY

示例

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

CRichEditCtrl::Create

创建 Windows Rich Edit 控件并将其与此 CRichEditCtrl 对象相关联。

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

参数

dwStyle
指定编辑控件的样式。 应用下面“备注”部分列出的窗口样式和 Windows SDK 中所述的编辑控件样式的组合

rect
指定编辑控件的大小和位置。 可以是 CRect 对象或 RECT 结构。

pParentWnd
指定编辑控件的父窗口(通常为 CDialog)。 不得为 NULL

nID
指定编辑控件的 ID。

返回值

如果初始化成功,则为非零值;否则为 0。

备注

请分两步构造 CRichEditCtrl 对象。 首先调用 CRichEditCtrl 构造函数,然后调用 Create,这会创建 Windows 编辑控件并将其附加到 CRichEditCtrl 对象。

使用此函数创建 Rich Edit 控件时,首先必须加载必要的通用控件库。 若要加载该库,请调用全局函数 AfxInitRichEdit,该函数依次初始化通用控件库。 只需在进程中调用 AfxInitRichEdit 一次。

Create 执行时,Windows 会将 WM_NCCREATEWM_NCCALCSIZEWM_CREATEWM_GETMINMAXINFO 消息发送到编辑控件。

默认情况下,这些消息由 CWnd 基类中的 OnNcCreateOnNcCalcSizeOnCreateOnGetMinMaxInfo 成员函数处理。 若要扩展默认消息处理,请从 CRichEditCtrl 派生一个类,将消息映射添加到新类,并替代上述消息处理程序成员函数。 例如,替代 OnCreate 来为新类执行所需的初始化。

将以下窗口样式应用于编辑控件。

  • WS_CHILD 始终。

  • WS_VISIBLE 通常。

  • WS_DISABLED 很少。

  • WS_GROUP 对控件进行分组。

  • WS_TABSTOP 在 Tab 键顺序中包含编辑控件。

有关窗口样式的详细信息,请参阅 Windows SDK 中的 CreateWindow

示例

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

CRichEditCtrl::CreateEx

创建一个控件(子窗口)并将其与 CRichEditCtrl 对象相关联。

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

参数

dwExStyle
指定要创建的控件的扩展样式。 有关扩展 Windows 样式的列表,请参阅 Windows SDK 中 CreateWindowExdwExStyle 参数。

dwStyle
指定编辑控件的样式。 应用 Create 的“备注”部分列出的窗口样式和 Windows SDK 中所述的编辑控件样式的组合

rect
RECT 结构的引用,该结构描述了要在客户端坐标 pParentWnd 中创建的窗口的大小和位置。

pParentWnd
指向作为控件父级的窗口的指针。

nID
控件的子窗口 ID。

返回值

如果成功,则不为 0;否则为 0。

备注

使用 CreateEx(而不是 Create)应用由 Windows 扩展样式前缀 WS_EX_ 指定的扩展 Windows 样式。

CRichEditCtrl::CRichEditCtrl

构造 CRichEditCtrl 对象。

CRichEditCtrl();

注解

使用 Create 构造 Windows Rich Edit 控件。

示例

// Declare a local CRichEditCtrl object.
CRichEditCtrl myRichEditCtrl;

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

CRichEditCtrl::Cut

删除(剪切)Rich Edit 控件中的当前选定内容(如果有),并将已删除的文本复制到剪贴板。

void Cut();

备注

可通过调用 Undo 成员函数撤消 Cut 执行的删除。

若要删除当前选定内容而不将已删除的文本放入剪贴板,请调用 Clear 成员函数。

有关详细信息,请参阅 Windows SDK 中的 WM_CUT

示例

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

CRichEditCtrl::DisplayBand

显示 Rich Edit 控件(文本和 OLE 项)的部分内容,如之前由 FormatRange 格式化的内容所示。

BOOL DisplayBand(LPRECT pDisplayRect);

参数

pDisplayRect
指向 RECTCRect 对象的指针,这些对象指定显示文本的设备区域。

返回值

如果格式化文本显示成功,则为非零值,否则为 0。

备注

文本和 OLE 项被剪裁到指针 pDisplayRect 指定的区域。

有关详细信息,请参阅 Windows SDK 中的 EM_DISPLAYBAND

示例

请参阅 CRichEditCtrl::FormatRange 的示例。

CRichEditCtrl::EmptyUndoBuffer

重置(清除)此 Rich Edit 控件的撤消标志。

void EmptyUndoBuffer();

注解

该控件现在无法撤消最后一个编辑操作。 每当可撤消 Rich Edit 控件中的操作时,都会设置撤消标志。

每当调用 CWnd 成员函数 SetWindowText 时,都会自动清除撤消标志。

有关详细信息,请参阅 Windows SDK 中的 EM_EMPTYUNDOBUFFER

示例

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

CRichEditCtrl::FindText

在 Rich Edit 控件中查找文本。

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

参数

dwFlags
有关可能值的列表,请参阅 Windows SDK 中 EM_FINDTEXTEXT 中的 wParam

pFindText
指向 FINDTEXTEX 结构的指针,该结构提供搜索的参数并返回找到匹配的范围。

返回值

下一个匹配项的从零开始的字符位置;如果没有更多匹配项,则为 -1。

备注

可通过在 FINDTEXTEX 结构中的 CHARRANGE 结构中设置适当的范围参数来进行向上或向下搜索。

有关详细信息,请参阅 Windows SDK 中的 EM_FINDTEXTEX 消息和 FINDTEXTEX 结构。

示例

// 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

查找 nStart 指定的位置之前或之后的下一个断字符。

DWORD FindWordBreak(
    UINT nCode,
    DWORD nStart) const;

参数

nCode
指示要采取的操作。 有关可能值的列表,请参阅 Windows SDK 中 EM_FINDWORDBREAK 中的 code 参数的说明。

nStart
开始的字符位置(从零开始)。

返回值

基于参数 nCode。 有关详细信息,请参阅 Windows SDK 中的 EM_FINDWORDBREAK

备注

可以使用此成员函数检索给定位置的字符信息。

CRichEditCtrl::FormatRange

在特定设备的 Rich Edit 控件中格式化文本范围。

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

参数

pfr
指向 FORMATRANGE 包含有关输出设备的信息的结构的指针。 NULL 指示可以释放 Rich Edit 控件中的缓存信息。

bDisplay
指示是否应呈现文本。 如果为 FALSE,则仅测量文本。

返回值

适配该区域的最后一个字符的索引加一。

注解

通常,此调用后跟对 DisplayBand 的调用。

有关详细信息,请参阅 Windows SDK 中的 EM_FORMATRANGE 消息和 FORMATRANGE 结构。

示例

// 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

获取此 CRichEditCtrl 对象中给定字符的位置(左上角)。

CPoint GetCharPos(long lChar) const;

参数

lChar
字符的从零开始的索引。

返回值

lChar 指定的字符左上角的位置。

备注

通过为字符提供从零开始的索引值来指定字符。 如果 lChar 大于 CRichEditCtrl 对象中最后一个字符的索引,则返回值指定刚好超过 CRichEditCtrl 对象中最后一个字符的字符位置的坐标。

有关详细信息,请参阅 Windows SDK 中的 EM_POSFROMCHAR

CRichEditCtrl::GetDefaultCharFormat

获取此 CRichEditCtrl 对象的默认字符格式设置属性。

DWORD GetDefaultCharFormat(CHARFORMAT& cf) const;  DWORD GetDefaultCharFormat(CHARFORMAT2& cf) const;

参数

cf
在第一个版本中,为指向 CHARFORMAT 结构的指针,该结构用于保存默认字符格式设置属性。

在第二个版本中,为指向 CHARFORMAT2 结构的指针,该结构是 CHARFORMAT 结构的 Rich Edit 2.0 扩展,用于保存默认字符格式设置属性。

返回值

cfdwMask 数据成员。 它指定了默认字符格式设置属性。

注解

有关详细信息,请参阅 Windows SDK 中的 EM_GETCHARFORMAT 消息以及 CHARFORMATCHARFORMAT2 结构。

示例

请参阅 SetDefaultCharFormat 的示例。

CRichEditCtrl::GetEventMask

获取此 CRichEditCtrl 对象的事件掩码。

long GetEventMask() const;

返回值

CRichEditCtrl 对象的事件掩码。

注解

事件掩码指定 CRichEditCtrl 对象发送到其父窗口的通知消息。

有关详细信息,请参阅 Windows SDK 中的 EM_GETEVENTMASK

示例

请参阅 CRichEditCtrl::SetEventMask 的示例。

CRichEditCtrl::GetFirstVisibleLine

确定此 CRichEditCtrl 对象中最顶部可见的行。

int GetFirstVisibleLine() const;

返回值

CRichEditCtrl 对象中最上端可见行的从零开始的索引。

备注

有关详细信息,请参阅 Windows SDK 中的 EM_GETFIRSTVISIBLELINE

示例

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

访问此 CRichEditCtrl 对象的 IRichEditOle 接口。

IRichEditOle* GetIRichEditOle() const;

返回值

指向可用于访问此 CRichEditCtrl 对象的 OLE 功能的 IRichEditOle 接口的指针;如果接口不可访问,则为 NULL

备注

使用此接口访问此 CRichEditCtrl 对象的 OLE 功能。

有关详细信息,请参阅 Windows SDK 中的 EM_GETOLEINTERFACE 消息和 IRichEditOle 接口。

CRichEditCtrl::GetLimitText

获取此 CRichEditCtrl 对象的文本限制。

long GetLimitText() const;

返回值

CRichEditCtrl 对象的当前文本限制(以字节为单位)。

备注

文本限制是 Rich Edit 控件可接受的最大文本量(以字节为单位)。

有关详细信息,请参阅 Windows SDK 中的 EM_GETLIMITTEXT

示例

// 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

从此 CRichEditCtrl 对象检索文本行。

int GetLine(
    int nIndex,
    LPTSTR lpszBuffer) const;

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

参数

nIndex
要检索的行从零开始的索引。

lpszBuffer
指向接收文本的缓冲区。 缓冲区的第一个字必须指定可复制到缓冲区的最大字节数。

nMaxLength
可复制到 lpszBuffer 中的最大字符数。 第二种形式的 GetLine 将此值置于由 lpszBuffer 指定的缓冲区的第一个单词中。

返回值

复制到 lpszBuffer 中的字符数。

备注

复制的行不包含终止 null 字符。

注意

由于缓冲区的第一个单词存储要复制的字符数,因此请确保缓冲区长度至少为 4 个字节。

有关详细信息,请参阅 Windows SDK 中的 EM_GETLINE

示例

请参阅 GetLineCount 的示例。

CRichEditCtrl::GetLineCount

检索 CRichEditCtrl 对象中的行数。

int GetLineCount() const;

返回值

CRichEditCtrl 对象中的行数。

备注

有关详细信息,请参阅 Windows SDK 中的 EM_GETLINECOUNT

示例

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

确定此 CRichEditCtrl 对象的内容是否已修改。

BOOL GetModify() const;

返回值

如果修改了此 CRichEditCtrl 对象中的文本,则为非零值;否则为 0。

注解

Windows 会维护一个内部标志,该标志指示 Rich Edit 控件的内容是否已更改。 首次创建编辑控件时会清除此标志,也可通过调用 SetModify 成员函数来清除它。

有关详细信息,请参阅 Windows SDK 中的 EM_GETMODIFY

示例

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

CRichEditCtrl::GetOptions

检索当前为 Rich Edit 控件设置的选项。

UINT GetOptions() const;

返回值

当前选项标志值的组合。 有关这些值的列表,请参阅 EM_SETOPTIONS 消息中的 fOptions 参数,如 Windows SDK 中所述。

CRichEditCtrl::GetParaFormat

获取当前选定内容的段落格式设置属性。

DWORD GetParaFormat(PARAFORMAT& pf) const;  DWORD GetParaFormat(PARAFORMAT2& pf) const;

参数

pf
在第一个版本中,为指向 PARAFORMAT 结构的指针,该结构用于保存当前选定内容的段落格式设置属性。

在第二个版本中,为指向 PARAFORMAT2 结构的指针,该结构是 PARAFORMAT 结构的 Rich Edit 2.0 扩展,用于保存默认字符格式设置属性。

返回值

pfdwMask 数据成员。 它指定在当前选定内容中保持一致的段落格式设置属性。

备注

如果选择多个段落,pf 将接收第一个选定段落的属性。 返回值指定选项中哪些属性是一致的。

有关详细信息,请参阅 Windows SDK 中的 EM_GETPARAFORMAT 消息以及 PARAFORMATPARAFORMAT2 结构。

示例

请参阅 CRichEditCtrl::SetParaFormat 的示例。

CRichEditCtrl::GetPunctuation

获取 Rich Edit 控件中的当前标点字符。

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

参数

fType
标点类型标志,如 Windows SDK 中 EM_GETPUNCTUATIONfType 参数中所述。

lpPunc
指向 PUNCTUATION 结构的指针,如 Windows SDK 中所述。

返回值

如果操作成功,则为非零值;否则为 0。

备注

此成员函数仅适用于操作系统的亚洲语言版本。

CRichEditCtrl::GetRect

检索此 CRichEditCtrl 对象的格式设置矩形。

void GetRect(LPRECT lpRect) const;

参数

lpRect
CRect 或指向 RECT(用于接收此 CRichEditCtrl 对象的格式设置矩形)的指针。

注解

格式设置矩形是文本的边框。 此值与 CRichEditCtrl 对象的大小无关。

有关详细信息,请参阅 Windows SDK 中的 EM_GETRECT

示例

请参阅 LimitText 的示例。

CRichEditCtrl::GetRedoName

检索恢复队列中下一个可用操作的类型(如果有)。

UNDONAMEID GetRedoName() const;

返回值

如果成功,则 GetRedoName 返回指示控件恢复队列中下一个操作的类型的 UNDONAMEID 枚举类型。 如果恢复队列为空,或者如果队列中的恢复操作的类型未知,则 GetRedoName 返回 0。

注解

可以撤消或恢复的操作类型包括键入、删除、拖放、剪切和粘贴操作。 此信息可用于为撤消和恢复操作提供扩展用户界面的应用程序,例如可恢复操作的下拉列表框。

CRichEditCtrl::GetSel

检索此 CRichEditCtrl 对象中当前选定内容的边界。

void GetSel(CHARRANGE& cr) const;

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

参数

cr
引用 CHARRANGE 结构,以接收当前选定内容的边界。

nStartChar
当前选定内容中第一个字符的从零开始的索引。

nEndChar
当前选定内容中最后一个字符的从零开始的索引。

注解

此函数的两种形式提供了获取所选内容边界的备用方法。 这些形式的简要说明如下:

  • GetSel(cr) 此形式使用带有 cpMincpMax 成员的 CHARRANGE 结构返回边界。

  • GetSel(nStartChar,nEndChar) 此形式返回参数 nStartCharnEndChar 中的边界。

如果开头(cpMinnStartChar)为 0,结尾(cpMaxnEndChar)为 - 1,则所选内容包括所有内容。

有关详细信息,请参阅 Windows SDK 中的 EM_EXGETSEL 消息和 CHARRANGE 结构。

示例

// 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

获取当前选定内容的字符格式设置属性。

DWORD GetSelectionCharFormat(CHARFORMAT& cf) const;  DWORD GetSelectionCharFormat(CHARFORMAT2& cf) const;

参数

cf
在第一个版本中,为指向 CHARFORMAT 结构的指针,该结构用于接收当前选定内容的字符格式设置属性。

在第二个版本中,为指向 CHARFORMAT2 结构的指针,该结构是 CHARFORMAT 结构的 Rich Edit 2.0 扩展,用于接收当前选定内容的字符格式设置属性。

返回值

cfdwMask 数据成员。 它指定在当前选定内容中保持一致的字符格式设置属性。

备注

cf 参数接收当前选定内容中第一个字符的属性。 返回值指定选项中哪些属性是一致的。

有关详细信息,请参阅 Windows SDK 中的 EM_GETCHARFORMAT 消息以及 CHARFORMATCHARFORMAT2 结构。

示例

请参阅 SetSelectionCharFormat 的示例。

CRichEditCtrl::GetSelectionType

确定此 CRichEditCtrl 对象中的选择类型。

WORD GetSelectionType() const;

返回值

指示当前选定内容的标志。 以下标志的组合:

  • SEL_EMPTY 指示当前没有选定内容。

  • SEL_TEXT 指示当前选定内容包含文本。

  • SEL_OBJECT 指示当前选项包含至少一个 OLE 项。

  • SEL_MULTICHAR 指示当前选定内容包含多个文本字符。

  • SEL_MULTIOBJECT 指示当前选定内容包含多个 OLE 对象。

备注

有关详细信息,请参阅 Windows SDK 中的 EM_SELECTIONTYPE

示例

// 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

从此 CRichEditCtrl 对象中的当前选定内容中检索文本。

long GetSelText(LPSTR lpBuf) const;  CString GetSelText() const;

参数

lpBuf
指向用于接收当前选定内容中的文本的缓冲区的指针。

返回值

取决于形式:

  • GetSelText(lpBuf) 复制到 lpBuf 中的字符数,不包括 null 终止。

  • GetSelText( ) 包含当前选定内容的字符串。

注解

如果使用第一种形式 GetSelText(lpBuf),则必须确保缓冲区足够大,以便接收文本。 调用 GetSel 以确定当前选定内容中的字符数。

有关详细信息,请参阅 Windows SDK 中的 EM_GETSELTEXT

示例

请参阅 CRichEditCtrl::GetSelectionType 的示例。

CRichEditCtrl::GetTextLength

检索此 CRichEditCtrl 对象中文本的长度(以字符为单位),不包括终止 null 字符。

long GetTextLength() const;

返回值

CRichEditCtrl 对象中的文本的长度。

注解

有关详细信息,请参阅 Windows SDK 中的 WM_GETTEXTLENGTH

示例

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

CRichEditCtrl::GetTextLengthEx

计算 Rich Edit 控件中文本的长度。

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

参数

dwFlags
指定确定文本长度时所用方法的值。 此成员可以是 Windows SDK 中所述 GETTEXTLENGTHEX 的标记成员中列出的一个或多个值。

uCodePage
适用于翻译的代码页(CP_ACP 指 ANSI 代码页,1200 指 Unicode)。

返回值

编辑控件中的字符数或字节数。 如果在 dwFlags 中设置了不兼容的标志,则此成员函数返回 E_INVALIDARG

备注

GetTextLengthEx 提供了其他用于确定文本长度的方法。 它支持 Rich Edit 2.0 功能。 有关详细信息,请参阅 Windows SDK 中的关于 Rich Edit 控件

CRichEditCtrl::GetTextMode

检索 Rich Edit 控件的当前文本模式和撤消级别。

UINT GetTextMode() const;

返回值

一组来自 TEXTMODE 枚举类型的位标志,如 Windows SDK 中所述。 标志指示控件的当前文本模式和撤消级别。

CRichEditCtrl::GetTextRange

获取指定的字符范围。

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

参数

nFirst
紧接在范围内第一个字符之前的字符位置索引。

nLast
紧接在范围内最后一个字符之后的字符位置。

refString
对接收文本的 CString 对象的引用。

返回值

复制的字符数,不包括终止 null 字符。

注解

有关详细信息,请参阅 Windows SDK 中的 EM_GETTEXTRANGE

GetTextRange 支持 Rich Edit 2.0 功能。 有关详细信息,请参阅 Windows SDK 中的关于 Rich Edit 控件

CRichEditCtrl::GetUndoName

检索撤消队列中下一个可用操作的类型(如果有)。

UNDONAMEID GetUndoName() const;

返回值

如果撤消操作在控件的撤消队列中,则 GetUndoName 返回 UNDONAMEID 枚举类型,指示队列中下一个操作的类型。 如果撤消队列为空,或者如果队列中的撤消操作的类型未知,则 GetUndoName 返回 0。

备注

可以撤消或恢复的操作类型包括键入、删除、拖放、剪切和粘贴操作。 此信息可用于为撤消和恢复操作提供扩展用户界面的应用程序,例如可以撤消的操作下拉列表框。

CRichEditCtrl::GetWordWrapMode

检索 Rich Edit 控件的当前换行和断字选项。

UINT GetWordWrapMode() const;

返回值

当前换行和断字选项。 Windows SDK 的 EM_SETWORDWRAPMODE 中介绍了这些选项。

备注

此成员函数仅适用于操作系统的亚洲语言版本。

CRichEditCtrl::HideSelection

更改所选内容的可见性。

void HideSelection(
    BOOL bHide,
    BOOL bPerm);

参数

bHide
指示是显示还是隐藏所选内容,如果要隐藏所选内容,则为 TRUE

bPerm
指示是否应永久更改所选内容的可见性。

备注

如果 bPermTRUE,它将更改此 CRichEditCtrl 对象的 ECO_NOHIDESEL 选项。 有关此选项的简要说明,请参阅 SetOptions。 可以使用此函数设置此 CRichEditCtrl 对象的所有选项。

有关详细信息,请参阅 Windows SDK 中的 EM_HIDESELECTION

示例

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

CRichEditCtrl::LimitText

限制用户可在编辑控件中输入的文本长度。

void LimitText(long nChars = 0);

参数

nChars
指定用户可以输入的文本的长度(以字节为单位)。 如果此参数为 0(默认值),则文本长度设置为 64K 字节。

备注

更改文本限制仅会限制用户可输入的文本。 它不会影响编辑控件中已有的任何文本,也不会影响通过 CWnd 中的 SetWindowText 成员函数复制到编辑控件的文本的长度。 如果应用程序使用 SetWindowText 函数将更多文本放置在编辑控件中,而不是在对 LimitText 的调用中指定,则用户可以删除编辑控件中的任何文本。 但是,除非删除当前选定内容会导致文本低于文本限制,否则文本限制将阻止用户使用新文本替换现有文本。

注意

对于文本限制,每个 OLE 项算作一个字符。

有关详细信息,请参阅 Windows SDK 中的 EM_EXLIMITTEXT

示例

// 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

检索包含指定字符索引的行的行号。

long LineFromChar(long nIndex) const;

参数

nIndex
包含编辑控件文本中所需字符的从零开始的索引值,或者包含 -1。 如果 nIndex 为 -1,则指定当前行,即包含脱字号的行。

返回值

包含 nIndex 指定的字符索引的行的从零开始的行号。 如果 nIndex 为 -1,则返回包含所选内容第一个字符的行数。 如果未选定任何内容,则返回当前行号。

注解

字符索引是从 Rich Edit 控件开头算起的字符数。 对于字符计数,OLE 项将计为单个字符。

有关详细信息,请参阅 Windows SDK 中的 EM_EXLINEFROMCHAR

示例

// 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

检索此 CRichEditCtrl 对象中某一行的字符索引。

int LineIndex(int nLine = -1) const;

参数

nLine
包含编辑控件文本中所需行的索引值,或者包含 -1。 如果 nLine 为 -1,则指定当前行,即包含脱字号的行。

返回值

返回 nLine 中指定的行的字符索引;如果指定的行数大于编辑控件中的行数,则返回 -1。

备注

字符索引是从 Rich Edit 控件开头到指定的行的字符数。

有关详细信息,请参阅 Windows SDK 中的 EM_LINEINDEX

示例

// 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

检索 Rich Edit 控件中行的长度。

int LineLength(int nLine = -1) const;

参数

nLine
指定要检索其长度的行中字符的字符索引。 如果此参数为 -1,则返回当前行(包含插入符号的行)的长度,不包括该行中任何选定文本的长度。 为单行编辑控件调用 LineLength 时,将忽略此参数。

返回值

对多行编辑控件调用 LineLength 时,返回值是 nLine 指定的行长度(以 TCHAR 为单位)。 不包括行末尾的回车符。 为单行编辑控件调用 LineLength 时,返回值是编辑控件中文本的长度(以 TCHAR 为单位)。 如果 nLine 大于控件中的字符数,则返回值为零。

注解

使用 LineIndex 成员函数检索此 CRichEditCtrl 对象中给定行号的字符索引。

有关详细信息,请参阅 Windows SDK 中的 EM_LINELENGTH

示例

请参阅 LineIndex 的示例。

CRichEditCtrl::LineScroll

滚动多行编辑控件的文本。

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

参数

nLines
指定要垂直滚动的行数。

nChars
指定要水平滚动的字符位置数。 如果 Rich Edit 控件具有 ES_RIGHTES_CENTER 样式,则忽略此值。 编辑样式Create 中进行指定。

注解

编辑控件不会垂直滚动超出编辑控件中的最后一行文本。 如果当前行加上 nLines 指定的行数超过编辑控件中的行总数,则会调整该值,以便编辑控件的最后一行滚动到编辑控件窗口的顶部。

可使用 LineScroll 水平滚动超过任何行的最后一个字符。

有关详细信息,请参阅 Windows SDK 中的 EM_LINESCROLL

示例

请参阅 GetFirstVisibleLine 的示例。

CRichEditCtrl::Paste

将数据从剪贴板插入到插入点(插入符号的位置)的 CRichEditCtrl 中。

void Paste();

注解

仅当剪贴板包含可识别格式的数据时,才会插入数据。

有关详细信息,请参阅 Windows SDK 中的 WM_PASTE

示例

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

CRichEditCtrl::PasteSpecial

以特定的剪贴板格式将数据粘贴到此 CRichEditCtrl 对象中。

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

参数

nClipFormat
要粘贴到此 CRichEditCtrl 对象的剪贴板格式。

dvAspect
设备方面,用于从剪贴板检索数据。

hMF
包含要粘贴的对象的图标视图的元文件句柄。

注解

新材料插入到插入点(插入符号的位置)。

有关详细信息,请参阅 Windows SDK 中的 EM_PASTESPECIAL

示例

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

CRichEditCtrl::PosFromChar

检索编辑控件中指定字符的工作区坐标。

CPoint PosFromChar(UINT nChar) const;

参数

nChar
字符的从零开始的索引。

返回值

字符的位置 (x, y)。 对于单行编辑控件,y 坐标始终为零。

备注

有关详细信息,请参阅 Windows SDK 中的 EM_POSFROMCHAR

CRichEditCtrl::Redo

恢复控件的恢复队列中的下一个操作。

BOOL Redo();

返回值

如果成功,则返回非零值;否则返回 0。

备注

有关详细信息,请参阅 Windows SDK 中的 EM_REDO

CRichEditCtrl::ReplaceSel

将此 CRichEditCtrl 对象中的当前选定内容替换为指定的文本。

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

参数

lpszNewText
指向包含替换文本的以 null 结尾的字符串的指针。

bCanUndo
若要指定可撤消此函数,请将此参数的值设置为 TRUE。 默认值为 FALSE

备注

若要替换此 CRichEditCtrl 对象中的所有文本,请使用 CWnd::SetWindowText

如果当前没有选定内容,则将替换文本插入到插入点,即当前插入符号位置。

此函数将使用现有字符格式设置插入文本的格式。 替换整个文本范围时(在调用 ReplaceSel 之前调用 SetSel (0,-1)),段落末尾字符将保留上一段的格式,该格式将由新插入的文本继承。

有关详细信息,请参阅 Windows SDK 中的 EM_REPLACESEL

示例

请参阅 LineIndex 的示例。

CRichEditCtrl::RequestResize

强制此 CRichEditCtrl 对象将 EN_REQUESTRESIZE 通知消息发送到其父窗口。

void RequestResize();

注解

此函数在 CWnd::OnSize 处理无底 CRichEditCtrl 对象时很有用。

有关详细信息,请参阅 Windows SDK 中关于 Rich Edit 控件EM_REQUESTRESIZE 消息和“无底 Rich Edit 控件”部分

CRichEditCtrl::SetAutoURLDetect

设置 Rich Edit 控件以自动检测 URL。

BOOL SetAutoURLDetect(BOOL bEnable = TRUE);

参数

bEnable
指定控件是否设置为自动检测 URL。 如果为 TRUE,表示已启用。 如果为 FALSE,表示已禁用。

返回值

如果成功,则返回零,否则返回非零值。 例如,消息可能由于内存不足而失败。

注解

如果启用,Rich Edit 控件将扫描文本以确定它是否匹配标准的 URL 格式。 有关这些 URL 格式的列表,请参阅 Windows SDK 中的 EM_AUTOURLDETECT

注意

如果编辑控件对 URL 以外的文本使用 CFE_LINK 效果,则不要将 SetAutoURLDetect 设置为 TRUESetAutoURLDetect 对 URL 启用此效果,对所有其他文本禁用此效果。 有关 CFE_LINK 效果的详细信息,请参阅 EN_LINK

CRichEditCtrl::SetBackgroundColor

设置此 CRichEditCtrl 对象的背景色。

COLORREF SetBackgroundColor(
    BOOL bSysColor,
    COLORREF cr);

参数

bSysColor
指示背景色是否应设置为系统值。 如果此值为 TRUE,则忽略 cr

cr
请求的背景色。 仅当 bSysColorFALSE 时使用。

返回值

CRichEditCtrl 对象以前的背景色。

备注

背景色可以设置为系统值或指定的 COLORREF 值。

有关详细信息,请参阅 Windows SDK 中的 EM_SETBKGNDCOLOR 消息和 COLORREF 结构。

示例

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

CRichEditCtrl::SetDefaultCharFormat

设置此 CRichEditCtrl 对象中新文本的字符格式设置属性。

BOOL SetDefaultCharFormat(CHARFORMAT& cf);
BOOL SetDefaultCharFormat(CHARFORMAT2& cf);

参数

cf
在第一个版本中,为指向 CHARFORMAT 结构的指针,该结构包含新默认字符格式设置属性。

在第二个版本中,为指向 CHARFORMAT2 结构的指针,该结构是 CHARFORMAT 结构的 Rich Edit 2.0 扩展,包含默认字符格式设置属性。

返回值

如果成功,则返回非零值;否则返回 0。

注解

此函数仅更改 cfdwMask 成员指定的属性。

有关详细信息,请参阅 Windows SDK 中的 EM_SETCHARFORMAT 消息以及 CHARFORMATCHARFORMAT2 结构。

示例

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

设置此 CRichEditCtrl 对象的事件掩码。

DWORD SetEventMask(DWORD dwEventMask);

参数

dwEventMask
CRichEditCtrl 对象的新事件掩码。

返回值

上一个事件掩码。

注解

事件掩码指定 CRichEditCtrl 对象发送到其父窗口的通知消息。

有关详细信息,请参阅 Windows SDK 中的 EM_SETEVENTMASK

示例

// 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

设置或清除编辑控件的已修改标志。

void SetModify(BOOL bModified = TRUE);

参数

bModified
TRUE 值表示文本已修改,FALSE 值表示文本未修改。 默认情况下,将设置已修改的标志。

备注

已修改的标志指示是否修改了编辑控件中的文本。 每当用户更改文本时,都会自动设置该标志。 可以使用 GetModify 成员函数检索其值。

有关详细信息,请参阅 Windows SDK 中的 EM_SETMODIFY

示例

请参阅 GetModify 的示例。

CRichEditCtrl::SetOLECallback

为此 CRichEditCtrl 对象提供一个 IRichEditOleCallback 对象,用于访问与 OLE 相关的资源和信息。

BOOL SetOLECallback(IRichEditOleCallback* pCallback);

参数

pCallback
指向 IRichEditOleCallback 对象的指针,该 CRichEditCtrl 对象将用于获取与 OLE 相关的资源和信息。

返回值

如果成功,则返回非零值;否则返回 0。

备注

CRichEditCtrl 对象将调用 IUnknown::AddRef 以递增由 pCallback 指定的 COM 对象的使用情况计数。

有关详细信息,请参阅 Windows SDK 中的 EM_SETOLECALLBACK 消息和 IRichEditOleCallback 接口。

CRichEditCtrl::SetOptions

设置此 CRichEditCtrl 对象的选项。

void SetOptions(
    WORD wOp,
    DWORD dwFlags);

参数

wOp
指示操作的类型。 以下值之一:

  • ECOOP_SET 将选项设置为 dwFlags 指定的选项。

  • ECOOP_OR 将当前选项与 dwFlags 指定的选项组合。

  • ECOOP_AND 仅保留 dwFlags 指定的当前选项。

  • ECOOP_XOR 将当前选项与 dwFlags 指定的选项在逻辑上互斥。

dwFlags
Rich Edit 选项。 标志值在“注解”部分列出。

备注

选项可为以下值的组合:

  • ECO_AUTOWORDSELECTION 双击时自动选词。

  • ECO_AUTOVSCROLL 当用户在行尾键入一个字符时,自动将文本向右滚动 10 个字符。 当用户按下 Enter 时,控件会将所有文本向后滚动到位置 0。

  • ECO_AUTOHSCROLL 当用户在最后一行按下 Enter 时,自动将文本向上滚动一页。

  • ECO_NOHIDESEL 否定编辑控件的默认行为。 默认行为会在控件失去输入焦点时隐藏选择,并在控件收到输入焦点时显示选择。 如果指定 ECO_NOHIDESEL,则所选文本将反转,即使控件没有焦点也是如此。

  • ECO_READONLY 防止用户在编辑控件中键入或编辑文本。

  • ECO_WANTRETURN 指定当用户在对话框的多行 Rich Edit 控件中输入文本并按 Enter 后插入一个回车符。 如果未指定此样式,按 Enter 会将命令发送到 Rich Edit 控件的父窗口,该窗口模拟单击父窗口的默认按钮(例如,对话框中的“确定”按钮)。 此样式对单行编辑控件不起作用。

  • ECO_SAVESEL 当控件失去焦点时,保留所选内容。 默认情况下,控件重新获得焦点时将选择其全部内容。

  • ECO_VERTICAL 在垂直方向绘制文本和对象。 仅适用于亚洲语言。

有关详细信息,请参阅 Windows SDK 中的 EM_SETOPTIONS

示例

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

CRichEditCtrl::SetParaFormat

设置此 CRichEditCtrl 对象中当前选定内容的段落格式设置属性。

BOOL SetParaFormat(PARAFORMAT& pf);
BOOL SetParaFormat(PARAFORMAT2& pf);

参数

pf
在第一个版本中,为指向 PARAFORMAT 结构的指针,该结构包含新默认段落格式设置属性。

在第二个版本中,为指向 PARAFORMAT2 结构的指针,该结构是 PARAFORMAT 结构的 Rich Edit 2.0 扩展,用于保存默认字符格式设置属性。

返回值

如果成功,则返回非零值;否则返回 0。

注解

此函数仅更改 pfdwMask 成员指定的属性。

有关详细信息,请参阅 Windows SDK 中的 EM_SETPARAFORMAT 消息以及 PARAFORMATPARAFORMAT2 结构。

示例

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

在 Rich Edit 控件中设置标点。

BOOL SetPunctuation(
    UINT fType,
    PUNCTUATION* lpPunc);

参数

fType
标点标志。 有关可能值的列表,请参阅 Windows SDK 中 EM_SETPUNCTUATIONfType 参数。

lpPunc
指向 PUNCTUATION 结构的指针,如 Windows SDK 中所述。

返回值

如果成功,则返回非零值;否则返回 0。

注解

此成员函数仅适用于操作系统的亚洲语言版本。

CRichEditCtrl::SetReadOnly

更改此 CRichEditCtrl 对象的 ECO_READONLY 选项。

BOOL SetReadOnly(BOOL bReadOnly = TRUE);

参数

bReadOnly
指示此 CRichEditCtrl 对象是否应为只读。

返回值

如果成功,则返回非零值;否则返回 0。

备注

有关此选项的简要说明,请参阅 SetOptions。 可以使用此函数设置此 CRichEditCtrl 对象的所有选项。

有关详细信息,请参阅 Windows SDK 中的 EM_SETREADONLY

示例

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

CRichEditCtrl::SetRect

设置此 CRichEditCtrl 对象的格式设置矩形。

void SetRect(LPCRECT lpRect);

参数

lpRect
CRect 或指向指示格式设置矩形的新边界的 RECT 的指针。

注解

格式设置矩形是文本的限制矩形。 限制矩形与 Rich Edit 控件窗口的大小无关。 首次创建此 CRichEditCtrl 对象时,格式矩形的大小与窗口的工作区相同。 使用 SetRect 可使格式设置矩形比 Rich Edit 窗口大或小。

有关详细信息,请参阅 Windows SDK 中的 EM_SETRECT

示例

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

设置此 CRichEditCtrl 对象中的选项。

void SetSel(
    long nStartChar,
    long nEndChar);

void SetSel(CHARRANGE& cr);

参数

nStartChar
所选内容第一个字符的从零开始的索引。

nEndChar
所选内容最后一个字符的从零开始的索引。

cr
CHARRANGE 结构,用于保存当前选定内容的边界。

备注

此函数的两种形式提供了设置所选内容边界的备用方法。 这些形式的简要说明如下:

  • SetSel(cr) 此形式使用带有 cpMincpMax 成员的 CHARRANGE 结构设置边界。

  • SetSel(nStartChar,nEndChar) 此形式使用参数 nStartChar 和 nEndChar 设置边界

插入符号放置在所选内容末尾,由起始(cpMinnStartChar)和结束(cpMaxnEndChar)索引的较大值表示。 此函数滚动 CRichEditCtrl 的内容,使插入符号可见。

若要选择此 CRichEditCtrl 对象中的所有文本,请调用起始索引为 0、结束索引为 - 1的 SetSel

有关详细信息,请参阅 Windows SDK 中的 EM_EXSETSEL 消息和 CHARRANGE 结构。

示例

请参阅 GetSel 的示例。

CRichEditCtrl::SetSelectionCharFormat

设置此 CRichEditCtrl 对象中当前选定内容中文本的字符格式设置属性。

BOOL SetSelectionCharFormat(CHARFORMAT& cf);
BOOL SetSelectionCharFormat(CHARFORMAT2& cf);

参数

cf
在第一个版本中,为指向 CHARFORMAT 结构的指针,该结构包含当前选定内容的新字符格式设置属性。

在第二个版本中,为指向 CHARFORMAT2 结构的指针,该结构是 CHARFORMAT 结构的 Rich Edit 2.0 扩展,包含当前选定内容的新字符格式设置属性。

返回值

如果成功,则返回非零值;否则返回 0。

注解

此函数仅更改 cf 的 dwMask 成员指定的属性

有关详细信息,请参阅 Windows SDK 中的 EM_SETCHARFORMATCHARFORMATCHARFORMAT2 结构。

示例

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

在此 CRichEditCtrl 对象中设置“所见即所得”格式设置所使用的目标设备和线条宽度。

BOOL SetTargetDevice(
    HDC hDC,
    long lLineWidth);

BOOL SetTargetDevice(
    CDC& dc,
    long lLineWidth);

参数

hDC
新目标设备的设备上下文句柄。

lLineWidth
用于格式设置的线条宽度。

dc
CDC 用于新目标设备。

返回值

如果成功,则返回非零值;否则返回 0。

备注

如果此函数成功,Rich Edit 控件将拥有作为参数传递的设备上下文。 在这种情况下,调用函数不应销毁设备上下文。

有关详细信息,请参阅 Windows SDK 中的 EM_SETTARGETDEVICE

示例

// 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

设置 Rich Edit 控件的文本模式或撤消和恢复级别。

BOOL SetTextMode(UINT fMode);

参数

fMode
指定控件的文本模式和撤消级别参数的新设置。 有关可能值的列表,请参阅 Windows SDK 中 EM_SETTEXTMODE 的模式参数。

返回值

如果成功,则返回零,否则返回非零值。

备注

有关文本模式的说明,请参阅 Windows SDK 中的 EM_SETTEXTMODE

如果控件包含文本,则此成员函数将失败。 若要确保控件为空,请发送包含空字符串的 WM_SETTEXT 消息。

CRichEditCtrl::SetUndoLimit

设置可存储在撤消队列中的操作的最大操作数。

UINT SetUndoLimit(UINT nLimit);

参数

nLimit
指定可存储在撤消队列中的操作的最大操作数。 设置为零可禁用撤消。

返回值

Rich Edit 控件新的最大撤消操作数。

备注

默认情况下,撤消队列中的最大操作数为 100。 如果增加此数字,则必须有足够的可用内存来容纳新数字。 为了提高性能,请将限制设置为尽可能小的值。

CRichEditCtrl::SetWordCharFormat

设置此 CRichEditCtrl 对象中当前所选单词的字符格式设置属性。

BOOL SetWordCharFormat(CHARFORMAT& cf);
BOOL SetWordCharFormat(CHARFORMAT2& cf);

参数

cf
在第一个版本中,为指向 CHARFORMAT 结构的指针,该结构包含当前当前选定单词的新字符格式设置属性。

在第二个版本中,为指向 CHARFORMAT2 结构的指针,该结构是 CHARFORMAT 结构的 Rich Edit 2.0 扩展,包含当前选定单词的新字符格式设置属性。

返回值

如果成功,则返回非零值;否则返回 0。

注解

此函数仅更改 cfdwMask 成员指定的属性。

有关详细信息,请参阅 Windows SDK 中的 EM_SETCHARFORMAT 消息以及 CHARFORMATCHARFORMAT2 结构。

示例

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

设置 Rich Edit 控件的换行和断字选项。

UINT SetWordWrapMode(UINT uFlags) const;

参数

uFlags
用于设置换字和断字的选项。 有关可能选项的列表,请参阅 Windows SDK 中的 EM_SETWORDWRAPMODE

返回值

当前换行和断字选项。

注解

此消息仅适用于操作系统的亚洲语言版本。

CRichEditCtrl::StopGroupTyping

阻止控件将其他键入操作收集到当前撤消操作中。

void StopGroupTyping();

备注

控件将下一个键入操作(如果有)存储到撤消队列中的新操作中。

有关详细信息,请参阅 Windows SDK 中的 EM_STOPGROUPTYPING

CRichEditCtrl::StreamIn

将此 CRichEditCtrl 对象中的文本替换为指定输入流中的文本。

long StreamIn(
    int nFormat,
    EDITSTREAM& es);

参数

nFormat
指定输入数据格式的标志。 有关详细信息,请参阅备注部分。

es
EDITSTREAM 结构,指定输入流。 有关详细信息,请参阅备注部分。

返回值

从输入流读取的字符数。

注解

nFormat 的值必须为以下值之一:

  • SF_TEXT 指示仅读取文本。

  • SF_RTF 指示读取文本和格式。

这些值中的任何一个都可以与 SFF_SELECTION 结合使用。 如果指定 SFF_SELECTIONStreamIn 会将当前选定内容替换为输入流的内容。 如果未指定,则 StreamIn 替换此 CRichEditCtrl 对象的全部内容。

EDITSTREAM 参数 es 中,指定一个用文本填充缓冲区的回调函数。 重复调用此回调函数,直到输入流耗尽。

有关详细信息,请参阅 Windows SDK 中的 EM_STREAMIN 消息和 EDITSTREAM 结构。

示例

// 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

将此 CRichEditCtrl 对象的内容写入指定的输出流。

long StreamOut(
    int nFormat,
    EDITSTREAM& es);

参数

nFormat
指定输出数据格式的标志。 有关详细信息,请参阅备注部分。

es
EDITSTREAM 结构,指定输出流。 有关详细信息,请参阅备注部分。

返回值

写入输出流字符数。

注解

nFormat 的值必须为以下值之一:

  • SF_TEXT 指示仅写入文本。

  • SF_RTF 指示写入文本和格式。

  • SF_RTFNOOBJS 指示写入文本和格式,将 OLE 项替换为空格。

  • SF_TEXTIZED 指示使用 OLE 项的文本表示形式写入文本和格式。

这些值中的任何一个都可以与 SFF_SELECTION 结合使用。 如果指定 SFF_SELECTION,则 StreamOut 将当前选定内容写入输出流。 如果未指定,则 StreamOut 写出此 CRichEditCtrl 对象的全部内容。

EDITSTREAM 参数 es 中,指定一个用文本填充缓冲区的回调函数。 重复调用此回调函数,直到输出流耗尽。

有关详细信息,请参阅 Windows SDK 中的 EM_STREAMOUT 消息和 EDITSTREAM 结构。

示例

// 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

撤消 Rich Edit 控件中的最后一个操作。

BOOL Undo();

返回值

如果撤消操作成功,则为非 0;否则为 0。

注解

撤消操作也是可撤消的。 例如,可通过第一次调用 Undo 来还原已删除的文本。 只要没有干预编辑操作,就可再调用 Undo 一次来再次移除文本。

有关详细信息,请参阅 Windows SDK 中的 EM_UNDO

示例

请参阅 CanUndo 的示例。

另请参阅

MFC 示例 WORDPAD
CWnd
层次结构图
CEdit
CRichEditView