Поделиться через


Класс CRichEditView

CRichEditDoc и CRichEditCntrItem предоставляет функциональные возможности элемента управления расширенными изменениями в контексте архитектуры представления документов MFC.

Синтаксис

class CRichEditView : public CCtrlView

Участники

Открытые конструкторы

Имя Описание
CRichEditView::CRichEditView Формирует объект CRichEditView.

Открытые методы

Имя Описание
CRichEditView::AdjustDialogPosition Перемещает диалоговое окно таким образом, чтобы он не отображал текущее выделение.
CRichEditView::CanPaste Указывает, содержит ли буфер обмена данные, которые можно вставить в представление полного редактирования.
CRichEditView::D oPaste Вставляет элемент OLE в это расширенное представление редактирования.
CRichEditView::FindText Находит указанный текст, вызывая курсор ожидания.
CRichEditView::FindTextSimple Находит указанный текст.
CRichEditView::GetCharFormatSelection Извлекает атрибуты форматирования символов для текущего выделенного фрагмента.
CRichEditView::GetDocument Извлекает указатель на связанный CRichEditDoc.
CRichEditView::GetInPlaceActiveItem Извлекает элемент OLE, который в настоящее время активен в режиме расширенного редактирования.
CRichEditView::GetMargins Извлекает поля для этого расширенного представления редактирования.
CRichEditView::GetPageRect Извлекает прямоугольник страницы для этого расширенного представления редактирования.
CRichEditView::GetPaperSize Извлекает размер бумаги для этого расширенного представления редактирования.
CRichEditView::GetParaFormatSelection Извлекает атрибуты форматирования абзаца для текущего выделенного фрагмента.
CRichEditView::GetPrintRect Извлекает прямоугольник печати для этого расширенного представления редактирования.
CRichEditView::GetPrintWidth Извлекает ширину печати для этого расширенного представления редактирования.
CRichEditView::GetRichEditCtrl Извлекает элемент управления расширенными изменениями.
CRichEditView::GetSelectedItem Извлекает выбранный элемент из представления полного редактирования.
CRichEditView::GetTextLength Извлекает длину текста в режиме расширенного редактирования.
CRichEditView::GetTextLengthEx Извлекает количество символов или байтов в режиме полного редактирования. Развернутый список флагов для метода определения длины.
CRichEditView::InsertFileAsObject Вставляет файл в виде элемента OLE.
CRichEditView::InsertItem Вставляет новый элемент в виде элемента OLE.
CRichEditView::IsRichEditFormat Указывает, содержит ли буфер обмена данные в формате форматированного редактирования или текста.
CRichEditView::OnCharEffect Переключение форматирования символов для текущего выделенного фрагмента.
CRichEditView::OnParaAlign Изменяет выравнивание абзацев.
CRichEditView::OnUpdateCharEffect Обновляет пользовательский интерфейс команды для функций общедоступных элементов символов.
CRichEditView::OnUpdateParaAlign Обновляет пользовательский интерфейс команды для функций открытых элементов абзаца.
CRichEditView::P rintInsideRect Форматирует указанный текст в заданном прямоугольнике.
CRichEditView::P rintPage Форматирует указанный текст на данной странице.
CRichEditView::SetCharFormat Задает атрибуты форматирования символов для текущего выделенного фрагмента.
CRichEditView::SetMargins Задает поля для этого расширенного представления редактирования.
CRichEditView::SetPaperSize Задает размер бумаги для этого расширенного представления редактирования.
CRichEditView::SetParaFormat Задает атрибуты форматирования абзаца для текущего выбора.
CRichEditView::TextNotFound Сбрасывает внутреннее состояние поиска элемента управления.

Защищенные методы

Имя Описание
CRichEditView::GetClipboardData Извлекает объект буфера обмена для диапазона в этом расширенном представлении редактирования.
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.

Открытые члены данных

Имя Описание
CRichEditView::m_nBulletIndent Указывает объем отступа для списков маркеров.
CRichEditView::m_nWordWrap Указывает ограничения оболочки слов.

Замечания

Элемент управления расширенными изменениями — это окно, в котором пользователь может ввести и изменить текст. Текст можно назначить символьным и абзацным форматированием и включать внедренные объекты OLE. Элементы управления расширенными изменениями предоставляют интерфейс программирования для форматирования текста. Однако приложение должно реализовать все компоненты пользовательского интерфейса, необходимые для обеспечения доступности операций форматирования для пользователя.

CRichEditView поддерживает характер текста и форматирования текста. CRichEditDoc поддерживает список клиентских элементов OLE, которые находятся в представлении. CRichEditCntrItem предоставляет доступ на стороне контейнера к клиентскому элементу OLE.

Этот общий элемент управления Windows (и, следовательно , классы CRichEditCtrl и связанные с ним классы) доступен только для программ под управлением Windows 95/98 и Windows NT версии 3.51 и более поздних версий.

Пример использования расширенного представления редактирования в приложении MFC см. в примере приложения WORDPAD .

Иерархия наследования

CObject

CCmdTarget

CWnd

CView

CCtrlView

CRichEditView

Требования

Заголовок: afxrich.h

CRichEditView::AdjustDialogPosition

Вызовите эту функцию, чтобы переместить заданное диалоговое окно, чтобы оно не скрывалось текущего выбора.

void AdjustDialogPosition(CDialog* pDlg);

Параметры

pDlg
Указатель на CDialog объект.

CRichEditView::CanPaste

Вызовите эту функцию, чтобы определить, содержит ли буфер обмена сведения, которые можно вставить в это расширенное представление редактирования.

BOOL CanPaste() const;

Возвращаемое значение

Ненулевое значение, если буфер обмена содержит данные в формате, который может принимать это расширенное представление редактирования; в противном случае — значение 0.

CRichEditView::CRichEditView

Вызовите эту функцию для создания CRichEditView объекта.

CRichEditView();

CRichEditView::D oPaste

Вызовите эту функцию, чтобы вставить элемент OLE в dataobj в этот расширенный документ или представление.

void DoPaste(
    COleDataObject& dataobj,
    CLIPFORMAT cf,
    HMETAFILEPICT hMetaPict);

Параметры

dataobj
COleDataObject, содержащий данные для вставки.

cf
Нужный формат буфера обмена.

hMetaPict
Метафайл, представляющий вставленный элемент.

Замечания

Платформа вызывает эту функцию как часть реализации QueryAcceptData по умолчанию.

Эта функция определяет тип вставки на основе результатов обработчика для вставки special. Если значение 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 , содержащая атрибуты форматирования символов текущего выделенного фрагмента.

Замечания

Дополнительные сведения см. в сообщении EM_GETCHARFORMAT и структуре CHARFORMAT2 в пакете SDK для Windows.

Пример

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 , указывающую диапазон символов (и ЭЛЕМЕНТОВ OLE) для копирования в объект данных, указанный lplpdataobj.

dwReco
Флаг операции буфера обмена. Может быть одним из этих значений.

  • RECO_COPY Копировать в буфер обмена.

  • RECO_CUT Вырезать буфер обмена.

  • RECO_DRAG операции перетаскивания (перетаскивание и перетаскивание).

  • RECO_DROP операция удаления (перетаскивание и перетаскивание).

  • RECO_PASTE Вставка из буфера обмена.

lpRichDataObj
Указатель на объект IDataObject , содержащий данные буфера обмена из элемента управления расширенными изменениями ( IRichEditOle::GetClipboardData).

lplpdataobj
Указатель на переменную указателя, которая получает адрес IDataObject объекта, представляющего диапазон, указанный в параметре lpchrg . Значение lplpdataobj игнорируется, если возвращается ошибка.

Возвращаемое значение

Значение HRESULT сообщает об успешном выполнении операции. Дополнительные сведения о HRESULT см. в разделе "Структура кодов ошибок COM" в пакете SDK для Windows.

Замечания

Если возвращаемое значение указывает на успешное выполнение, IRichEditOleCallback::GetClipboardData возвращает доступ к lplpdataobj; в противном случае возвращается доступ к нему с помощью lpRichDataObj.IDataObject Переопределите эту функцию, чтобы предоставить собственные данные буфера обмена. Реализация этой функции по умолчанию возвращает E_NOTIMPL.

Это расширенная переопределение.

Дополнительные сведения см. в разделе IRichEditOle::GetClipboardData, IRichEditOleCallback::GetClipboardData и CHARRANGE в пакете SDK для Windows и см. в разделе IDataObject в пакете SDK для Windows.

CRichEditView::GetContextMenu

Платформа вызывает эту функцию как часть обработки IRichEditOleCallback::GetContextMenu.

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

Параметры

seltyp
Тип выбора. Значения типа выбора описаны в разделе "Примечания".

lpoleobj
Указатель на структуру, указывающую первый выбранный OLEOBJECT объект OLE, если выбор содержит один или несколько элементов OLE. Если выбор не содержит элементов, значение lpoleobj равно NULL. Структура OLEOBJECT содержит указатель на таблицу v-table объекта OLE.

lpchrg
Указатель на структуру CHARRANGE , содержащую текущий выбор.

Возвращаемое значение

Обработка контекстного меню.

Замечания

Эта функция является типичной частью обработки правой кнопки мыши вниз.

Тип выбора может быть любым сочетанием следующих флагов:

  • SEL_EMPTY Указывает, что текущий выбор отсутствует.

  • SEL_TEXT Указывает, что текущий выделенный фрагмент содержит текст.

  • SEL_OBJECT Указывает, что текущий выбор содержит хотя бы один элемент OLE.

  • SEL_MULTICHAR Указывает, что текущий выделенный фрагмент содержит несколько символов текста.

  • SEL_MULTIOBJECT Указывает, что текущий выбор содержит несколько объектов OLE.

Реализация по умолчанию возвращает ЗНАЧЕНИЕ NULL. Это расширенная переопределение.

Дополнительные сведения см. в разделе IRichEditOleCallback::GetContextMenu и CHARRANGE в пакете SDK для Windows.

CRichEditView::GetDocument

Вызовите эту функцию, чтобы получить указатель на связанный CRichEditDoc с этим представлением.

CRichEditDoc* GetDocument() const;

Возвращаемое значение

Указатель на объект CRichEditDoc, связанный с CRichEditView объектом.

CRichEditView::GetInPlaceActiveItem

Вызовите эту функцию, чтобы получить элемент OLE, который в настоящее время активируется на месте в этом CRichEditView объекте.

CRichEditCntrItem* GetInPlaceActiveItem() const;

Возвращаемое значение

Указатель на один активный объект CRichEditCntrItem в этом расширенном представлении редактирования; ЗНАЧЕНИЕ NULL, если в данный момент в активном состоянии нет элемента OLE.

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 , содержащая атрибуты форматирования абзаца текущего выделенного фрагмента.

Замечания

Дополнительные сведения см. в разделе EM_GETPARAFORMAT сообщения и структуры PARAFORMAT2 в пакете SDK для Windows.

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

Вызовите эту функцию, чтобы получить объект CRichEditCtrl , связанный CRichEditView с объектом.

CRichEditCtrl& GetRichEditCtrl() const;

Возвращаемое значение

Объект CRichEditCtrl для этого представления.

Пример

См. пример для CRichEditView::FindText.

CRichEditView::GetSelectedItem

Вызовите эту функцию, чтобы получить элемент OLE ( CRichEditCntrItem объект), выбранный в данный момент в этом CRichEditView объекте.

CRichEditCntrItem* GetSelectedItem() const;

Возвращаемое значение

Указатель на объект CRichEditCntrItem, выбранный в объектеCRichEditView; ЗНАЧЕНИЕ NULL, если элемент не выбран в этом представлении.

CRichEditView::GetTextLength

Вызовите эту функцию, чтобы получить длину текста в этом CRichEditView объекте.

long GetTextLength() const;

Возвращаемое значение

Длина текста в этом CRichEditView объекте.

CRichEditView::GetTextLengthEx

Вызовите эту функцию-член, чтобы вычислить длину текста в этом CRichEditView объекте.

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

Параметры

dwFlags
Значение, указывающее метод, используемый при определении длины текста. Этот элемент может быть одним или несколькими значениями, перечисленными в элементе флагов GETTEXTLENGTHEX , описанном в пакете SDK для Windows.

uCodePage
Кодовая страница для перевода (CP_ACP для кодовой страницы ANSI, 1200 для Юникода).

Возвращаемое значение

Количество символов или байтов в элементе управления редактированием. Если несовместимые флаги были заданы в dwFlags, эта функция-член возвращает E_INVALIDARG.

Замечания

GetTextLengthEx предоставляет дополнительные способы определения длины текста. Она поддерживает функциональные возможности Rich Edit 2.0. Дополнительные сведения см. в статье "О расширенных элементах управления изменениями " в пакете SDK для Windows.

CRichEditView::InsertFileAsObject

Вызовите эту функцию, чтобы вставить указанный файл (как объект CRichEditCntrItem ) в расширенное представление редактирования.

void InsertFileAsObject(LPCTSTR lpszFileName);

Параметры

lpszFileName
Строка, содержащая имя вставленного файла.

CRichEditView::InsertItem

Вызовите эту функцию, чтобы вставить объект CRichEditCntrItem в расширенное представление редактирования.

HRESULT InsertItem(CRichEditCntrItem* pItem);

Параметры

pItem
Указатель на вставленный элемент.

Возвращаемое значение

Значение HRESULT, указывающее успешность вставки.

Замечания

Дополнительные сведения о HRESULT см. в разделе "Структура кодов ошибок COM" в пакете SDK для Windows.

CRichEditView::IsRichEditFormat

Вызовите эту функцию, чтобы определить, является ли cf форматом буфера обмена, который является текстом, форматированным текстом или форматированным текстом с элементами OLE.

static BOOL AFX_CDECL IsRichEditFormat(CLIPFORMAT cf);

Параметры

cf
Формат буфера обмена.

Возвращаемое значение

Ненулевое значение, если cf является форматом полного редактирования или текстового буфера обмена.

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

Указывает тип оболочки слов для этого расширенного представления редактирования.

int m_nWordWrap;

Замечания

Одно из следующих значений:

  • WrapNone Указывает, что автоматическая оболочка слов отсутствует.

  • WrapToWindow Указывает оболочку слов на основе ширины окна.

  • WrapToTargetDevice Указывает оболочку слов на основе характеристик целевого устройства.

Пример

См. пример для CRichEditView::WrapChanged.

CRichEditView::OnCharEffect

Вызовите эту функцию, чтобы переключить эффекты форматирования символов для текущего выделенного фрагмента.

void OnCharEffect(
    DWORD dwMask,
    DWORD dwEffect);

Параметры

dwMask
Эффекты форматирования символов для изменения в текущем выделенном фрагменте.

dwEffect
Требуемый список эффектов форматирования символов для переключения.

Замечания

Каждый вызов этой функции переключает указанные эффекты форматирования для текущего выбора.

Дополнительные сведения о параметрах dwMask и dwEffect и их потенциальных значениях см. в соответствующих элементах данных CHARFORMAT в пакете SDK для Windows.

Пример

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 без сведений о подсказке (то есть, используя значения по умолчанию 0 для параметра lHint и NULL для параметра pHint). Переопределите эту функцию для выполнения однократной инициализации, требующей сведений о документе. Например, если приложение имеет документы фиксированного размера, эту функцию можно использовать для инициализации ограничений прокрутки представления на основе размера документа. Если приложение поддерживает документы с переменным размером, используйте для OnUpdate обновления ограничений прокрутки при каждом изменении документа.

Пример

См. пример CRichEditView ::m_nWordWrap.

CRichEditView::OnPasteNativeObject

Используйте эту функцию для загрузки собственных данных из внедренного элемента.

virtual BOOL OnPasteNativeObject(LPSTORAGE lpStg);

Параметры

lpStg
Указатель на объект IStorage .

Возвращаемое значение

Ненулевое значение при успешном выполнении; в противном случае — 0;

Замечания

Как правило, это можно сделать, создав COleStreamFile вокруг IStorage. Его COleStreamFile можно подключить к архиву и CObject::Serialize , чтобы загрузить данные.

Это расширенная переопределение.

Дополнительные сведения см. в разделе IStorage в пакете SDK для Windows.

CRichEditView::OnParaAlign

Вызовите эту функцию, чтобы изменить выравнивание абзацев для выбранных абзацев.

void OnParaAlign(WORD wAlign);

Параметры

wAlign
Требуемое выравнивание абзаца. Одно из следующих значений:

  • PFA_LEFT Выровнять абзацы с левым полем.

  • PFA_RIGHT Выровнять абзацы с правым полем.

  • PFA_CENTER Центр абзацев между полями.

Пример

void CMyRichEditView::OnParaCenter()
{
   OnParaAlign(PFA_CENTER);
}

CRichEditView::OnPrinterChanged

Переопределите эту функцию, чтобы изменить характеристики для этого расширенного представления редактирования при изменении принтера.

virtual void OnPrinterChanged(const CDC& dcPrinter);

Параметры

dcPrinter
Объект CDC для нового принтера.

Замечания

Реализация по умолчанию задает размер бумаги физической высоты и ширины для выходного устройства (принтера). Если контекст устройства не связан с dcPrinter, реализация по умолчанию задает размер бумаги на 8,5 на 11 дюймов.

CRichEditView::OnReplaceAll

Вызывается платформой при обработке всех команд из диалогового окна "Замена".

virtual void OnReplaceAll(
    LPCTSTR lpszFind,
    LPCTSTR lpszReplace,
    BOOL bCase,
    BOOL bWord);

Параметры

lpszFind
Замещающий текст.

lpszReplace
Замещающий текст.

bCase
Указывает, учитывается ли поиск регистра.

bWord
Указывает, должен ли поиск выбрать целые слова или нет.

Замечания

Вызовите эту функцию, чтобы заменить все вхождения определенного текста другой строкой. Переопределите эту функцию, чтобы изменить характеристики поиска для этого представления.

Пример

См. пример для CRichEditView::FindText.

CRichEditView::OnReplaceSel

Вызывается платформой при обработке команд "Заменить" в диалоговом окне "Замена".

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.

Дополнительные сведения см. в статье MessageBeep в пакете SDK для Windows.

Пример

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

Платформа вызывает эту функцию для обновления пользовательского интерфейса команды символьного эффекта.

void OnUpdateCharEffect(
    CCmdUI* pCmdUI,
    DWORD dwMask,
    DWORD dwEffect);

Параметры

pCmdUI
Указатель на объект CCmdUI .

dwMask
Указывает маску форматирования символов.

dwEffect
Указывает эффект форматирования символов.

Замечания

В маске dwMask указывается, какие атрибуты форматирования символов необходимо проверить. Флаги dwEffect перечисляют атрибуты форматирования символов для задания или очистки.

Дополнительные сведения о параметрах dwMask и dwEffect и их потенциальных значениях см. в соответствующих элементах данных CHARFORMAT в пакете SDK для Windows.

Пример

void CMyRichEditView::OnUpdateCharItalicUI(CCmdUI* pCmdUI)
{
   OnUpdateCharEffect(pCmdUI, CFM_ITALIC, CFE_ITALIC);
}

CRichEditView::OnUpdateParaAlign

Платформа вызывает эту функцию для обновления пользовательского интерфейса команды для команд эффекта абзаца.

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::P rintInsideRect

Вызовите эту функцию, чтобы отформатировать диапазон текста в элементе управления расширенными изменениями, чтобы поместиться в rectLayout для устройства, указанного pDC.

long PrintInsideRect(
    CDC* pDC,
    RECT& rectLayout,
    long nIndexStart,
    long nIndexStop,
    BOOL bOutput);

Параметры

pDC
Указатель на контекст устройства для области вывода.

rectLayout
RECT или CRect , определяющий выходную область.

nIndexStart
Отсчитываемый от нуля индекс первого символа, отформатированный.

nIndexStop
Отсчитываемый от нуля индекс последнего символа, отформатированный.

bOutput
Указывает, должен ли отображаться текст. Если значение FALSE, текст просто измеряется.

Возвращаемое значение

Индекс последнего символа, который соответствует выходной области плюс один.

Замечания

Как правило, за этим вызовом следует вызов CRichEditCtrl::D isplayBand , который создает выходные данные.

Пример

См. пример для CRichEditView::GetPaperSize.

CRichEditView::P rintPage

Вызовите эту функцию, чтобы отформатировать диапазон текста в элементе управления расширенными изменениями для выходного устройства, указанного pDC.

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

Параметры

pDC
Указатель на контекст устройства для вывода страниц.

nIndexStart
Отсчитываемый от нуля индекс первого символа, отформатированный.

nIndexStop
Отсчитываемый от нуля индекс последнего символа, отформатированный.

Возвращаемое значение

Индекс последнего символа, который помещается на страницу плюс один.

Замечания

Макет каждой страницы управляется GetPageRect и GetPrintRect. Как правило, за этим вызовом следует вызов CRichEditCtrl::D isplayBand , который создает выходные данные.

Обратите внимание, что поля относительно физической страницы, а не логической страницы. Таким образом, поля нуля часто закрепят текст, так как многие принтеры имеют непечатываемые области на странице. Чтобы избежать вырезки текста, необходимо вызвать SetMargins и задать разумные поля перед печатью.

CRichEditView::QueryAcceptData

Вызывается платформой для вставки объекта в форматированный редактирование.

virtual HRESULT QueryAcceptData(
    LPDATAOBJECT lpdataobj,
    CLIPFORMAT* lpcfFormat,
    DWORD dwReco,
    BOOL bReally,
    HGLOBAL hMetaFile);

Параметры

lpdataobj
Указатель на запрос iDataObject.

lpcfFormat
Указатель на допустимый формат данных.

dwReco
Не используется.

bReally
Указывает, должна ли операция вставки продолжаться или нет.

hMetaFile
Дескриптор метафайла, используемого для рисования значка элемента.

Возвращаемое значение

Значение HRESULT сообщает об успешном выполнении операции.

Замечания

Переопределите эту функцию для обработки различных элементов COM в производном классе документов. Это расширенная переопределение.

Дополнительные сведения о HRESULT и см. в разделе "Структура кодов ошибок COM" IDataObjectи IDataObject соответственно в пакете SDK для Windows.

Пример

// 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 структура, содержащая новые атрибуты форматирования символов по умолчанию.

Замечания

Только атрибуты, указанные dwMask членом cf , изменяются этой функцией.

Дополнительные сведения см. в разделе EM_SETCHARFORMAT сообщения и структуры CHARFORMAT2 в пакете SDK для Windows.

Пример

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

Вызовите эту функцию, чтобы задать поля печати для этого расширенного представления редактирования.

void SetMargins(const CRect& rectMargin);

Параметры

rectMargin
Новые значения полей для печати, измеряемые в MM_TWIPS.

Замечания

Если m_nWordWrap , WrapToTargetDeviceнеобходимо вызвать WrapChanged после использования этой функции для настройки характеристик печати.

Обратите внимание, что поля, используемые PrintPage , относятся к физической странице, а не к логической странице. Таким образом, поля нуля часто закрепят текст, так как многие принтеры имеют непечатываемые области на странице. Чтобы избежать вырезки текста, необходимо вызвать, SetMargins чтобы задать разумные поля принтера перед печатью.

Пример

См. пример для CRichEditView::GetPaperSize.

CRichEditView::SetPaperSize

Вызовите эту функцию, чтобы задать размер бумаги для печати этого расширенного представления редактирования.

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.

Замечания

Только атрибуты, указанные dwMask членом pf , изменяются этой функцией.

Дополнительные сведения см. в разделе EM_SETPARAFORMAT сообщения и структуры PARAFORMAT2 в пакете SDK для Windows.

Пример

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

Вызовите эту функцию, чтобы сбросить внутреннее состояние элемента управления CRichEditView после неудачного вызова FindText.

void TextNotFound(LPCTSTR lpszFind);

Параметры

lpszFind
Содержит текстовую строку, которая не найдена.

Замечания

Рекомендуется вызывать этот метод сразу после неудачных вызовов FindText , чтобы внутреннее состояние поиска элемента управления было правильно сброшено.

Параметр lpszFind должен содержать то же содержимое, что и строка, указанная в FindText. После сброса состояния внутреннего поиска этот метод вызовет метод OnTextNotFound с предоставленной строкой поиска.

Пример

См. пример для CRichEditView::FindText.

CRichEditView::WrapChanged

Вызовите эту функцию при изменении характеристик печати ( SetMargins или SetPaperSize).

virtual void WrapChanged();

Замечания

Переопределите эту функцию, чтобы изменить способ реагирования представления расширенных правок на изменения в m_nWordWrap или характеристик печати ( OnPrinterChanged).

Пример

void CMyRichEditView::OnInitialUpdate()
{
   CRichEditView::OnInitialUpdate();

   // Turn on the horizontal scroll bar
   m_nWordWrap = WrapNone;
   WrapChanged();
}

См. также

Пример WORDPAD для MFC
Класс CCtrlView
Диаграмма иерархии
Класс CRichEditDoc
Класс CRichEditCntrItem