Udostępnij za pośrednictwem


Klasa CEditView

Typ klasy widoków, który zapewnia funkcjonalność kontrolki edycji systemu Windows i może służyć do implementowania prostych funkcji edytora tekstu.

Składnia

class CEditView : public CCtrlView

Członkowie

Konstruktory publiczne

Nazwa/nazwisko opis
CEditView::CEditView Tworzy obiekt typu CEditView.

Metody publiczne

Nazwa/nazwisko opis
CEditView::FindText Wyszukuje ciąg w tekście.
CEditView::GetBufferLength Uzyskuje długość buforu znaków.
CEditView::GetEditCtrl Zapewnia dostęp do CEdit części CEditView obiektu (kontrolka edycji systemu Windows).
CEditView::GetPrinterFont Pobiera bieżącą czcionkę drukarki.
CEditView::GetSelectedText Pobiera bieżące zaznaczenie tekstu.
CEditView::LockBuffer Blokuje bufor.
CEditView::P rintInsideRect Renderuje tekst wewnątrz danego prostokąta.
CEditView::SerializeRaw Serializuje CEditView obiekt na dysku jako nieprzetworzonego tekstu.
CEditView::SetPrinterFont Ustawia nową czcionkę drukarki.
CEditView::SetTabStops Ustawia tabulatory dla wyświetlania i drukowania ekranu.
CEditView::UnlockBuffer Odblokowuje bufor.

Metody chronione

Nazwa/nazwisko opis
CEditView::OnFindNext Znajduje następne wystąpienie ciągu tekstowego.
CEditView::OnReplaceAll Zamienia wszystkie wystąpienia danego ciągu na nowy ciąg.
CEditView::OnReplaceSel Zamienia bieżące zaznaczenie.
CEditView::OnTextNotFound Wywoływana, gdy operacja znajdowania nie pasuje do dowolnego dodatkowego tekstu.

Publiczne elementy członkowskie danych

Nazwa/nazwisko opis
CEditView::d wStyleDefault Domyślny styl dla obiektów typu CEditView.

Uwagi

Klasa CEditView udostępnia następujące dodatkowe funkcje:

  • Drukowania.

  • Znajdź i zamień.

Ponieważ klasa CEditView jest pochodną klasy CView, obiekty klasy CEditView mogą być używane z dokumentami i szablonami dokumentów.

Tekst każdej CEditView kontrolki jest przechowywany we własnym obiekcie pamięci globalnej. Aplikacja może mieć dowolną liczbę CEditView obiektów.

Utwórz obiekty typu CEditView , jeśli chcesz, aby okno edycji z dodanymi funkcjami wymienionymi powyżej lub jeśli chcesz używać prostych funkcji edytora tekstu. Obiekt CEditView może zajmować cały obszar klienta okna. Utwórz własne klasy z CEditView , aby dodać lub zmodyfikować podstawową funkcjonalność lub zadeklarować klasy, które można dodać do szablonu dokumentu.

Domyślna implementacja klasy CEditView obsługuje następujące polecenia: ID_EDIT_SELECT_ALL, ID_EDIT_FIND, ID_EDIT_REPLACE, ID_EDIT_REPEAT i ID_FILE_PRINT.

Domyślny limit CEditView znaków to (1024 * 1024 - 1 = 1048575). Można to zmienić, wywołując funkcję EM_LIMITTEXT podstawowej kontrolki edycji. Jednak limity różnią się w zależności od systemu operacyjnego i typu kontrolki edycji (pojedynczej lub wielowierszowej). Aby uzyskać więcej informacji na temat tych limitów, zobacz EM_LIMITTEXT.

Aby zmienić ten limit w kontrolce, przesłoń OnCreate() funkcję dla CEditView klasy i wstaw następujący wiersz kodu:

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

Obiekty typu CEditView (lub typów pochodnych z CEditView) mają następujące ograniczenia:

  • CEditView nie implementuje wartości true, co widzisz jest to, co otrzymujesz (WYSIWYG) edycji. Jeśli istnieje możliwość wyboru między czytelnością na ekranie a dopasowaniem drukowanych danych wyjściowych, CEditView wybiera czytelność ekranu.

  • CEditView może wyświetlać tekst tylko w jednej czcionki. Nie jest obsługiwane żadne specjalne formatowanie znaków. Aby uzyskać więcej możliwości, zobacz klasę CRichEditView .

  • Ilość tekstu, który CEditView może zawierać, jest ograniczona. Limity są takie same jak w przypadku kontrolki CEdit .

Aby uzyskać więcej informacji na temat CEditViewprogramu , zobacz Klasy widoków pochodnych dostępne w MFC.

Hierarchia dziedziczenia

Cobject

Ccmdtarget

Cwnd

Cview

Cctrlview

CEditView

Wymagania

Nagłówek: afxext.h

CEditView::CEditView

Tworzy obiekt typu CEditView.

CEditView();

Uwagi

Po utworzeniu obiektu należy wywołać funkcję CWnd::Create , zanim zostanie użyta kontrolka edycji. Jeśli utworzysz klasę i CEditView dodasz ją do szablonu przy użyciu metody CWinApp::AddDocTemplate, struktura wywołuje zarówno ten konstruktor, jak Create i funkcję.

CEditView::d wStyleDefault

Zawiera domyślny styl CEditView obiektu.

static const DWORD dwStyleDefault;

Uwagi

Przekaż ten statyczny element członkowski jako parametr dwStyle funkcji, aby uzyskać domyślny styl dla CEditViewCreate obiektu.

CEditView::FindText

Wywołaj funkcję , FindText aby przeszukać CEditView bufor tekstu obiektu.

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

Parametry

Lpszfind
Tekst do znalezienia.

bNext
Określa kierunek wyszukiwania. Jeśli wartość TRUE, kierunek wyszukiwania znajduje się na końcu buforu. Jeśli wartość FALSE, kierunek wyszukiwania zbliża się do początku buforu.

bCase
Określa, czy w wyszukiwaniu jest uwzględniana wielkość liter. Jeśli wartość TRUE, w wyszukiwaniu jest uwzględniana wielkość liter. Jeśli wartość FALSE, wyszukiwanie nie uwzględnia wielkości liter.

Wartość zwracana

Niezero, jeśli zostanie znaleziony tekst wyszukiwania; w przeciwnym razie 0.

Uwagi

Ta funkcja wyszukuje tekst w buforze tekstu określonego przez lpszFind, zaczynając od bieżącego zaznaczenia, w kierunku określonym przez bNext i z czułością wielkości liter określoną przez bCase. Jeśli tekst zostanie znaleziony, ustawia zaznaczenie na znaleziony tekst i zwraca wartość niezerową. Jeśli tekst nie zostanie znaleziony, funkcja zwróci wartość 0.

Zwykle nie trzeba wywoływać funkcji, chyba że zastąpisz metodę , która wywołuje metodę FindTextFindText.OnFindNext

CEditView::GetBufferLength

Wywołaj tę funkcję składową, aby uzyskać liczbę znaków aktualnie w buforze kontrolki edycji, a nie w tym terminator o wartości null.

UINT GetBufferLength() const;

Wartość zwracana

Długość ciągu w buforze.

CEditView::GetEditCtrl

Wywołaj metodę GetEditCtrl , aby uzyskać odwołanie do kontrolki edycji używanej przez widok edycji.

CEdit& GetEditCtrl() const;

Wartość zwracana

Odwołanie do CEdit obiektu.

Uwagi

Ta kontrolka jest typu CEdit, więc można manipulować kontrolką edycji systemu Windows bezpośrednio przy użyciu funkcji składowych CEdit .

Uwaga

CEdit Za pomocą obiektu można zmienić stan podstawowej kontrolki edycji systemu Windows. Na przykład nie należy zmieniać ustawień karty przy użyciu funkcji CEdit::SetTabStops , ponieważ CEditView buforuje te ustawienia do użycia zarówno w kontrolce edycji, jak i w drukowaniu. Zamiast tego użyj CEditView ::SetTabStops.

Przykład

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

Wywołaj metodę GetPrinterFont , aby uzyskać wskaźnik do obiektu CFont opisującego bieżącą czcionkę drukarki.

CFont* GetPrinterFont() const;

Wartość zwracana

Wskaźnik do obiektu, który określa bieżącą CFont czcionkę drukarki; Wartość NULL, jeśli czcionka drukarki nie została ustawiona. Wskaźnik może być tymczasowy i nie powinien być przechowywany do późniejszego użycia.

Uwagi

Jeśli czcionka drukarki nie została ustawiona, domyślne zachowanie CEditView drukowania klasy polega na drukowaniu przy użyciu tej samej czcionki używanej do wyświetlania.

Użyj tej funkcji, aby określić bieżącą czcionkę drukarki. Jeśli nie jest to żądana czcionka drukarki, użyj CEditView::SetPrinterFont , aby ją zmienić.

CEditView::GetSelectedText

Wywołaj metodę GetSelectedTextCString , aby skopiować zaznaczony tekst do obiektu, aż do końca zaznaczenia lub znaku poprzedzającego pierwszy znak powrotu karetki w zaznaczeniu.

void GetSelectedText(CString& strResult) const;

Parametry

strResult
Odwołanie do CString obiektu, który ma otrzymać zaznaczony tekst.

CEditView::LockBuffer

Wywołaj tę funkcję składową, aby uzyskać wskaźnik do buforu. Nie należy modyfikować buforu.

LPCTSTR LockBuffer() const;

Wartość zwracana

Wskaźnik do buforu kontrolki edycji.

CEditView::OnFindNext

Wyszukuje tekst w buforze dla tekstu określonego przez lpszFind w kierunku określonym przez bNext z poufnością wielkości liter określoną przez bCase.

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

Parametry

Lpszfind
Tekst do znalezienia.

bNext
Określa kierunek wyszukiwania. Jeśli wartość TRUE, kierunek wyszukiwania znajduje się na końcu buforu. Jeśli wartość FALSE, kierunek wyszukiwania zbliża się do początku buforu.

bCase
Określa, czy w wyszukiwaniu jest uwzględniana wielkość liter. Jeśli wartość TRUE, w wyszukiwaniu jest uwzględniana wielkość liter. Jeśli wartość FALSE, wyszukiwanie nie uwzględnia wielkości liter.

Uwagi

Wyszukiwanie rozpoczyna się na początku bieżącego zaznaczenia i jest wykonywane za pomocą wywołania metody FindText. W domyślnej implementacji wywołuje metodę OnTextNotFound, OnFindNext jeśli tekst nie zostanie znaleziony.

Zastąp OnFindNext , aby zmienić sposób wyszukiwania tekstu obiektu pochodnego CEditView. CEditView wywołuje OnFindNext , gdy użytkownik wybierze przycisk Znajdź dalej w standardowym oknie dialogowym Znajdowanie.

CEditView::OnReplaceAll

CEditView wywołuje OnReplaceAll , gdy użytkownik wybierze przycisk Zamień wszystko w standardowym oknie dialogowym Zamień.

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

Parametry

Lpszfind
Tekst do znalezienia.

lpszReplace
Tekst, który ma zastąpić tekst wyszukiwania.

bCase
Określa, czy w wyszukiwaniu jest uwzględniana wielkość liter. Jeśli wartość TRUE, w wyszukiwaniu jest uwzględniana wielkość liter. Jeśli wartość FALSE, wyszukiwanie nie uwzględnia wielkości liter.

Uwagi

OnReplaceAll wyszukuje tekst w buforze dla tekstu określonego przez lpszFind z uwzględnieniem wielkości liter określonej przez wartość bCase. Wyszukiwanie rozpoczyna się na początku bieżącego zaznaczenia. Za każdym razem, gdy tekst wyszukiwania zostanie znaleziony, ta funkcja zastępuje to wystąpienie tekstu tekstem określonym przez lpszReplace. Wyszukiwanie odbywa się za pomocą wywołania metody FindText. W implementacji domyślnej element OnTextNotFound jest wywoływany, jeśli tekst nie zostanie znaleziony.

Jeśli bieżące zaznaczenie nie jest zgodne z lpszFind, zaznaczenie zostanie zaktualizowane do pierwszego wystąpienia tekstu określonego przez lpszFind , a zamiana nie jest wykonywana. Dzięki temu użytkownik może potwierdzić, że jest to, co chce zrobić, gdy zaznaczenie nie pasuje do tekstu, który ma zostać zastąpiony.

Zastąp OnReplaceAll , aby zmienić sposób CEditViewzastępowania tekstu przez obiekt pochodny.

CEditView::OnReplaceSel

CEditView wywołuje OnReplaceSel , gdy użytkownik wybierze przycisk Zamień w standardowym oknie dialogowym Zamień.

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

Parametry

Lpszfind
Tekst do znalezienia.

bNext
Określa kierunek wyszukiwania. Jeśli wartość TRUE, kierunek wyszukiwania znajduje się na końcu buforu. Jeśli wartość FALSE, kierunek wyszukiwania zbliża się do początku buforu.

bCase
Określa, czy w wyszukiwaniu jest uwzględniana wielkość liter. Jeśli wartość TRUE, w wyszukiwaniu jest uwzględniana wielkość liter. Jeśli wartość FALSE, wyszukiwanie nie uwzględnia wielkości liter.

lpszReplace
Tekst, który zastąpi znaleziony tekst.

Uwagi

Po zastąpieniu zaznaczenia ta funkcja przeszukuje tekst w buforze pod kątem następnego wystąpienia tekstu określonego przez lpszFind w kierunku określonym przez bNext z czułością wielkości liter określoną przez bCase. Wyszukiwanie odbywa się za pomocą wywołania metody FindText. Jeśli tekst nie zostanie znaleziony, zostanie wywołana funkcja OnTextNotFound .

Zastąp OnReplaceSel , aby zmienić sposób, w jaki CEditViewobiekt pochodny zastępuje zaznaczony tekst.

CEditView::OnTextNotFound

Zastąpi tę funkcję, aby zmienić domyślną implementację, która wywołuje funkcję MessageBeepsystemu Windows .

virtual void OnTextNotFound(LPCTSTR lpszFind);

Parametry

Lpszfind
Tekst do znalezienia.

CEditView::P rintInsideRect

Wywołaj metodę PrintInsideRect drukowania tekstu w prostokątze określonym przez rectLayout.

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

Parametry

Pdc
Wskaźnik do kontekstu urządzenia drukarki.

rectLayout
Odwołanie do obiektu CRect lub struktury RECT określającego prostokąt, w którym ma być renderowany tekst.

nIndexStart
Indeks w buforze pierwszego znaku do renderowania.

nIndexStop
Indeks w buforze znaku po ostatnim znaku do renderowania.

Wartość zwracana

Indeks następnego znaku do wydrukowania (czyli znak po ostatnim renderowanym znaku).

Uwagi

Jeśli kontrolka CEditView nie ma stylu ES_AUTOHSCROLL, tekst jest owinięty w prostokąt renderowania. Jeśli kontrolka ma styl ES_AUTOHSCROLL, tekst zostanie obcięty na prawej krawędzi prostokąta.

Element rect.bottomobiektu rectLayout jest zmieniany tak, aby wymiary prostokąta definiowały część oryginalnego prostokąta zajmowanego przez tekst.

CEditView::SerializeRaw

Wywołaj metodę SerializeRawCArchive , aby obiekt odczytał lub zapisał tekst w obiekcie do CEditView pliku tekstowego.

void SerializeRaw(CArchive& ar);

Parametry

Ar
Odwołanie do CArchive obiektu, który przechowuje serializowany tekst.

Uwagi

SerializeRaw różni się od CEditViewwewnętrznej implementacji Serialize w programie , ponieważ odczytuje i zapisuje tylko tekst, bez poprzedzających danych opisu obiektu.

CEditView::SetPrinterFont

Wywołaj metodę SetPrinterFont , aby ustawić czcionkę drukarki na czcionkę określoną przez pFont.

void SetPrinterFont(CFont* pFont);

Parametry

pFont
Wskaźnik do obiektu typu CFont. Jeśli wartość NULL, czcionka używana do drukowania jest oparta na czcionki wyświetlanej.

Uwagi

Jeśli chcesz, aby widok zawsze używał określonej czcionki do drukowania, dołącz wywołanie funkcji SetPrinterFont klasy OnPreparePrinting . Ta funkcja wirtualna jest wywoływana przed drukowaniem, więc przed wydrukowaniem zawartości widoku następuje zmiana czcionki.

CEditView::SetTabStops

Wywołaj tę funkcję, aby ustawić tabulatory używane do wyświetlania i drukowania.

void SetTabStops(int nTabStops);

Parametry

nTabStops
Szerokość każdego zatrzymania karty w jednostkach dialogowych.

Uwagi

Obsługiwana jest tylko jedna szerokość zatrzymania tabulatora. ( CEdit obiekty obsługują wiele szerokości kart). Szerokości znajdują się w jednostkach dialogowych, które są równe jednej czwartej średniej szerokości znaku (na podstawie tylko wielkich i małych liter) czcionki używanej podczas drukowania lub wyświetlania. Nie należy używać CEdit::SetTabStops elementu , ponieważ CEditView musi buforować wartość tab-stop.

Ta funkcja modyfikuje tylko karty obiektu, dla którego jest wywoływany. Aby zmienić tabulatory dla każdego CEditView obiektu w aplikacji, wywołaj funkcję każdego obiektu SetTabStops .

Przykład

Ten fragment kodu ustawia tabulatory w kontrolce na co czwarty znak, dokładnie mierząc czcionkę używaną przez kontrolkę.

// 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

Wywołaj tę funkcję składową, aby odblokować bufor.

void UnlockBuffer() const;

Uwagi

Wywołaj połączenie UnlockBuffer po zakończeniu korzystania ze wskaźnika zwróconego przez funkcję LockBuffer.

Zobacz też

Przykładowy SUPERPAD MFC
Klasa CCtrlView
Wykres hierarchii
Klasa CEdit
Klasa CDocument
Klasa CDocTemplate
Klasa CCtrlView
Klasa CRichEditView