Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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í:
CEditViewneimplementuje 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,CEditViewmůžete zvolit čitelnost obrazovky.CEditViewmůž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ý
CEditViewmůže obsahovat, je omezené. Omezení jsou stejná jako proCEditovládací prvek.
Další informace naleznete CEditViewv tématu Odvozené třídy zobrazení dostupné v prostředí MFC.
Hierarchie dědičnosti
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