CRichEditView 类
利用 CRichEditDoc 和 CRichEditCntrItem 提供 MFC 文档视图体系结构上下文中 Rich Edit 控件的功能。
语法
class CRichEditView : public CCtrlView
成员
公共构造函数
名称 | 描述 |
---|---|
CRichEditView::CRichEditView | 构造 CRichEditView 对象。 |
公共方法
受保护方法
名称 | 描述 |
---|---|
CRichEditView::GetClipboardData | 检索剪贴板对象以获得在此 Rich Edit 视图中的范围。 |
CRichEditView::GetContextMenu | 检索在按下鼠标右键时使用的上下文菜单。 |
CRichEditView::IsSelected | 指示是否选中给定的 OLE 项。 |
CRichEditView::OnFindNext | 查找下一个子字符串。 |
CRichEditView::OnInitialUpdate | 在首次将视图附加到文档时刷新该视图。 |
CRichEditView::OnPasteNativeObject | 从 OLE 项检索本机数据。 |
CRichEditView::OnPrinterChanged | 将打印特征设置到给定设备。 |
CRichEditView::OnReplaceAll | 将出现的所有给定字符串替换为新字符串。 |
CRichEditView::OnReplaceSel | 替换当前选定项。 |
CRichEditView::OnTextNotFound | 处理“未找到请求文本”用户通知。 |
CRichEditView::QueryAcceptData | 查询以查看关于 IDataObject 的数据的信息。 |
CRichEditView::WrapChanged | 基于 m_nWordWrap 的值调整此 Rich Edit 视图的目标输出设备。 |
公共数据成员
“属性” | 描述 |
---|---|
CRichEditView::m_nBulletIndent | 指示项目符号列表的缩进量。 |
CRichEditView::m_nWordWrap | 指示自动换行约束。 |
备注
Rich Edit 控件是用户可以在其中输入和编辑文本的窗口。 可以为文本分配字符和段落格式,并且可以包含嵌入的 OLE 对象。 Rich Edit 控件提供一个编程接口来设置文本格式。 但是,应用程序必须实现使用户可进行格式设置操作所需的任何用户界面组件。
CRichEditView
保留文本及其格式特征。 CRichEditDoc
保留视图中的 OLE 客户端项的列表。 CRichEditCntrItem
提供对 OLE 客户端项的容器端访问。
此 Windows 通用控件(以及 CRichEditCtrl 和相关类)仅适用于在 Windows 95/98 和 Windows NT 3.51 及更高版本下运行的程序。
有关在 MFC 应用程序中使用 Rich Edit 视图的示例,请参阅 WORDPAD 示例应用程序。
继承层次结构
CRichEditView
要求
标头:afxrich.h
CRichEditView::AdjustDialogPosition
调用此函数以移动给定对话框,使其不遮盖当前选项。
void AdjustDialogPosition(CDialog* pDlg);
参数
pDlg
指向 CDialog
对象的指针。
CRichEditView::CanPaste
调用此函数以确定剪贴板是否包含可粘贴到此 Rich Edit 视图的信息。
BOOL CanPaste() const;
返回值
如果剪贴板包含的数据采用此 Rich Edit 视图可接受的格式,则返回非零值;否则返回 0。
CRichEditView::CRichEditView
调用此函数以创建 CRichEditView
对象。
CRichEditView();
CRichEditView::DoPaste
调用此函数将 dataobj 中的 OLE 项粘贴到此 Rich Edit 文档/视图。
void DoPaste(
COleDataObject& dataobj,
CLIPFORMAT cf,
HMETAFILEPICT hMetaPict);
参数
dataobj
包含要粘贴的数据的 COleDataObject。
cf
所需的剪贴板格式。
hMetaPict
表示要粘贴的项的元文件。
备注
框架调用此函数以完成 QueryAcceptData 的默认实现。
此函数根据选择性粘贴处理程序的结果确定粘贴类型。 如果 cf 为 0,则新项使用当前的图标表示形式。 如果 cf 为非零值且 hMetaPict 不为 NULL,则新项使用 hMetaPict 进行表示。
CRichEditView::FindText
调用此函数查找指定文本并设置为当前选项。
BOOL FindText(
LPCTSTR lpszFind,
BOOL bCase = TRUE,
BOOL bWord = TRUE,
BOOL bNext = TRUE);
参数
lpszFind
包含要搜索的字符串。
bCase
指示搜索是否区分大小写。
bWord
指示搜索是否应仅匹配整个字词(而非字词的一部分)。
bNext
指示搜索方向。 如果为 TRUE,则朝缓冲区的末尾搜索。 如果为 FALSE,则朝缓冲区的开头搜索。
返回值
如果找到 lpszFind 文本,则返回非零值;否则返回 0。
注解
此函数在查找操作期间显示等待光标。
示例
void CMyRichEditView::OnReplaceAll(LPCTSTR lpszFind, LPCTSTR lpszReplace,
BOOL bCase, BOOL bWord)
{
CWaitCursor wait;
// no selection or different than what we are looking for
if (!FindText(lpszFind, bCase, bWord))
{
OnTextNotFound(lpszFind);
return;
}
GetRichEditCtrl().HideSelection(TRUE, FALSE);
m_nNumReplaced = 0;
do
{
GetRichEditCtrl().ReplaceSel(lpszReplace);
m_nNumReplaced++; // Record the number of replacements
} while (FindTextSimple(lpszFind));
GetRichEditCtrl().HideSelection(FALSE, FALSE);
}
CRichEditView::FindTextSimple
调用此函数查找指定文本并设置为当前选项。
BOOL FindTextSimple(
LPCTSTR lpszFind,
BOOL bCase = TRUE,
BOOL bWord = TRUE,
BOOL bNext = TRUE);
参数
lpszFind
包含要搜索的字符串。
bCase
指示搜索是否区分大小写。
bWord
指示搜索是否应仅匹配整个字词(而非字词的一部分)。
bNext
指示搜索方向。 如果为 TRUE,则朝缓冲区的末尾搜索。 如果为 FALSE,则朝缓冲区的开头搜索。
返回值
如果找到 lpszFind 文本,则返回非零值;否则返回 0。
示例
请参阅 CRichEditView::FindText 的示例。
CRichEditView::GetCharFormatSelection
调用此函数获取当前选项的字符格式设置属性。
CHARFORMAT2& GetCharFormatSelection();
返回值
包含当前选项的字符格式设置属性的 CHARFORMAT2 结构。
备注
有关详细信息,请参阅 Windows SDK 中的 EM_GETCHARFORMAT 消息和 CHARFORMAT2 结构。
示例
void CMyRichEditView::OnCharUnderline()
{
CHARFORMAT2 cf;
cf = GetCharFormatSelection();
if (!(cf.dwMask & CFM_UNDERLINE) || !(cf.dwEffects & CFE_UNDERLINE))
cf.dwEffects = CFE_UNDERLINE;
else
cf.dwEffects = 0;
cf.dwMask = CFM_UNDERLINE;
SetCharFormat(cf);
}
CRichEditView::GetClipboardData
框架调用此函数以完成对 IRichEditOleCallback::GetClipboardData 的处理。
virtual HRESULT GetClipboardData(
CHARRANGE* lpchrg,
DWORD dwReco,
LPDATAOBJECT lpRichDataObj,
LPDATAOBJECT* lplpdataobj);
参数
lpchrg
指向 CHARRANGE 结构的指针,该结构指定要复制到 lplpdataobj 所指定数据对象的字符的范围(和 OLE 项)。
dwReco
剪贴板操作标记。 可以是下列值之一。
RECO_COPY 复制到剪贴板。
RECO_CUT 剪切到剪贴板。
RECO_DRAG 拖移操作(拖放)。
RECO_DROP 放置操作(拖放)。
RECO_PASTE 从剪贴板粘贴。
lpRichDataObj
指向 IDataObject 对象的指针,该对象包含来自 Rich Edit 控件 (IRichEditOle::GetClipboardData) 的剪贴板数据。
lplpdataobj
指向指针变量的指针,该变量接收 IDataObject
对象的地址,该对象表示 lpchrg 参数中指定的范围。 如果返回错误,则忽略 lplpdataobj 的值。
返回值
HRESULT 值,报告操作成功。 有关 HRESULT 的详细信息,请参阅 Windows SDK 中的 COM 错误代码结构。
备注
如果返回值表示成功,则 IRichEditOleCallback::GetClipboardData
返回 lplpdataobj 使用的 IDataObject
;否则,它返回 lpRichDataObj 使用的 IDataObject
。 重写此函数以提供自己的剪贴板数据。 此函数的默认实现返回 E_NOTIMPL。
这是一个高级可重写函数。
有关详细信息,请参阅 Windows SDK 中的 IRichEditOle::GetClipboardData、IRichEditOleCallback::GetClipboardData 和 CHARRANGE,并参阅 Windows SDK 中的 IDataObject。
CRichEditView::GetContextMenu
框架调用此函数以完成对 IRichEditOleCallback::GetContextMenu 的处理。
virtual HMENU GetContextMenu(
WORD seltyp,
LPOLEOBJECT lpoleobj,
CHARRANGE* lpchrg);
参数
seltyp
选项类型。 “注解”部分介绍了选项类型值。
lpoleobj
指向 OLEOBJECT
结构的指针,该指针指定选中的第一个 OLE 对象(如果选项包含一个或多个 OLE 项)。 如果选项不包含任何项,则 lpoleobj 为 NULL。 OLEOBJECT
结构包含指向 OLE 对象 v-table 的指针。
lpchrg
指向 CHARRANGE 结构的指针,该指针包含当前选项。
返回值
上下文菜单的句柄。
备注
该函数通常用于按下鼠标右键过程。
选项类型可以是以下标记的任意组合:
SEL_EMPTY 表示没有当前选项。
SEL_TEXT 表示当前选项包含文本。
SEL_OBJECT 表示当前选项包含至少一个 OLE 项。
SEL_MULTICHAR 表示当前选项包含多个文本字符。
SEL_MULTIOBJECT 表示当前选项包含多个 OLE 对象。
默认实现返回 NULL。 这是一个高级可重写函数。
有关详细信息,请参阅 Windows SDK 中的 IRichEditOleCallback::GetContextMenu 和 CHARRANGE。
CRichEditView::GetDocument
调用此函数获取指向与此视图关联的 CRichEditDoc
的指针。
CRichEditDoc* GetDocument() const;
返回值
指向与 CRichEditView
对象关联的 CRichEditDoc 对象的指针。
CRichEditView::GetInPlaceActiveItem
调用此函数获取当前在此 CRichEditView
对象中处于就地激活状态的 OLE 项。
CRichEditCntrItem* GetInPlaceActiveItem() const;
返回值
指向此 Rich Edit 视图中单个就地活动 CRichEditCntrItem 对象的指针;如果当前没有处于“就地活动”状态的 OLE 项,则为 NULL。
CRichEditView::GetMargins
调用此函数以检索打印时使用的当前边距。
CRect GetMargins() const;
返回值
打印时使用的边距(以 MM_TWIPS 为单位)。
CRichEditView::GetPageRect
调用此函数获取打印时使用的页面尺寸。
CRect GetPageRect() const;
返回值
打印时使用的页面边界(以 MM_TWIPS 为单位)。
备注
此值基于页面大小。
CRichEditView::GetPaperSize
调用此函数检索当前页面大小。
CSize GetPaperSize() const;
返回值
打印时使用的页面大小(以 MM_TWIPS 为单位)。
示例
void CMyRichEditView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
UNREFERENCED_PARAMETER(pInfo);
// Get the current paper size and construct an actual printing
// rectangle by leaving out one half inch margin from each side.
CSize sizePaper = GetPaperSize();
CRect rectMargins(720, 720, sizePaper.cx - 720,
sizePaper.cy - 720);
// Need to set the margins when printing from CRichEditView
SetMargins(rectMargins);
// Set up three rectangular regions spaced an inch apart
CRect rectHeader(0, 0, rectMargins.right, 1440);
CRect rectBody(0, 1440, rectMargins.right, 1440 * 2);
CRect rectFooter(0, 1440 * 2, rectMargins.right, 1440 * 3);
// Format the first 10 characters in the buffer.
int nSavedDC = pDC->SaveDC();
PrintInsideRect(pDC, rectHeader, 0, 10, TRUE); // characters 0-10
pDC->RestoreDC(nSavedDC);
// Format the second 10 characters in the buffer.
nSavedDC = pDC->SaveDC();
PrintInsideRect(pDC, rectBody, 10, 20, TRUE); // characters 10-20
pDC->RestoreDC(nSavedDC);
// Format the third 10 characters in the buffer.
nSavedDC = pDC->SaveDC();
PrintInsideRect(pDC, rectFooter, 20, 30, TRUE); // characters 20-30
pDC->RestoreDC(nSavedDC);
// CRichEditView::OnPrint(pDC, pInfo);
}
CRichEditView::GetParaFormatSelection
调用此函数获取当前选项的段落格式设置属性。
PARAFORMAT2& GetParaFormatSelection();
返回值
包含当前选项的段落格式设置属性的 PARAFORMAT2 结构。
备注
有关详细信息,请参阅 Windows SDK 中的 EM_GETPARAFORMAT 消息和 PARAFORMAT2 结构。
CRichEditView::GetPrintRect
调用此函数以检索页面矩形内的打印区域的边界。
CRect GetPrintRect() const;
返回值
打印时使用的图像区边界(以 MM_TWIPS 为单位)。
示例
void CMyRichEditView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
CRect rectPrintPage = GetPrintRect(); // Measured in MM_TWIPS
pInfo->SetMaxPage((m_nDocSizeInInches * 1440) / rectPrintPage.Height());
CRichEditView::OnBeginPrinting(pDC, pInfo);
}
CRichEditView::GetPrintWidth
调用此函数确定打印区域的宽度。
int GetPrintWidth() const;
返回值
打印区域的宽度(以 MM_TWIPS 为单位)。
CRichEditView::GetRichEditCtrl
调用此函数以检索与 CRichEditView
对象关联的 CRichEditCtrl 对象。
CRichEditCtrl& GetRichEditCtrl() const;
返回值
此视图的 CRichEditCtrl
对象。
示例
请参阅 CRichEditView::FindText 的示例。
CRichEditView::GetSelectedItem
调用此函数以检索当前在此 CRichEditView
对象中选中的 OLE 项(CRichEditCntrItem
对象)。
CRichEditCntrItem* GetSelectedItem() const;
返回值
指向在 CRichEditView
对象中选中的 CRichEditCntrItem 对象的指针;如果此视图中未选中任何项,则返回 NULL。
CRichEditView::GetTextLength
调用此函数以检索此 CRichEditView
对象中的文本长度。
long GetTextLength() const;
返回值
此 CRichEditView
对象中的文本的长度。
CRichEditView::GetTextLengthEx
调用此成员函数以计算此 CRichEditView
对象中的文本的长度。
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 控件。
CRichEditView::InsertFileAsObject
调用此函数以将指定文件(作为 CRichEditCntrItem 对象)插入 Rich Edit 视图。
void InsertFileAsObject(LPCTSTR lpszFileName);
参数
lpszFileName
包含要插入文件的名称的字符串。
CRichEditView::InsertItem
调用此函数以将 CRichEditCntrItem 对象插入 Rich Edit 视图。
HRESULT InsertItem(CRichEditCntrItem* pItem);
参数
pItem
指向要插入的项的指针。
返回值
HRESULT 值,表示插入成功。
备注
有关 HRESULT 的详细信息,请参阅 Windows SDK 中的 COM 错误代码结构。
CRichEditView::IsRichEditFormat
调用此函数以确定 cf 是否是剪贴板格式,即文本、富文本或带有 OLE 项的富文本。
static BOOL AFX_CDECL IsRichEditFormat(CLIPFORMAT cf);
参数
cf
相关的剪贴板格式。
返回值
如果 cf 是 Rich Edit 或文本剪贴板格式,则返回非零值。
CRichEditView::IsSelected
调用此函数以确定当前此视图中是否选中了指定的 OLE 项。
virtual BOOL IsSelected(const CObject* pDocItem) const;
参数
pDocItem
指向视图中的对象的指针。
返回值
如果对象处于选中状态,则返回非零值;否则返回 0。
注解
如果派生视图类可以使用其他方法来处理 OLE 项的选项,请重写此函数。
CRichEditView::m_nBulletIndent
列表中项目符号项的缩进量;默认为 720 个单位,即 1/2 英寸。
int m_nBulletIndent;
CRichEditView::m_nWordWrap
指示此 Rich Edit 视图的自动换行类型。
int m_nWordWrap;
备注
以下值之一:
WrapNone
表示没有自动换行。WrapToWindow
表示基于窗口宽度的自动换行。WrapToTargetDevice
表示基于目标设备特征的自动换行。
示例
请参阅 CRichEditView::WrapChanged 的示例。
CRichEditView::OnCharEffect
调用此函数以切换当前选项的字符格式设置效果。
void OnCharEffect(
DWORD dwMask,
DWORD dwEffect);
参数
dwMask
当前选项中要修改的字符格式设置效果。
dwEffect
要切换的字符格式设置效果的所需列表。
备注
调用此函数时会切换当前选项的指定格式设置效果。
有关 dwMask 和 dwEffect 参数及其可能值的详细信息,请参阅 Windows SDK 中 CHARFORMAT 的相应数据成员。
示例
void CMyRichEditView::OnItalic()
{
OnCharEffect(CFM_ITALIC, CFE_ITALIC);
}
CRichEditView::OnFindNext
在处理“查找/替换”对话框中的命令时由框架调用。
virtual void OnFindNext(
LPCTSTR lpszFind,
BOOL bNext,
BOOL bCase,
BOOL bWord);
参数
lpszFind
要查找的字符串。
bNext
搜索方向:TRUE 表示向下;FALSE 表示向上。
bCase
指示搜索是否区分大小写。
bWord
指示搜索是否仅匹配整个字词。
备注
调用此函数以在 CRichEditView
中查找文本。 重写此函数以更改派生视图类的搜索特征。
CRichEditView::OnInitialUpdate
在视图首次附加到文档之后但在最初显示视图之前,由框架调用。
virtual void OnInitialUpdate();
备注
此函数的默认实现调用不带提示信息的 CView::OnUpdate 成员函数(即,对于 lHint 参数,使用默认值 0,对于 pHint 参数,使用 NULL)。 重写此函数以执行任何需要文档信息的一次性初始化。 例如,如果应用程序具有固定大小的文档,则可以使用此函数根据文档大小初始化视图的滚动限制。 如果应用程序支持可变大小的文档,则使用 OnUpdate
在每次文档更改时更新滚动限制。
示例
请参阅 CRichEditView::m_nWordWrap 的示例。
CRichEditView::OnPasteNativeObject
使用此函数从嵌入项加载本机数据。
virtual BOOL OnPasteNativeObject(LPSTORAGE lpStg);
参数
lpStg
指向 IStorage 对象的指针。
返回值
如果成功,则返回非零值;否则返回 0;
备注
通常,可以通过以 IStorage
为中心创建 COleStreamFile 来实现此目的。 可以将 COleStreamFile
附加到存档,并且可以调用 CObject::Serialize 来加载该数据。
这是一个高级可重写函数。
有关详细信息,请参阅 Windows SDK 中的 IStorage。
CRichEditView::OnParaAlign
调用此函数以更改所选段落的段落对齐方式。
void OnParaAlign(WORD wAlign);
参数
wAlign
所需的段落对齐方式。 以下值之一:
PFA_LEFT 将段落与左边距对齐。
PFA_RIGHT 将段落与右边距对齐。
PFA_CENTER 将段落置于边距间的中央。
示例
void CMyRichEditView::OnParaCenter()
{
OnParaAlign(PFA_CENTER);
}
CRichEditView::OnPrinterChanged
重写此函数以在打印机更改时更改此 Rich Edit 视图的特征。
virtual void OnPrinterChanged(const CDC& dcPrinter);
参数
dcPrinter
新打印机的 CDC 对象。
备注
默认实现将页面大小设置为输出设备(打印机)的物理高度和宽度。 如果没有与 dcPrinter 关联的设备上下文,则默认实现将页面大小设置为 8.5 x 11 英寸。
CRichEditView::OnReplaceAll
在处理“替换”对话框中的 Replace All 命令时由框架调用。
virtual void OnReplaceAll(
LPCTSTR lpszFind,
LPCTSTR lpszReplace,
BOOL bCase,
BOOL bWord);
参数
lpszFind
要替换的文本。
lpszReplace
替换文本。
bCase
指示搜索是否区分大小写。
bWord
指示搜索是否必须选择整个字词。
备注
调用此函数以用另一个字符串替换出现的所有某些给定文本。 重写此函数以更改此视图的搜索特征。
示例
请参阅 CRichEditView::FindText 的示例。
CRichEditView::OnReplaceSel
在处理“替换”对话框中的 Replace 命令时由框架调用。
virtual void OnReplaceSel(
LPCTSTR lpszFind,
BOOL bNext,
BOOL bCase,
BOOL bWord,
LPCTSTR lpszReplace);
参数
lpszFind
要替换的文本。
bNext
指示搜索方向:TRUE 表示向下;FALSE 表示向上。
bCase
指示搜索是否区分大小写。
bWord
指示搜索是否必须选择整个字词。
lpszReplace
替换文本。
备注
调用此函数以用另一个字符串替换出现的一个某些给定文本。 重写此函数以更改此视图的搜索特征。
CRichEditView::OnTextNotFound
在搜索失败时由框架调用。
virtual void OnTextNotFound(LPCTSTR lpszFind);
参数
lpszFind
未找到的文本。
注解
重写此函数以更改 MessageBeep 的输出通知。
有关详细信息,请参阅 Windows SDK 中的 MessageBeep。
示例
void CMyRichEditView::OnTextNotFound(LPCTSTR lpszFind)
{
// Replace the beep with a message box
CString str;
str.Format(_T("'%s' was not found."), lpszFind);
AfxMessageBox(str);
}
CRichEditView::OnUpdateCharEffect
框架调用此函数来更新字符效果命令的命令 UI。
void OnUpdateCharEffect(
CCmdUI* pCmdUI,
DWORD dwMask,
DWORD dwEffect);
参数
pCmdUI
指向 CCmdUI 对象的指针。
dwMask
表示字符格式设置掩码。
dwEffect
表示字符格式设置效果。
备注
掩码 dwMask 指定要检查的字符格式设置属性。 标记 dwEffect 列出要设置/清除的字符格式设置属性。
有关 dwMask 和 dwEffect 参数及其可能值的详细信息,请参阅 Windows SDK 中 CHARFORMAT 的相应数据成员。
示例
void CMyRichEditView::OnUpdateCharItalicUI(CCmdUI* pCmdUI)
{
OnUpdateCharEffect(pCmdUI, CFM_ITALIC, CFE_ITALIC);
}
CRichEditView::OnUpdateParaAlign
框架调用此函数来更新段落效果命令的命令 UI。
void OnUpdateParaAlign(
CCmdUI* pCmdUI,
WORD wAlign);
参数
pCmdUI
指向 CCmdUI 对象的指针。
wAlign
要检查的段落对齐方式。 以下值之一:
PFA_LEFT 将段落与左边距对齐。
PFA_RIGHT 将段落与右边距对齐。
PFA_CENTER 将段落置于边距间的中央。
示例
void CMyRichEditView::OnUpdateParaCenterUI(CCmdUI* pCmdUI)
{
OnUpdateParaAlign(pCmdUI, PFA_CENTER);
}
CRichEditView::PrintInsideRect
调用此函数以对 Rich Edit 控件中的一系列文本进行格式设置,以适配 pDC 指定的设备的 rectLayout。
long PrintInsideRect(
CDC* pDC,
RECT& rectLayout,
long nIndexStart,
long nIndexStop,
BOOL bOutput);
参数
pDC
指向输出区域的设备上下文的指针。
rectLayout
定义输出区域的 RECT 或 CRect。
nIndexStart
要设置格式的第一个字符的从零开始的索引。
nIndexStop
要设置格式的最后一个字符的从零开始的索引。
bOutput
指示是否应呈现文本。 如果为 FALSE,则仅测量文本。
返回值
适配输出区域的最后一个字符的索引加一。
备注
通常,在此调用之后,会调用生成输出的 CRichEditCtrl::DisplayBand。
示例
请参阅 CRichEditView::GetPaperSize 的示例。
CRichEditView::PrintPage
调用此函数以对 Rich Edit 控件中的一系列文本进行格式设置,用于 pDC 指定的输出设备。
long PrintPage(
CDC* pDC,
long nIndexStart,
long nIndexStop);
参数
pDC
指向用于页面输出的设备上下文的指针。
nIndexStart
要设置格式的第一个字符的从零开始的索引。
nIndexStop
要设置格式的最后一个字符的从零开始的索引。
返回值
适配页面的最后一个字符的索引加一。
注解
每个页面的布局由 GetPageRect 和 GetPrintRect 控制。 通常,在此调用之后,会调用生成输出的 CRichEditCtrl::DisplayBand。
请注意,边距是基于物理页面,而不是逻辑页面。 因此,由于许多打印机在页面上有不可打印的区域,因此零边距通常会剪裁文本。 为避免剪裁文本,应在打印前调用 SetMargins 并设置合理的边距。
CRichEditView::QueryAcceptData
由框架调用以将对象粘贴到 Rich Edit 中。
virtual HRESULT QueryAcceptData(
LPDATAOBJECT lpdataobj,
CLIPFORMAT* lpcfFormat,
DWORD dwReco,
BOOL bReally,
HGLOBAL hMetaFile);
参数
lpdataobj
指向要查询的 IDataObject 的指针。
lpcfFormat
指向可接受的数据格式的指针。
dwReco
未使用。
bReally
指示粘贴操作是否应继续。
hMetaFile
用于绘制项图标的元文件的句柄。
返回值
HRESULT 值,报告操作成功。
备注
重写此函数以处理派生文档类中各种结构的 COM 项。 这是一个高级可重写函数。
有关 HRESULT 和 IDataObject
的详细信息,请分别参阅 Windows SDK 中的 COM 错误代码结构和 IDataObject。
示例
// This code fragment is taken from the Wordpad sample.
HRESULT CMyRichEditView::QueryAcceptData(LPDATAOBJECT lpdataobj,
CLIPFORMAT* lpcfFormat, DWORD dwReco, BOOL bReally, HGLOBAL hMetaFile)
{
if (bReally && *lpcfFormat == 0 && (m_nPasteType == 0))
{
COleDataObject dataobj;
dataobj.Attach(lpdataobj, FALSE);
if (!dataobj.IsDataAvailable(cfRTO)) // native avail, let
// richedit do as it wants
{
if (dataobj.IsDataAvailable(cfEmbeddedObject))
{
if (PasteNative(lpdataobj)) // See WordPad sample for info
// on PasteNative
return S_FALSE;
}
}
}
return CRichEditView::QueryAcceptData(lpdataobj, lpcfFormat, dwReco,
bReally, hMetaFile);
}
CRichEditView::SetCharFormat
调用此函数以设置此 CRichEditView
对象中新文本的字符格式设置属性。
void SetCharFormat(CHARFORMAT2 cf);
参数
cf
CHARFORMAT2 结构,该结构包含新的默认字符格式设置属性。
备注
此函数仅更改 cf 的 dwMask
成员指定的属性。
有关详细信息,请参阅 Windows SDK 中的 EM_SETCHARFORMAT 消息和 CHARFORMAT2 结构。
示例
void CMyRichEditView::OnCharUnderline()
{
CHARFORMAT2 cf;
cf = GetCharFormatSelection();
if (!(cf.dwMask & CFM_UNDERLINE) || !(cf.dwEffects & CFE_UNDERLINE))
cf.dwEffects = CFE_UNDERLINE;
else
cf.dwEffects = 0;
cf.dwMask = CFM_UNDERLINE;
SetCharFormat(cf);
}
CRichEditView::SetMargins
调用此函数来设置此 Rich Edit 视图的打印边距。
void SetMargins(const CRect& rectMargin);
参数
rectMargin
新的打印边距值(以 MM_TWIPS 为单位)。
注解
如果 m_nWordWrap 为 WrapToTargetDevice
,则应在使用此函数调整打印特征后调用 WrapChanged。
请注意,PrintPage 使用的边距是基于物理页面,而非逻辑页面。 因此,由于许多打印机在页面上有不可打印的区域,因此零边距通常会剪裁文本。 为避免剪裁文本,应在打印前调用 use SetMargins
设置合理的打印机边距。
示例
请参阅 CRichEditView::GetPaperSize 的示例。
CRichEditView::SetPaperSize
调用此函数来设置打印此 Rich Edit 视图的页面大小。
void SetPaperSize(CSize sizePaper);
参数
sizePaper
新的打印页面大小值(以 MM_TWIPS 为单位)。
备注
如果 m_nWordWrap 为 WrapToTargetDevice
,则应在使用此函数调整打印特征后调用 WrapChanged。
示例
BOOL CMyRichEditView::OnPreparePrinting(CPrintInfo* pInfo)
{
// Set the printing margins (720 twips = 1/2 inch).
SetMargins(CRect(720, 720, 720, 720));
// Change the paper orientation to landscape mode
// See the example for CWinApp::GetPrinterDeviceDefaults
((CMyWinApp*)AfxGetApp())->SetLandscapeMode();
// Change the paper size in the CRichEditView to
// reflect landscape mode
CSize csPaper = GetPaperSize();
int temp;
temp = csPaper.cx; csPaper.cx = csPaper.cy; csPaper.cy = temp;
SetPaperSize(csPaper);
return DoPreparePrinting(pInfo);
}
CRichEditView::SetParaFormat
调用此函数来设置此 CRichEditView
对象中当前选项的段落格式设置属性。
BOOL SetParaFormat(PARAFORMAT2& pf);
参数
pf
PARAFORMAT2 结构,该结构包含新的默认段落格式设置属性。
返回值
如果成功,则返回非零值;否则返回 0。
注解
此函数仅更改 pf 的 dwMask
成员指定的属性。
有关详细信息,请参阅 Windows SDK 中的 EM_SETPARAFORMAT 消息和 PARAFORMAT2 结构。
示例
void CMyRichEditView::AddBullets()
{
PARAFORMAT2 pf;
pf.cbSize = sizeof(PARAFORMAT2);
pf.dwMask = PFM_NUMBERING | PFM_OFFSET;
pf.wNumbering = PFN_BULLET;
pf.dxOffset = 10;
VERIFY(SetParaFormat(pf));
}
CRichEditView::TextNotFound
调用此函数以在调用 FindText 失败后重置 CRichEditView 控件的内部搜索状态。
void TextNotFound(LPCTSTR lpszFind);
参数
lpszFind
包含未找到的文本字符串。
注解
建议在调用 FindText 失败后立即调用此方法,以便正确重置控件的内部搜索状态。
lpszFind 参数应包含提供给 FindText 的字符串所包含的内容。 重置内部搜索状态后,此方法将使用提供的搜索字符串调用 OnTextNotFound 方法。
示例
请参阅 CRichEditView::FindText 的示例。
CRichEditView::WrapChanged
在打印特征(SetMargins 或 SetPaperSize)发生变化时调用此函数。
virtual void WrapChanged();
备注
重写此函数以修改 Rich Edit 视图响应 m_nWordWrap 或打印特征 (OnPrinterChanged) 更改的方式。
示例
void CMyRichEditView::OnInitialUpdate()
{
CRichEditView::OnInitialUpdate();
// Turn on the horizontal scroll bar
m_nWordWrap = WrapNone;
WrapChanged();
}
另请参阅
MFC 示例 WORDPAD
CCtrlView 类
层次结构图
CRichEditDoc 类
CRichEditCntrItem 类