Sdílet prostřednictvím


CEditView – třída

Typ třídy zobrazení, která poskytuje funkce ovládacího prvku pro úpravy systému Windows a lze jej použít k implementaci jednoduchých funkcí textového editoru.

Syntaxe

class CEditView : public CCtrlView

Členové

Veřejné konstruktory

Název Popis
CEditView::CEditView Vytvoří objekt typu CEditView.

Veřejné metody

Název Popis
CEditView::FindText Vyhledá řetězec v textu.
CEditView::GetBufferLength Získá délku vyrovnávací paměti znaků.
CEditView::GetEditCtrl Poskytuje přístup k CEdit části objektu CEditView (ovládací prvek pro úpravy Systému Windows).
CEditView::GetPrinterFont Načte aktuální písmo tiskárny.
CEditView::GetSelectedText Načte aktuální výběr textu.
CEditView::LockBuffer Uzamkne vyrovnávací paměť.
CEditView::P rintInsideRect Vykreslí text uvnitř daného obdélníku.
CEditView::SerializeRaw Serializuje CEditView objekt na disk jako nezpracovaný text.
CEditView::SetPrinterFont Nastaví nové písmo tiskárny.
CEditView::SetTabStops Nastaví zarážky tabulátoru pro zobrazení i tisk obrazovky.
CEditView::UnlockBuffer Odemkne vyrovnávací paměť.

Chráněné metody

Název Popis
CEditView::OnFindNext Najde další výskyt textového řetězce.
CEditView::OnReplaceAll Nahradí všechny výskyty daného řetězce novým řetězcem.
CEditView::OnReplaceSel Nahradí aktuální výběr.
CEditView::OnTextNotFound Volá se, když operace hledání neodpovídá žádnému dalšímu textu.

Veřejné datové členy

Název Popis
CEditView::d wStyleDefault Výchozí styl pro objekty typu CEditView.

Poznámky

Třída CEditView poskytuje následující další funkce:

  • Tisknout.

  • Najít a nahradit.

Protože třída CEditView je derivát třídy , objekty třídy CViewCEditView lze použít s dokumenty a šablony dokumentů.

Text každého CEditView ovládacího prvku se uchovává ve vlastním objektu globální paměti. Aplikace může mít libovolný počet CEditView objektů.

Objekty typu CEditView vytvořte, pokud chcete okno pro úpravy s přidanými funkcemi uvedenými výše nebo pokud chcete jednoduché funkce textového editoru. Objekt CEditView může zabírat celou oblast klienta okna. Odvozujte vlastní třídy, od CEditView kterých chcete přidat nebo upravit základní funkce, nebo deklarovat třídy, které lze přidat do šablony dokumentu.

Výchozí implementace třídy CEditView zpracovává následující příkazy: ID_EDIT_SELECT_ALL, ID_EDIT_FIND, ID_EDIT_REPLACE, ID_EDIT_REPEAT a ID_FILE_PRINT.

Výchozí limit znaků je CEditView (1024 * 1024 – 1 = 1048575). To lze změnit voláním EM_LIMITTEXT funkce základního ovládacího prvku pro úpravy. Omezení se ale liší v závislosti na operačním systému a typu ovládacího prvku pro úpravy (jeden nebo víceřádkový). Další informace o těchto omezeních najdete v tématu EM_LIMITTEXT.

Chcete-li změnit tento limit v ovládacím prvku, přepište OnCreate() funkci třídy CEditView a vložte následující řádek kódu:

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

Objekty typu CEditView (nebo typů odvozených z CEditView) mají následující omezení:

  • CEditView neimplementuje true, co vidíte, je to, co získáte (WYSIWYG) úpravy. Pokud máte na obrazovce možnost čtení a odpovídající tištěný výstup, CEditView můžete zvolit čitelnost obrazovky.

  • CEditView může zobrazovat text pouze v jednom písmu. Není podporováno žádné speciální formátování znaků. Další možnosti najdete v třídě CRichEditView .

  • Množství textu, který CEditView může obsahovat, je omezené. Omezení jsou stejná jako pro CEdit ovládací prvek.

Další informace naleznete CEditViewv tématu Odvozené třídy zobrazení dostupné v prostředí MFC.

Hierarchie dědičnosti

Objekt CObject

CCmdTarget

CWnd

CView

CCtrlView

CEditView

Požadavky

Hlavička: afxext.h

CEditView::CEditView

Vytvoří objekt typu CEditView.

CEditView();

Poznámky

Po vytvoření objektu je nutné volat CWnd::Create funkce před použitím ovládacího prvku pro úpravy. Pokud odvozujete třídu a CEditView přidáte ji do šablony pomocí CWinApp::AddDocTemplate, architektura volá tento konstruktor i Create funkci.

CEditView::d wStyleDefault

Obsahuje výchozí styl objektu CEditView .

static const DWORD dwStyleDefault;

Poznámky

Předat tento statický člen jako dwStyle parametr Create funkce získat výchozí styl objektu CEditView .

CEditView::FindText

FindText Voláním funkce vyhledejte textovou vyrovnávací paměť objektuCEditView.

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

Parametry

lpszFind
Text, který se má najít.

bNext
Určuje směr hledání. Pokud je pravda, směr hledání je směrem ke konci vyrovnávací paměti. Pokud je hodnota FALSE, směr hledání je směrem k začátku vyrovnávací paměti.

bCase
Určuje, jestli je hledání citlivé na malá a velká písmena. Pokud je hodnota TRUE, v hledání se rozlišují malá a velká písmena. Pokud je hodnota FALSE, hledání nerozlišuje malá a velká písmena.

Návratová hodnota

Nenulové, pokud je nalezen hledaný text; jinak 0.

Poznámky

Tato funkce vyhledá text ve vyrovnávací paměti pro text určený lpszFind, počínaje aktuálním výběrem, ve směru určeném parametrem bNext a citlivostí písmen určeným písmenem bCase. Pokud se text najde, nastaví výběr na nalezený text a vrátí nenulovou hodnotu. Pokud se text nenajde, vrátí funkce hodnotu 0.

Obvykle není nutné volat FindText funkci, pokud nepřepíšete OnFindNext, která volání FindText.

CEditView::GetBufferLength

Voláním této členské funkce získáte počet znaků, které jsou aktuálně v vyrovnávací paměti ovládacího prvku pro úpravy, a to nezahrnuje ukončovací znak null.

UINT GetBufferLength() const;

Návratová hodnota

Délka řetězce v vyrovnávací paměti.

CEditView::GetEditCtrl

Volání GetEditCtrl pro získání odkazu na ovládací prvek pro úpravy používaný zobrazením pro úpravy

CEdit& GetEditCtrl() const;

Návratová hodnota

Odkaz na CEdit objekt.

Poznámky

Tento ovládací prvek je typu CEdit, takže můžete manipulovat s ovládacím prvku pro úpravy Systému Windows přímo pomocí CEdit členských funkcí.

Upozornění

Použití objektu CEdit může změnit stav základního ovládacího prvku pro úpravy systému Windows. Nastavení karty byste například neměli měnit pomocí funkce CEdit::SetTabStops , protože CEditView tato nastavení ukládá do mezipaměti pro použití v ovládacím prvku pro úpravy i při tisku. Místo toho použijte CEditView::SetTabStops.

Příklad

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

Volání GetPrinterFont pro získání ukazatele na objekt CFont , který popisuje aktuální písmo tiskárny.

CFont* GetPrinterFont() const;

Návratová hodnota

Ukazatel na CFont objekt, který určuje aktuální písmo tiskárny; NULL, pokud písmo tiskárny nebylo nastaveno. Ukazatel může být dočasný a neměl by být uložen pro pozdější použití.

Poznámky

Pokud písmo tiskárny nebylo nastaveno, je výchozím chováním CEditView při tisku třídy tisk pomocí stejného písma použitého pro zobrazení.

Tato funkce slouží k určení aktuálního písma tiskárny. Pokud není požadované písmo tiskárny, změňte ho pomocí CEditView::SetPrinterFont .

CEditView::GetSelectedText

Volání GetSelectedText pro zkopírování vybraného textu do CString objektu, až do konce výběru nebo znaku předcházejícího prvnímu znaku návratu na začátek řádku ve výběru.

void GetSelectedText(CString& strResult) const;

Parametry

strResult
Odkaz na CString objekt, který má přijmout vybraný text.

CEditView::LockBuffer

Voláním této členské funkce získáte ukazatel na vyrovnávací paměť. Vyrovnávací paměť by neměla být změněna.

LPCTSTR LockBuffer() const;

Návratová hodnota

Ukazatel na vyrovnávací paměť ovládacího prvku pro úpravy.

CEditView::OnFindNext

Vyhledá text ve vyrovnávací paměti pro text určený lpszFind ve směru určeném parametrem bNext s citlivostí písmen určenou písmenem bCase.

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

Parametry

lpszFind
Text, který se má najít.

bNext
Určuje směr hledání. Pokud je pravda, směr hledání je směrem ke konci vyrovnávací paměti. Pokud je hodnota FALSE, směr hledání je směrem k začátku vyrovnávací paměti.

bCase
Určuje, jestli je hledání citlivé na malá a velká písmena. Pokud je hodnota TRUE, v hledání se rozlišují malá a velká písmena. Pokud je hodnota FALSE, hledání nerozlišuje malá a velká písmena.

Poznámky

Hledání začíná na začátku aktuálního výběru a provádí se voláním FindText. Ve výchozí implementaci OnFindNext volá OnTextNotFound pokud text nebyl nalezen.

Přepsání OnFindNext pro změnu způsobu, jakým CEditView-odvozený objekt prohledá text. CEditView zavolá OnFindNext , když uživatel zvolí tlačítko Najít další v standardním dialogovém okně Najít.

CEditView::OnReplaceAll

CEditView zavolá OnReplaceAll , když uživatel vybere tlačítko Nahradit vše ve standardním dialogovém okně Nahradit.

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

Parametry

lpszFind
Text, který se má najít.

lpszReplace
Text, který má nahradit hledaný text.

bCase
Určuje, jestli je vyhledávání citlivé na malá a velká písmena. Pokud je hodnota TRUE, v hledání se rozlišují malá a velká písmena. Pokud je hodnota FALSE, hledání nerozlišuje malá a velká písmena.

Poznámky

OnReplaceAll Vyhledá text ve vyrovnávací paměti pro text určený lpszFind s citlivostí písmen určenou písmenem bCase. Hledání začíná na začátku aktuálního výběru. Pokaždé, když se hledaný text najde, nahradí tato funkce výskyt textu textem určeným lpszReplace. Hledání se provádí voláním funkce FindText. Ve výchozí implementaci je OnTextNotFound volána, pokud text nebyl nalezen.

Pokud aktuální výběr neodpovídá lpszFind, výběr se aktualizuje na první výskyt textu určeného lpszFind a nahrazení se neprovede. To uživateli umožní potvrdit, že to je to, co chce udělat, když výběr neodpovídá textu, který má být nahrazen.

Přepsání OnReplaceAll pro změnu způsobu, jakým -odvozený CEditViewobjekt nahrazuje text.

CEditView::OnReplaceSel

CEditView zavolá OnReplaceSel , když uživatel vybere tlačítko Nahradit v standardním dialogovém okně Nahradit.

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

Parametry

lpszFind
Text, který se má najít.

bNext
Určuje směr hledání. Pokud je pravda, směr hledání je směrem ke konci vyrovnávací paměti. Pokud je hodnota FALSE, směr hledání je směrem k začátku vyrovnávací paměti.

bCase
Určuje, jestli je hledání citlivé na malá a velká písmena. Pokud je hodnota TRUE, v hledání se rozlišují malá a velká písmena. Pokud je hodnota FALSE, hledání nerozlišuje malá a velká písmena.

lpszReplace
Text, který má nahradit nalezený text.

Poznámky

Po nahrazení výběru tato funkce vyhledá text ve vyrovnávací paměti pro další výskyt textu určeného lpszFind ve směru určeném parametrem bNext s citlivostí písmen určenou písmenem bCase. Hledání se provádí voláním funkce FindText. Pokud se text nenajde, zavolá se OnTextNotFound .

Přepsání OnReplaceSel pro změnu způsobu nahrazení vybraného textu odvozeným CEditViewobjektem.

CEditView::OnTextNotFound

Přepsat tuto funkci změnit výchozí implementaci, která volá funkci MessageBeepWindows .

virtual void OnTextNotFound(LPCTSTR lpszFind);

Parametry

lpszFind
Text, který se má najít.

CEditView::P rintInsideRect

Volání PrintInsideRect pro tisk textu v obdélníku určeném rectLayoutem

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

Parametry

pDC
Ukazatel na kontext zařízení tiskárny.

rectLayout
Odkaz na objekt CRect nebo STRUKTURU RECT určující obdélník, ve kterém má být text vykreslen.

nIndexStart
Index v vyrovnávací paměti prvního znaku, který se má vykreslit.

nIndexStop
Index v vyrovnávací paměti znaku za posledním znakem, který se má vykreslit.

Návratová hodnota

Index dalšího znaku, který se má vytisknout (to znamená znak následující za posledním vykresleným znakem).

Poznámky

CEditView Pokud ovládací prvek nemá styl ES_AUTOHSCROLL, text se zalomí v obdélníku vykreslování. Pokud ovládací prvek obsahuje styl ES_AUTOHSCROLL, text se ořízne na pravém okraji obdélníku.

Prvek rect.bottom rectLayout objektu je změněn tak, aby rozměry obdélníku definovaly část původního obdélníku, který je obsazen textem.

CEditView::SerializeRaw

Volání SerializeRaw , CArchive které má objekt číst nebo zapisovat text v objektu do textového CEditView souboru.

void SerializeRaw(CArchive& ar);

Parametry

ar
Odkaz na CArchive objekt, který ukládá serializovaný text.

Poznámky

SerializeRaw liší se od CEditViewinterní implementace Serialize v tom, že čte a zapisuje pouze text bez předchozího data popisu objektu.

CEditView::SetPrinterFont

Volání SetPrinterFont pro nastavení písma tiskárny na písmo určené pFont.

void SetPrinterFont(CFont* pFont);

Parametry

pFont
Ukazatel na objekt typu CFont. Pokud je hodnota NULL, písmo použité k tisku je založeno na písmu zobrazení.

Poznámky

Pokud chcete, aby zobrazení pro tisk vždy používalo určité písmo, zahrňte do SetPrinterFont funkce předmětu OnPreparePrinting volání. Tato virtuální funkce se volá před tiskem, takže změna písma probíhá před tiskem obsahu zobrazení.

CEditView::SetTabStops

Voláním této funkce nastavíte zarážky tabulátoru použité pro zobrazení a tisk.

void SetTabStops(int nTabStops);

Parametry

nTabStops
Šířka každé zarážky tabulátoru v jednotkách dialogového okna

Poznámky

Podporuje se pouze šířka s jednou zarážkou tabulátoru. ( CEdit objekty podporují více šířek tabulátoru.) Šířky jsou v jednotkách dialogového okna, které se rovnají jedné čtvrtině průměrné šířky znaků (na základě jenom velkých a malých abecedních znaků) písma použitého při tisku nebo zobrazení. Neměli byste používat CEdit::SetTabStops , protože CEditView je nutné uložit hodnotu zarážky tabulátoru do mezipaměti.

Tato funkce upravuje pouze karty objektu, pro který je volána. Pokud chcete změnit zarážky tabulátoru pro každý CEditView objekt v aplikaci, zavolejte funkci jednotlivých objektů SetTabStops .

Příklad

Tento fragment kódu nastaví zarážky tabulátoru v ovládacím prvku na každý čtvrtý znak pečlivým měřením písma, které ovládací prvek používá.

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

Voláním této členské funkce odemkněte vyrovnávací paměť.

void UnlockBuffer() const;

Poznámky

Volání UnlockBuffer po dokončení pomocí ukazatele vráceného lockBufferem

Viz také

MFC Sample SUPERPAD
CCtrlView – třída
Graf hierarchie
CEdit – třída
CDocument – třída
CDocTemplate – třída
CCtrlView – třída
CRichEditView – třída