CRichEditView 类

利用 CRichEditDocCRichEditCntrItem 提供 MFC 文档视图体系结构上下文中 Rich Edit 控件的功能。

语法

class CRichEditView : public CCtrlView

成员

公共构造函数

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

公共方法

名称 描述
CRichEditView::AdjustDialogPosition 移动对话框,使其不遮盖当前选项。
CRichEditView::CanPaste 判断剪贴板是否包含可粘贴到 Rich Edit 视图的数据。
CRichEditView::DoPaste 将 OLE 项粘贴到此 Rich Edit 视图。
CRichEditView::FindText 查找指定文本,并调用等待光标。
CRichEditView::FindTextSimple 查找指定文本。
CRichEditView::GetCharFormatSelection 检索当前选项的字符格式设置属性。
CRichEditView::GetDocument 检索指向相关 CRichEditDoc 的指针。
CRichEditView::GetInPlaceActiveItem 检索 Rich Edit 视图中当前处于就地活动状态的 OLE 项。
CRichEditView::GetMargins 检索此 Rich Edit 视图的边距。
CRichEditView::GetPageRect 检索此 Rich Edit 视图的页面矩形。
CRichEditView::GetPaperSize 检索此 Rich Edit 视图的页面大小。
CRichEditView::GetParaFormatSelection 检索当前选项的段落格式设置属性。
CRichEditView::GetPrintRect 检索此 Rich Edit 视图的打印矩形。
CRichEditView::GetPrintWidth 检索此 Rich Edit 视图的打印宽度。
CRichEditView::GetRichEditCtrl 检索 Rich Edit 控件。
CRichEditView::GetSelectedItem 从 Rich Edit 视图检索选定项。
CRichEditView::GetTextLength 检索 Rich Edit 视图中文本的长度。
CRichEditView::GetTextLengthEx 检索 Rich Edit 视图中的字符数或字节数。 长度确定方法的扩展标记列表。
CRichEditView::InsertFileAsObject 将文件作为 OLE 项插入。
CRichEditView::InsertItem 将新项作为 OLE 项插入。
CRichEditView::IsRichEditFormat 判断剪贴板是否包含 Rich Edit 或文本格式的数据。
CRichEditView::OnCharEffect 切换当前选项的字符格式设置。
CRichEditView::OnParaAlign 更改段落的对齐方式。
CRichEditView::OnUpdateCharEffect 更新字符公共成员函数的命令 UI。
CRichEditView::OnUpdateParaAlign 更新段落公共成员函数的命令 UI。
CRichEditView::PrintInsideRect 设置给定矩形内的指定文本的格式。
CRichEditView::PrintPage 设置给定页面内的指定文本的格式。
CRichEditView::SetCharFormat 设置当前选项的字符格式设置属性。
CRichEditView::SetMargins 设置此 Rich Edit 视图的边距。
CRichEditView::SetPaperSize 设置此 Rich Edit 视图的页面大小。
CRichEditView::SetParaFormat 设置当前选项的段落格式设置属性。
CRichEditView::TextNotFound 重置控件的内部搜索状态。

受保护方法

名称 描述
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 示例应用程序。

继承层次结构

CObject

CCmdTarget

CWnd

CView

CCtrlView

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::GetClipboardDataIRichEditOleCallback::GetClipboardDataCHARRANGE,并参阅 Windows SDK 中的 IDataObject

CRichEditView::GetContextMenu

框架调用此函数以完成对 IRichEditOleCallback::GetContextMenu 的处理。

virtual HMENU GetContextMenu(
    WORD seltyp,
    LPOLEOBJECT lpoleobj,
    CHARRANGE* lpchrg);

参数

seltyp
选项类型。 “注解”部分介绍了选项类型值。

lpoleobj
指向 OLEOBJECT 结构的指针,该指针指定选中的第一个 OLE 对象(如果选项包含一个或多个 OLE 项)。 如果选项不包含任何项,则 lpoleobj 为 NULLOLEOBJECT 结构包含指向 OLE 对象 v-table 的指针。

lpchrg
指向 CHARRANGE 结构的指针,该指针包含当前选项。

返回值

上下文菜单的句柄。

备注

该函数通常用于按下鼠标右键过程。

选项类型可以是以下标记的任意组合:

  • SEL_EMPTY 表示没有当前选项。

  • SEL_TEXT 表示当前选项包含文本。

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

  • SEL_MULTICHAR 表示当前选项包含多个文本字符。

  • SEL_MULTIOBJECT 表示当前选项包含多个 OLE 对象。

默认实现返回 NULL。 这是一个高级可重写函数。

有关详细信息,请参阅 Windows SDK 中的 IRichEditOleCallback::GetContextMenuCHARRANGE

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
定义输出区域的 RECTCRect

nIndexStart
要设置格式的第一个字符的从零开始的索引。

nIndexStop
要设置格式的最后一个字符的从零开始的索引。

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

返回值

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

备注

通常,在此调用之后,会调用生成输出的 CRichEditCtrl::DisplayBand

示例

请参阅 CRichEditView::GetPaperSize 的示例。

CRichEditView::PrintPage

调用此函数以对 Rich Edit 控件中的一系列文本进行格式设置,用于 pDC 指定的输出设备

long PrintPage(
    CDC* pDC,
    long nIndexStart,
    long nIndexStop);

参数

pDC
指向用于页面输出的设备上下文的指针。

nIndexStart
要设置格式的第一个字符的从零开始的索引。

nIndexStop
要设置格式的最后一个字符的从零开始的索引。

返回值

适配页面的最后一个字符的索引加一。

注解

每个页面的布局由 GetPageRectGetPrintRect 控制。 通常,在此调用之后,会调用生成输出的 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_nWordWrapWrapToTargetDevice,则应在使用此函数调整打印特征后调用 WrapChanged

请注意,PrintPage 使用的边距是基于物理页面,而非逻辑页面。 因此,由于许多打印机在页面上有不可打印的区域,因此零边距通常会剪裁文本。 为避免剪裁文本,应在打印前调用 use SetMargins 设置合理的打印机边距。

示例

请参阅 CRichEditView::GetPaperSize 的示例。

CRichEditView::SetPaperSize

调用此函数来设置打印此 Rich Edit 视图的页面大小。

void SetPaperSize(CSize sizePaper);

参数

sizePaper
新的打印页面大小值(以 MM_TWIPS 为单位)。

备注

如果 m_nWordWrapWrapToTargetDevice,则应在使用此函数调整打印特征后调用 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

在打印特征(SetMarginsSetPaperSize)发生变化时调用此函数。

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 类