Класс 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
Вызовите эту функцию, чтобы переместить заданное диалоговое окно, чтобы оно не скрывалось текущего выбора.
void AdjustDialogPosition(CDialog* pDlg);
pDlg
Указатель на CDialog
объект.
Вызовите эту функцию, чтобы определить, содержит ли буфер обмена сведения, которые можно вставить в это расширенное представление редактирования.
BOOL CanPaste() const;
Ненулевое значение, если буфер обмена содержит данные в формате, который может принимать это расширенное представление редактирования; в противном случае — значение 0.
Вызовите эту функцию для создания CRichEditView
объекта.
CRichEditView();
Вызовите эту функцию, чтобы вставить элемент OLE в dataobj в этот расширенный документ или представление.
void DoPaste(
COleDataObject& dataobj,
CLIPFORMAT cf,
HMETAFILEPICT hMetaPict);
dataobj
COleDataObject, содержащий данные для вставки.
cf
Нужный формат буфера обмена.
hMetaPict
Метафайл, представляющий вставленный элемент.
Платформа вызывает эту функцию как часть реализации QueryAcceptData по умолчанию.
Эта функция определяет тип вставки на основе результатов обработчика для вставки special. Если значение cf равно 0, новый элемент использует текущее знаковое представление. Если cf ненулевое значение и hMetaPict не равно NULL, новый элемент использует hMetaPict для своего представления.
Вызовите эту функцию, чтобы найти указанный текст и задать его в качестве текущего выделения.
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);
}
Вызовите эту функцию, чтобы найти указанный текст и задать его в качестве текущего выделения.
BOOL FindTextSimple(
LPCTSTR lpszFind,
BOOL bCase = TRUE,
BOOL bWord = TRUE,
BOOL bNext = TRUE);
lpszFind
Содержит строку для поиска.
bCase
Указывает, учитывается ли поиск регистра.
bWord
Указывает, должен ли поиск соответствовать целым словам, а не частям слов.
bNext
Указывает направление поиска. Если значение TRUE, направление поиска находится в конце буфера. Если значение FALSE, направление поиска находится в начале буфера.
Ненулевое значение, если найден текст lpszFind ; в противном случае — значение 0.
См. пример для CRichEditView::FindText.
Вызовите эту функцию, чтобы получить атрибуты форматирования символов текущего выделенного фрагмента.
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);
}
Платформа вызывает эту функцию как часть обработки 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.
Платформа вызывает эту функцию как часть обработки 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.
Вызовите эту функцию, чтобы получить указатель на связанный CRichEditDoc
с этим представлением.
CRichEditDoc* GetDocument() const;
Указатель на объект CRichEditDoc, связанный с CRichEditView
объектом.
Вызовите эту функцию, чтобы получить элемент OLE, который в настоящее время активируется на месте в этом CRichEditView
объекте.
CRichEditCntrItem* GetInPlaceActiveItem() const;
Указатель на один активный объект CRichEditCntrItem в этом расширенном представлении редактирования; ЗНАЧЕНИЕ NULL, если в данный момент в активном состоянии нет элемента OLE.
Вызовите эту функцию для получения текущих полей, используемых при печати.
CRect GetMargins() const;
Поля, используемые в печати, измеряемые в MM_TWIPS.
Вызовите эту функцию, чтобы получить измерения страницы, используемой в печати.
CRect GetPageRect() const;
Границы страницы, используемой в печати, измеряются в MM_TWIPS.
Это значение основано на размере бумаги.
Вызовите эту функцию, чтобы получить текущий размер бумаги.
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);
}
Вызовите эту функцию, чтобы получить атрибуты форматирования абзаца текущего выделенного фрагмента.
PARAFORMAT2& GetParaFormatSelection();
Структура PARAFORMAT2 , содержащая атрибуты форматирования абзаца текущего выделенного фрагмента.
Дополнительные сведения см. в разделе EM_GETPARAFORMAT сообщения и структуры PARAFORMAT2 в пакете SDK для Windows.
Вызовите эту функцию, чтобы получить границы области печати в прямоугольнике страницы.
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);
}
Вызовите эту функцию, чтобы определить ширину области печати.
int GetPrintWidth() const;
Ширина области печати, измеряемая в MM_TWIPS.
Вызовите эту функцию, чтобы получить объект CRichEditCtrl , связанный CRichEditView
с объектом.
CRichEditCtrl& GetRichEditCtrl() const;
Объект CRichEditCtrl
для этого представления.
См. пример для CRichEditView::FindText.
Вызовите эту функцию, чтобы получить элемент OLE ( CRichEditCntrItem
объект), выбранный в данный момент в этом CRichEditView
объекте.
CRichEditCntrItem* GetSelectedItem() const;
Указатель на объект CRichEditCntrItem, выбранный в объектеCRichEditView
; ЗНАЧЕНИЕ NULL, если элемент не выбран в этом представлении.
Вызовите эту функцию, чтобы получить длину текста в этом CRichEditView
объекте.
long GetTextLength() const;
Длина текста в этом CRichEditView
объекте.
Вызовите эту функцию-член, чтобы вычислить длину текста в этом 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.
Вызовите эту функцию, чтобы вставить указанный файл (как объект CRichEditCntrItem ) в расширенное представление редактирования.
void InsertFileAsObject(LPCTSTR lpszFileName);
lpszFileName
Строка, содержащая имя вставленного файла.
Вызовите эту функцию, чтобы вставить объект CRichEditCntrItem в расширенное представление редактирования.
HRESULT InsertItem(CRichEditCntrItem* pItem);
pItem
Указатель на вставленный элемент.
Значение HRESULT, указывающее успешность вставки.
Дополнительные сведения о HRESULT см. в разделе "Структура кодов ошибок COM" в пакете SDK для Windows.
Вызовите эту функцию, чтобы определить, является ли cf форматом буфера обмена, который является текстом, форматированным текстом или форматированным текстом с элементами OLE.
static BOOL AFX_CDECL IsRichEditFormat(CLIPFORMAT cf);
cf
Формат буфера обмена.
Ненулевое значение, если cf является форматом полного редактирования или текстового буфера обмена.
Вызовите эту функцию, чтобы определить, выбран ли указанный элемент OLE в настоящее время в этом представлении.
virtual BOOL IsSelected(const CObject* pDocItem) const;
pDocItem
Указатель на объект в представлении.
Ненулевое значение, если выбран объект; в противном случае — 0.
Переопределите эту функцию, если производный класс представления имеет другой метод обработки выбора элементов OLE.
Отступ для элементов маркера в списке; по умолчанию 720 единиц, что составляет 1/2 дюйма.
int m_nBulletIndent;
Указывает тип оболочки слов для этого расширенного представления редактирования.
int m_nWordWrap;
Одно из следующих значений:
WrapNone
Указывает, что автоматическая оболочка слов отсутствует.WrapToWindow
Указывает оболочку слов на основе ширины окна.WrapToTargetDevice
Указывает оболочку слов на основе характеристик целевого устройства.
См. пример для CRichEditView::WrapChanged.
Вызовите эту функцию, чтобы переключить эффекты форматирования символов для текущего выделенного фрагмента.
void OnCharEffect(
DWORD dwMask,
DWORD dwEffect);
dwMask
Эффекты форматирования символов для изменения в текущем выделенном фрагменте.
dwEffect
Требуемый список эффектов форматирования символов для переключения.
Каждый вызов этой функции переключает указанные эффекты форматирования для текущего выбора.
Дополнительные сведения о параметрах dwMask и dwEffect и их потенциальных значениях см. в соответствующих элементах данных CHARFORMAT в пакете SDK для Windows.
void CMyRichEditView::OnItalic()
{
OnCharEffect(CFM_ITALIC, CFE_ITALIC);
}
Вызывается платформой при обработке команд из диалогового окна "Поиск и замена".
virtual void OnFindNext(
LPCTSTR lpszFind,
BOOL bNext,
BOOL bCase,
BOOL bWord);
lpszFind
Строка, которую требуется найти.
bNext
Направление поиска: TRUE указывает вниз; FALSE, вверх.
bCase
Указывает, является ли поиск конфиденциальным регистром.
bWord
Указывает, соответствует ли поиск целым словам только или нет.
Вызовите эту функцию для поиска текста в пределах .CRichEditView
Переопределите эту функцию, чтобы изменить характеристики поиска для производного класса представления.
Вызывается платформой после первого присоединения представления к документу, но перед отображением представления.
virtual void OnInitialUpdate();
Реализация этой функции по умолчанию вызывает функцию-член CView::OnUpdate без сведений о подсказке (то есть, используя значения по умолчанию 0 для параметра lHint и NULL для параметра pHint). Переопределите эту функцию для выполнения однократной инициализации, требующей сведений о документе. Например, если приложение имеет документы фиксированного размера, эту функцию можно использовать для инициализации ограничений прокрутки представления на основе размера документа. Если приложение поддерживает документы с переменным размером, используйте для OnUpdate
обновления ограничений прокрутки при каждом изменении документа.
См. пример CRichEditView ::m_nWordWrap.
Используйте эту функцию для загрузки собственных данных из внедренного элемента.
virtual BOOL OnPasteNativeObject(LPSTORAGE lpStg);
lpStg
Указатель на объект IStorage .
Ненулевое значение при успешном выполнении; в противном случае — 0;
Как правило, это можно сделать, создав COleStreamFile вокруг IStorage
. Его COleStreamFile
можно подключить к архиву и CObject::Serialize , чтобы загрузить данные.
Это расширенная переопределение.
Дополнительные сведения см. в разделе IStorage в пакете SDK для Windows.
Вызовите эту функцию, чтобы изменить выравнивание абзацев для выбранных абзацев.
void OnParaAlign(WORD wAlign);
wAlign
Требуемое выравнивание абзаца. Одно из следующих значений:
PFA_LEFT Выровнять абзацы с левым полем.
PFA_RIGHT Выровнять абзацы с правым полем.
PFA_CENTER Центр абзацев между полями.
void CMyRichEditView::OnParaCenter()
{
OnParaAlign(PFA_CENTER);
}
Переопределите эту функцию, чтобы изменить характеристики для этого расширенного представления редактирования при изменении принтера.
virtual void OnPrinterChanged(const CDC& dcPrinter);
dcPrinter
Объект CDC для нового принтера.
Реализация по умолчанию задает размер бумаги физической высоты и ширины для выходного устройства (принтера). Если контекст устройства не связан с dcPrinter, реализация по умолчанию задает размер бумаги на 8,5 на 11 дюймов.
Вызывается платформой при обработке всех команд из диалогового окна "Замена".
virtual void OnReplaceAll(
LPCTSTR lpszFind,
LPCTSTR lpszReplace,
BOOL bCase,
BOOL bWord);
lpszFind
Замещающий текст.
lpszReplace
Замещающий текст.
bCase
Указывает, учитывается ли поиск регистра.
bWord
Указывает, должен ли поиск выбрать целые слова или нет.
Вызовите эту функцию, чтобы заменить все вхождения определенного текста другой строкой. Переопределите эту функцию, чтобы изменить характеристики поиска для этого представления.
См. пример для CRichEditView::FindText.
Вызывается платформой при обработке команд "Заменить" в диалоговом окне "Замена".
virtual void OnReplaceSel(
LPCTSTR lpszFind,
BOOL bNext,
BOOL bCase,
BOOL bWord,
LPCTSTR lpszReplace);
lpszFind
Замещающий текст.
bNext
Указывает направление поиска: TRUE вниз; FALSE, вверх.
bCase
Указывает, учитывается ли поиск регистра.
bWord
Указывает, должен ли поиск выбрать целые слова или нет.
lpszReplace
Замещающий текст.
Вызовите эту функцию, чтобы заменить одно вхождение определенного текста другой строкой. Переопределите эту функцию, чтобы изменить характеристики поиска для этого представления.
Вызывается платформой всякий раз, когда поиск завершается ошибкой.
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);
}
Платформа вызывает эту функцию для обновления пользовательского интерфейса команды символьного эффекта.
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);
}
Платформа вызывает эту функцию для обновления пользовательского интерфейса команды для команд эффекта абзаца.
void OnUpdateParaAlign(
CCmdUI* pCmdUI,
WORD wAlign);
pCmdUI
Указатель на объект CCmdUI .
wAlign
Выравнивание абзаца для проверки. Одно из следующих значений:
PFA_LEFT Выровнять абзацы с левым полем.
PFA_RIGHT Выровнять абзацы с правым полем.
PFA_CENTER Центр абзацев между полями.
void CMyRichEditView::OnUpdateParaCenterUI(CCmdUI* pCmdUI)
{
OnUpdateParaAlign(pCmdUI, PFA_CENTER);
}
Вызовите эту функцию, чтобы отформатировать диапазон текста в элементе управления расширенными изменениями, чтобы поместиться в 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.
Вызовите эту функцию, чтобы отформатировать диапазон текста в элементе управления расширенными изменениями для выходного устройства, указанного pDC.
long PrintPage(
CDC* pDC,
long nIndexStart,
long nIndexStop);
pDC
Указатель на контекст устройства для вывода страниц.
nIndexStart
Отсчитываемый от нуля индекс первого символа, отформатированный.
nIndexStop
Отсчитываемый от нуля индекс последнего символа, отформатированный.
Индекс последнего символа, который помещается на страницу плюс один.
Макет каждой страницы управляется GetPageRect и GetPrintRect. Как правило, за этим вызовом следует вызов CRichEditCtrl::D isplayBand , который создает выходные данные.
Обратите внимание, что поля относительно физической страницы, а не логической страницы. Таким образом, поля нуля часто закрепят текст, так как многие принтеры имеют непечатываемые области на странице. Чтобы избежать вырезки текста, необходимо вызвать SetMargins и задать разумные поля перед печатью.
Вызывается платформой для вставки объекта в форматированный редактирование.
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
объекте.
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);
}
Вызовите эту функцию, чтобы задать поля печати для этого расширенного представления редактирования.
void SetMargins(const CRect& rectMargin);
rectMargin
Новые значения полей для печати, измеряемые в MM_TWIPS.
Если m_nWordWrap , WrapToTargetDevice
необходимо вызвать WrapChanged после использования этой функции для настройки характеристик печати.
Обратите внимание, что поля, используемые PrintPage , относятся к физической странице, а не к логической странице. Таким образом, поля нуля часто закрепят текст, так как многие принтеры имеют непечатываемые области на странице. Чтобы избежать вырезки текста, необходимо вызвать, SetMargins
чтобы задать разумные поля принтера перед печатью.
См. пример для CRichEditView::GetPaperSize.
Вызовите эту функцию, чтобы задать размер бумаги для печати этого расширенного представления редактирования.
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
объекте.
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 после неудачного вызова FindText.
void TextNotFound(LPCTSTR lpszFind);
lpszFind
Содержит текстовую строку, которая не найдена.
Рекомендуется вызывать этот метод сразу после неудачных вызовов FindText , чтобы внутреннее состояние поиска элемента управления было правильно сброшено.
Параметр lpszFind должен содержать то же содержимое, что и строка, указанная в FindText. После сброса состояния внутреннего поиска этот метод вызовет метод OnTextNotFound с предоставленной строкой поиска.
См. пример для CRichEditView::FindText.
Вызовите эту функцию при изменении характеристик печати ( 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