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 示例应用程序。
继承层次结构
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_NCCREATE
、WM_NCCALCSIZE
、WM_CREATE
和 WM_GETMINMAXINFO
消息发送到编辑控件。
默认情况下,这些消息由 CWnd
基类中的 OnNcCreate
、OnNcCalcSize
、OnCreate
和 OnGetMinMaxInfo
成员函数处理。 若要扩展默认消息处理,请从 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 中 CreateWindowEx
的 dwExStyle
参数。
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
指向 RECT
或 CRect
对象的指针,这些对象指定显示文本的设备区域。
返回值
如果格式化文本显示成功,则为非零值,否则为 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 扩展,用于保存默认字符格式设置属性。
返回值
cf
的 dwMask
数据成员。 它指定了默认字符格式设置属性。
注解
有关详细信息,请参阅 Windows SDK 中的 EM_GETCHARFORMAT
消息以及 CHARFORMAT
和 CHARFORMAT2
结构。
示例
请参阅 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 扩展,用于保存默认字符格式设置属性。
返回值
pf
的 dwMask
数据成员。 它指定在当前选定内容中保持一致的段落格式设置属性。
备注
如果选择多个段落,pf
将接收第一个选定段落的属性。 返回值指定选项中哪些属性是一致的。
有关详细信息,请参阅 Windows SDK 中的 EM_GETPARAFORMAT
消息以及 PARAFORMAT
和 PARAFORMAT2
结构。
示例
请参阅 CRichEditCtrl::SetParaFormat
的示例。
CRichEditCtrl::GetPunctuation
获取 Rich Edit 控件中的当前标点字符。
BOOL GetPunctuation(
UINT fType,
PUNCTUATION* lpPunc) const;
参数
fType
标点类型标志,如 Windows SDK 中 EM_GETPUNCTUATION
的 fType
参数中所述。
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
) 此窗体使用CHARRANGE
结构及其成员cpMin
cpMax
返回边界。GetSel(
nStartChar
,nEndChar
) 此窗体返回参数nStartChar
中的边界和 。nEndChar
如果开头(cpMin
或 nStartChar
)为 0,结尾(cpMax
或 nEndChar
)为 - 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 扩展,用于接收当前选定内容的字符格式设置属性。
返回值
cf
的 dwMask
数据成员。 它指定在当前选定内容中保持一致的字符格式设置属性。
备注
cf
参数接收当前选定内容中第一个字符的属性。 返回值指定选项中哪些属性是一致的。
有关详细信息,请参阅 Windows SDK 中的 EM_GETCHARFORMAT
消息以及 CHARFORMAT
和 CHARFORMAT2
结构。
示例
请参阅 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
指示是否应永久更改所选内容的可见性。
备注
如果 bPerm
为 TRUE
,它将更改此 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_RIGHT
或 ES_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
设置为 TRUE
。 SetAutoURLDetect
对 URL 启用此效果,对所有其他文本禁用此效果。 有关 CFE_LINK
效果的详细信息,请参阅 EN_LINK。
CRichEditCtrl::SetBackgroundColor
设置此 CRichEditCtrl
对象的背景色。
COLORREF SetBackgroundColor(
BOOL bSysColor,
COLORREF cr);
参数
bSysColor
指示背景色是否应设置为系统值。 如果此值为 TRUE
,则忽略 cr
。
cr
请求的背景色。 仅当 bSysColor
为 FALSE
时使用。
返回值
此 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。
注解
此函数仅更改 cf
的 dwMask
成员指定的属性。
有关详细信息,请参阅 Windows SDK 中的 EM_SETCHARFORMAT
消息以及 CHARFORMAT
和 CHARFORMAT2
结构。
示例
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。
注解
此函数仅更改 pf
的 dwMask
成员指定的属性。
有关详细信息,请参阅 Windows SDK 中的 EM_SETPARAFORMAT
消息以及 PARAFORMAT
和 PARAFORMAT2
结构。
示例
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_SETPUNCTUATION
的 fType
参数。
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
) 此窗体使用CHARRANGE
结构及其成员cpMin
cpMax
来设置边界。SetSel(
nStartChar
,nEndChar
) 此窗体使用参数nStartChar
和 nEndChar 设置边界。
插入符号放置在所选内容末尾,由起始(cpMin
或 nStartChar
)和结束(cpMax
或 nEndChar
)索引的较大值表示。 此函数滚动 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_SETCHARFORMAT
CHARFORMAT
和 CHARFORMAT2
结构。
示例
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。
注解
此函数仅更改 cf
的 dwMask
成员指定的属性。
有关详细信息,请参阅 Windows SDK 中的 EM_SETCHARFORMAT
消息以及 CHARFORMAT
和 CHARFORMAT2
结构。
示例
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_SELECTION
,StreamIn
会将当前选定内容替换为输入流的内容。 如果未指定,则 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
的示例。