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
Elementy członkowskie
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:
Drukować.
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 kontrolkiCEdit
.
Aby uzyskać więcej informacji na temat CEditView
programu , zobacz Klasy widoków pochodnych dostępne w MFC.
Hierarchia dziedziczenia
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 CEditView
Create
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ę FindText
FindText
.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ę GetSelectedText
CString
, 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 CEditView
zastę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 CEditView
obiekt pochodny zastępuje zaznaczony tekst.
CEditView::OnTextNotFound
Zastąpi tę funkcję, aby zmienić domyślną implementację, która wywołuje funkcję MessageBeep
systemu 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.bottom
obiektu rectLayout jest zmieniany tak, aby wymiary prostokąta definiowały część oryginalnego prostokąta zajmowanego przez tekst.
CEditView::SerializeRaw
Wywołaj metodę SerializeRaw
CArchive
, 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 CEditView
wewnę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