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


Класс CEditView

Тип класса представления, который предоставляет функциональные возможности элемента управления "поле ввода" Windows и может использоваться для реализации простой функциональности текстового редактора.

Синтаксис

class CEditView : public CCtrlView

Участники

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

Имя Описание
CEditView::CEditView Создает объект типа CEditView.

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

Имя Описание
CEditView::FindText Выполняет поиск строки в тексте.
CEditView::GetBufferLength Получает длину буфера символов.
CEditView::GetEditCtrl Предоставляет доступ к CEdit части CEditView объекта (элемент управления редактирования Windows).
CEditView::GetPrinterFont Извлекает текущий шрифт принтера.
CEditView::GetSelectedText Извлекает текущий фрагмент текста.
CEditView::LockBuffer Блокирует буфер.
CEditView::P rintInsideRect Отрисовывает текст внутри заданного прямоугольника.
CEditView::SerializeRaw Сериализует CEditView объект на диск в виде необработанного текста.
CEditView::SetPrinterFont Задает новый шрифт принтера.
CEditView::SetTabStops Задает остановки вкладки для отображения экрана и печати.
CEditView::UnlockBuffer Разблокирует буфер.

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

Имя Описание
CEditView::OnFindNext Находит следующее вхождение текстовой строки.
CEditView::OnReplaceAll Заменяет все вхождения заданной строки новой строкой.
CEditView::OnReplaceSel Заменяет текущий выбор.
CEditView::OnTextNotFound Вызывается, когда операция поиска не соответствует любому дополнительному тексту.

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

Имя Описание
CEditView::d wStyleDefault Стиль по умолчанию для объектов типа CEditView.

Замечания

Класс CEditView предоставляет следующие дополнительные функции:

  • Печать.

  • Найдите и замените.

Так как класс CEditView является производным от класса, объекты класса CEditViewCViewможно использовать с документами и шаблонами документов.

Текст каждого CEditView элемента управления хранится в собственном глобальном объекте памяти. Приложение может иметь любое количество CEditView объектов.

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

Реализация класса CEditView по умолчанию обрабатывает следующие команды: ID_EDIT_SELECT_ALL, ID_EDIT_FIND, ID_EDIT_REPLACE, ID_EDIT_REPEAT и ID_FILE_PRINT.

Ограничение CEditView символов по умолчанию — (1024 * 1024 – 1 = 1048575). Это можно изменить, вызвав функцию EM_LIMITTEXT базового элемента управления редактирования. Однако ограничения отличаются в зависимости от операционной системы и типа элемента управления редактированием (один или многострочного). Дополнительные сведения об этих ограничениях см. в EM_LIMITTEXT.

Чтобы изменить это ограничение в элементе управления, переопределите OnCreate() функцию для класса CEditView и вставьте следующую строку кода:

GetEditCtrl().SetLimitText(nNewVal); //nNewVal, the new character limit

Объекты типа CEditView (или типы, производные от CEditView) имеют следующие ограничения:

  • CEditView не реализует значение true, что вы видите, является то, что вы получаете (WYSIWYG) редактирование. Где есть выбор между удобочитаемостью на экране и сопоставлением печатных выходных данных, CEditView выбирает удобочитаемость экрана.

  • CEditView может отображать текст только в одном шрифте. Не поддерживается специальное форматирование символов. Дополнительные возможности см. в классе CRichEditView .

  • Объем текста, который CEditView может содержать, ограничен. Ограничения совпадают с ограничениями для CEdit элемента управления.

Дополнительные сведения см CEditView. в разделе "Производные классы представлений", доступные в MFC.

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

CObject

CCmdTarget

CWnd

CView

CCtrlView

CEditView

Требования

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

CEditView::CEditView

Создает объект типа CEditView.

CEditView();

Замечания

После создания объекта необходимо вызвать функцию CWnd::Create перед использованием элемента управления редактированием. Если вы наследуете класс из CEditView шаблона и добавляете его в шаблон, платформа CWinApp::AddDocTemplateвызывает как этот конструктор, так и Create функцию.

CEditView::d wStyleDefault

Содержит стиль CEditView объекта по умолчанию.

static const DWORD dwStyleDefault;

Замечания

Передайте этот статический элемент в качестве параметра Create dwStyle функции, чтобы получить стиль по умолчанию для CEditView объекта.

CEditView::FindText

Вызовите функцию FindText для поиска текстового CEditView буфера объекта.

BOOL FindText(
    LPCTSTR lpszFind,
    BOOL bNext = TRUE,
    BOOL bCase = TRUE);

Параметры

lpszFind
Найденный текст.

bNext
Указывает направление поиска. Если значение TRUE, направление поиска находится в конце буфера. Если значение FALSE, направление поиска находится в начале буфера.

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

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

Ненулевое значение, если найден текст поиска; в противном случае — 0.

Замечания

Эта функция выполняет поиск текста в буфере для текста, указанного lpszFind, начиная с текущего выделения, в направлении, указанном bNext, и с учетом регистра, заданного bCase. Если текст найден, он задает выделенный текст для найденного текста и возвращает ненулевое значение. Если текст не найден, функция возвращает значение 0.

Обычно не требуется вызывать функцию FindText , если вы не переопределяете OnFindNext, что вызывает FindText.

CEditView::GetBufferLength

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

UINT GetBufferLength() const;

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

Длина строки в буфере.

CEditView::GetEditCtrl

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

CEdit& GetEditCtrl() const;

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

Ссылка на объект CEdit.

Замечания

Этот элемент управления имеет тип CEdit, поэтому вы можете управлять элементом управления редактированием Windows непосредственно с помощью CEdit функций-членов.

Внимание

CEdit С помощью объекта можно изменить состояние базового элемента управления редактирования Windows. Например, не следует изменять параметры вкладки с помощью функции CEdit::SetTabStops , так как CEditView кэширует эти параметры для использования как в элементе управления редактированием, так и в печати. Вместо этого используйте CEditView::SetTabStops.

Пример

void CMyEditView::OnInitialUpdate()
{
   CEditView::OnInitialUpdate();

   // get the edit control and set some initial properties for it
   CEdit &theEdit = GetEditCtrl();

   // adjust the left margin without changing the right margin
   DWORD dwMargins = theEdit.GetMargins();
   theEdit.SetMargins(20, HIWORD(dwMargins));

   // only accept 10k of text
   theEdit.SetLimitText(10 * 1024);
}

CEditView::GetPrinterFont

Вызов GetPrinterFont для получения указателя на объект CFont , описывающий текущий шрифт принтера.

CFont* GetPrinterFont() const;

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

Указатель на объект, указывающий текущий CFont шрифт принтера; ЗНАЧЕНИЕ NULL, если шрифт принтера не задан. Указатель может быть временным. Его не требуется сохранять для дальнейшего использования.

Замечания

Если шрифт принтера не задан, поведение CEditView печати класса по умолчанию — печать с помощью того же шрифта, который используется для отображения.

Используйте эту функцию для определения текущего шрифта принтера. Если он не является нужным шрифтом принтера, используйте CEditView::SetPrinterFont , чтобы изменить его.

CEditView::GetSelectedText

Вызов GetSelectedText для копирования выделенного текста в CString объект до конца выделения или символа, предшествующего первому символу возврата каретки в выделенном фрагменте.

void GetSelectedText(CString& strResult) const;

Параметры

strResult
Ссылка на CString объект, который требуется получить выделенный текст.

CEditView::LockBuffer

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

LPCTSTR LockBuffer() const;

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

Указатель на буфер элемента управления редактирования.

CEditView::OnFindNext

Выполняет поиск текста в буфере для текста, указанного lpszFind, в направлении, указанном bNext, с учетом регистра, указанного bCase.

virtual void OnFindNext(
    LPCTSTR lpszFind,
    BOOL bNext,
    BOOL bCase);

Параметры

lpszFind
Найденный текст.

bNext
Указывает направление поиска. Если значение TRUE, направление поиска находится в конце буфера. Если значение FALSE, направление поиска находится в начале буфера.

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

Замечания

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

Переопределите OnFindNext , чтобы изменить способ поиска текста производного CEditViewобъекта. CEditView вызывается OnFindNext , когда пользователь нажимает кнопку "Найти далее" в стандартном диалоговом окне "Поиск".

CEditView::OnReplaceAll

CEditView вызывается OnReplaceAll , когда пользователь выбирает кнопку "Заменить все" в диалоговом окне "Замена" в стандартном диалоговом окне "Замена".

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

Параметры

lpszFind
Найденный текст.

lpszReplace
Текст для замены текста поиска.

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

Замечания

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

Если текущий выбор не соответствует lpszFind, выделение обновляется до первого вхождения текста, указанного lpszFind, и замена не выполняется. Это позволяет пользователю подтвердить, что это то, что они хотят сделать, если выделение не соответствует тексту, который будет заменен.

Переопределите OnReplaceAll , чтобы изменить способ CEditViewзамены текста производным объектом.

CEditView::OnReplaceSel

CEditView вызывает OnReplaceSel , когда пользователь нажимает кнопку "Заменить" в диалоговом окне "Замена" в стандартном диалоговом окне.

virtual void OnReplaceSel(
    LPCTSTR lpszFind,
    BOOL bNext,
    BOOL bCase,
    LPCTSTR lpszReplace);

Параметры

lpszFind
Найденный текст.

bNext
Указывает направление поиска. Если значение TRUE, направление поиска находится в конце буфера. Если значение FALSE, направление поиска находится в начале буфера.

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

lpszReplace
Текст для замены найденного текста.

Замечания

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

Переопределите OnReplaceSel , чтобы изменить способ CEditViewзамены выделенного текста производным объектом.

CEditView::OnTextNotFound

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

virtual void OnTextNotFound(LPCTSTR lpszFind);

Параметры

lpszFind
Найденный текст.

CEditView::P rintInsideRect

Вызов PrintInsideRect печати текста в прямоугольнике, заданном rectLayout.

UINT PrintInsideRect(
    CDC *pDC,
    RECT& rectLayout,
    UINT nIndexStart,
    UINT nIndexStop);

Параметры

pDC
Указатель на контекст устройства принтера.

rectLayout
Ссылка на объект CRect или структуру RECT, указывающую прямоугольник, в котором будет отображаться текст.

nIndexStart
Индекс в буфере первого символа для отрисовки.

nIndexStop
Индекс в буфере символа после последнего символа для отрисовки.

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

Индекс следующего символа, который должен быть напечатан (то есть символ после последнего отрисованного символа).

Замечания

Если элемент CEditView управления не имеет стиля ES_AUTOHSCROLL, текст упаковывается в прямоугольник отрисовки. Если элемент управления имеет стиль ES_AUTOHSCROLL, текст обрезается в правом краю прямоугольника.

Элемент rect.bottomобъекта rectLayout изменяется таким образом, чтобы размеры прямоугольника определяют часть исходного прямоугольника, занятого текстом.

CEditView::SerializeRaw

Вызов SerializeRaw для CArchive чтения или записи текста объекта в CEditView текстовый файл.

void SerializeRaw(CArchive& ar);

Параметры

Ar
Ссылка на CArchive объект, в который хранится сериализованный текст.

Замечания

SerializeRaw отличается от CEditViewвнутренней Serialize реализации, в которую она считывает и записывает только текст без предыдущих данных описания объектов.

CEditView::SetPrinterFont

Вызов, SetPrinterFont чтобы задать шрифт принтера шрифту, указанному pFont.

void SetPrinterFont(CFont* pFont);

Параметры

pFont
Указатель на объект типа CFont. Если значение NULL, шрифт, используемый для печати, основан на шрифте отображения.

Замечания

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

CEditView::SetTabStops

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

void SetTabStops(int nTabStops);

Параметры

nTabStops
Ширина каждой остановки вкладки в диалоговых единицах.

Замечания

Поддерживается только одна ширина табуляции. ( CEdit объекты поддерживают несколько ширин табуляции.) Ширины находятся в диалоговых единицах, равных одной четверти средней ширины символов (только на основе букв верхнего и нижнего регистра) шрифта, используемого во время печати или отображения. Не следует использовать CEdit::SetTabStops , так как CEditView необходимо кэшировать значение табуляции.

Эта функция изменяет только вкладки объекта, для которого он вызывается. Чтобы изменить табуляции для каждого CEditView объекта в приложении, вызовите функцию каждого объекта SetTabStops .

Пример

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

// gain a reference to the edit control
CEdit &theEdit = GetEditCtrl();

// get the font the control is using
CFont *pFont = theEdit.GetFont();
TEXTMETRIC tm;

// get the control's DC, too
CDC *pDC = theEdit.GetDC();

// Select the font that the control uses by default into the DC.
// We must do this because the control may or may not be using
// that font at this exact moment
CFont *pOldFont = pDC->SelectObject(pFont);

// Retrieve text metrics for that font and return the previously
// selected font.
pDC->GetTextMetrics(&tm);
pDC->SelectObject(pOldFont);

// Get an identity rectangle and map it to dialog units
CRect rect(0, 0, 100, 1);
::MapDialogRect((HWND)this, rect);

// We now know that 100 dialog units are rect.Width() screen units,
// so we can multiply screen units by 100 and divide by rect.Width()
// to find dialog units from screen units. tm.tmAveCharWidth is
// the width of _one_ character, so setting the tabs at every
// four characters means we also multiply by four.
SetTabStops((4 * tm.tmAveCharWidth * 100) / rect.Width());

CEditView::UnlockBuffer

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

void UnlockBuffer() const;

Замечания

Вызов UnlockBuffer после завершения использования указателя, возвращенного LockBuffer.

См. также

Пример СУПЕРPAD MFC
Класс CCtrlView
Диаграмма иерархии
Класс CEdit
Класс CDocument
Класс CDocTemplate
Класс CCtrlView
Класс CRichEditView