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 CView
CEditView
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 proCEdit
ovládací prvek.
Další informace naleznete CEditView
v 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ý CEditView
objekt 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 CEditView
objektem.
CEditView::OnTextNotFound
Přepsat tuto funkci změnit výchozí implementaci, která volá funkci MessageBeep
Windows .
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 CEditView
interní 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