Класс 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 .
Иерархия наследования
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