Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En typ av vyklass som tillhandahåller funktionerna i en Windows-redigeringskontroll och som kan användas för att implementera enkla funktioner i textredigeraren.
Syntax
class CEditView : public CCtrlView
Medlemmar
Offentliga konstruktorer
| Namn | Beskrivning |
|---|---|
| CEditView::CEditView | Konstruerar ett objekt av typen CEditView. |
Offentliga metoder
| Namn | Beskrivning |
|---|---|
| CEditView::FindText | Söker efter en sträng i texten. |
| CEditView::GetBufferLength | Hämtar längden på teckenbufferten. |
| CEditView::GetEditCtrl | Ger åtkomst till delen CEdit av ett CEditView objekt (Windows-redigeringskontrollen). |
| CEditView::GetPrinterFont | Hämtar det aktuella skrivarteckensnittet. |
| CEditView::GetSelectedText | Hämtar den aktuella textmarkeringen. |
| CEditView::LockBuffer | Låser bufferten. |
| CEditView::P rintInsideRect | Renderar text i en viss rektangel. |
| CEditView::SerializeRaw | Serialiserar ett CEditView objekt till disken som råtext. |
| CEditView::SetPrinterFont | Anger ett nytt skrivarteckensnitt. |
| CEditView::SetTabStops | Anger tabbstopp för både skärmvisning och utskrift. |
| CEditView::UnlockBuffer | Låser upp bufferten. |
Skyddade metoder
| Namn | Beskrivning |
|---|---|
| CEditView::OnFindNext | Söker efter nästa förekomst av en textsträng. |
| CEditView::OnReplaceAll | Ersätter alla förekomster av en viss sträng med en ny sträng. |
| CEditView::OnReplaceSel | Ersätter aktuell markering. |
| CEditView::OnTextNotFound | Anropas när en sökåtgärd inte matchar någon ytterligare text. |
Medlemmar i offentliga data
| Namn | Beskrivning |
|---|---|
| CEditView::d wStyleDefault | Standardformat för objekt av typen CEditView. |
Anmärkningar
Klassen CEditView innehåller följande ytterligare funktioner:
Trycka.
Sök efter och ersätt.
Eftersom klassen CEditView är ett derivat av klassen CViewkan objekt av klassen CEditView användas med dokument och dokumentmallar.
Varje CEditView kontrolls text sparas i ett eget globalt minnesobjekt. Programmet kan ha valfritt antal CEditView objekt.
Skapa objekt av typen CEditView om du vill ha ett redigeringsfönster med de tillagda funktionerna som anges ovan, eller om du vill ha enkla funktioner för textredigeraren. Ett CEditView objekt kan uppta hela klientområdet i ett fönster. Härled dina egna klasser från CEditView för att lägga till eller ändra de grundläggande funktionerna, eller för att deklarera klasser som kan läggas till i en dokumentmall.
Standardimplementeringen av klassen CEditView hanterar följande kommandon: ID_EDIT_SELECT_ALL, ID_EDIT_FIND, ID_EDIT_REPLACE, ID_EDIT_REPEAT och ID_FILE_PRINT.
Standardteckengränsen för CEditView är (1024 * 1024 – 1 = 1048575). Detta kan ändras genom att anropa funktionen EM_LIMITTEXT för den underliggande redigeringskontrollen. Gränserna skiljer sig dock beroende på operativsystemet och typen av redigeringskontroll (enkel eller flera rader). Mer information om dessa gränser finns i EM_LIMITTEXT.
Om du vill ändra den här gränsen i kontrollen åsidosätter du OnCreate() funktionen för klassen CEditView och infogar följande kodrad:
GetEditCtrl().SetLimitText(nNewVal); //nNewVal, the new character limit
Objekt av typen CEditView (eller av typer som härletts från CEditView) har följande begränsningar:
CEditViewimplementerar inte sant vad du ser är vad du får (WYSIWYG) redigering. Om det finns ett val mellan läsbarhet på skärmen och matchande utdataCEditViewväljer du skärmläsbarhet.CEditViewkan bara visa text i ett enda teckensnitt. Ingen specialteckenformatering stöds. Mer funktioner finns i CRichEditView för klassen.Mängden text som en
CEditViewkan innehålla är begränsad. Gränserna är desamma som förCEditkontrollen.
Mer information om CEditViewfinns i Härledda vyklasser som är tillgängliga i MFC.
Arvshierarki
CEditView
Kravspecifikation
Rubrik: afxext.h
CEditView::CEditView
Konstruerar ett objekt av typen CEditView.
CEditView();
Anmärkningar
När du har skapat objektet måste du anropa funktionen CWnd::Create innan redigeringskontrollen används. Om du härleder en klass från CEditView och lägger till den i mallen med , CWinApp::AddDocTemplateanropar ramverket både den här konstruktorn och Create funktionen.
CEditView::d wStyleDefault
Innehåller standardformatet för CEditView objektet.
static const DWORD dwStyleDefault;
Anmärkningar
Skicka den här statiska medlemmen som dwStyle-parametern för Create funktionen för att hämta standardformatet CEditView för objektet.
CEditView::FindText
FindText Anropa funktionen för att söka i CEditView objektets textbuffert.
BOOL FindText(
LPCTSTR lpszFind,
BOOL bNext = TRUE,
BOOL bCase = TRUE);
Parameterar
lpszFind
Texten som ska hittas.
bNästa
Anger sökriktningen. Om true är sökriktningen mot slutet av bufferten. Om det är FALSKT är sökriktningen mot början av bufferten.
bCase
Anger om sökningen är skiftlägeskänslig. Om TRUE är sökningen skiftlägeskänslig. Om false är sökningen inte skiftlägeskänslig.
Returvärde
Nonzero om söktexten hittas; annars 0.
Anmärkningar
Den här funktionen söker i texten i bufferten efter den text som anges av lpszFind, med början vid den aktuella markeringen, i den riktning som anges av bNext och med skiftlägeskänslighet som anges av bCase. Om texten hittas anger den markeringen till den hittade texten och returnerar ett värde som inte är noll. Om texten inte hittas returnerar funktionen 0.
Normalt behöver du inte anropa FindText funktionen om du inte åsidosätter OnFindNext, som anropar FindText.
CEditView::GetBufferLength
Anropa den här medlemsfunktionen för att hämta antalet tecken som för närvarande finns i redigeringskontrollens buffert, inklusive null-avslutningen.
UINT GetBufferLength() const;
Returvärde
Längden på strängen i bufferten.
CEditView::GetEditCtrl
Anropa GetEditCtrl för att hämta en referens till redigeringskontrollen som används av redigeringsvyn.
CEdit& GetEditCtrl() const;
Returvärde
En referens till ett CEdit objekt.
Anmärkningar
Den här kontrollen är av typen CEdit, så du kan ändra Windows-redigeringskontrollen direkt med hjälp av medlemsfunktionerna CEdit .
Försiktighet
Om du CEdit använder objektet kan du ändra tillståndet för den underliggande Windows-redigeringskontrollen. Du bör till exempel inte ändra flikinställningarna med hjälp av funktionen CEdit::SetTabStops eftersom CEditView cachelagrar dessa inställningar för användning både i redigeringskontrollen och vid utskrift. Använd i stället CEditView::SetTabStops.
Exempel
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
Anropa GetPrinterFont för att hämta en pekare till ett CFont-objekt som beskriver det aktuella skrivarteckensnittet.
CFont* GetPrinterFont() const;
Returvärde
En pekare till ett CFont objekt som anger det aktuella skrivarteckensnittet. NULL om skrivarteckensnittet inte har angetts. Pekaren kan vara tillfällig och bör inte lagras för senare användning.
Anmärkningar
Om skrivarteckensnittet inte har angetts är standardutskriftsbeteendet för CEditView klassen att skriva ut med samma teckensnitt som används för visning.
Använd den här funktionen för att fastställa det aktuella skrivarteckensnittet. Om det inte är önskat skrivarteckensnitt använder du CEditView::SetPrinterFont för att ändra det.
CEditView::GetSelectedText
Anropa GetSelectedText för att kopiera den markerade texten till ett CString objekt, fram till slutet av markeringen eller tecknet före det första vagnreturtecknet i markeringen.
void GetSelectedText(CString& strResult) const;
Parameterar
strResult
En referens till det CString objekt som ska ta emot den markerade texten.
CEditView::LockBuffer
Anropa den här medlemsfunktionen för att hämta en pekare till bufferten. Bufferten bör inte ändras.
LPCTSTR LockBuffer() const;
Returvärde
En pekare till redigeringskontrollens buffert.
CEditView::OnFindNext
Söker i texten i bufferten efter den text som anges av lpszFind, i den riktning som anges av bNext, med skiftlägeskänslighet som anges av bCase.
virtual void OnFindNext(
LPCTSTR lpszFind,
BOOL bNext,
BOOL bCase);
Parameterar
lpszFind
Texten som ska hittas.
bNästa
Anger sökriktningen. Om true är sökriktningen mot slutet av bufferten. Om det är FALSKT är sökriktningen mot början av bufferten.
bCase
Anger om sökningen är skiftlägeskänslig. Om TRUE är sökningen skiftlägeskänslig. Om false är sökningen inte skiftlägeskänslig.
Anmärkningar
Sökningen startar i början av den aktuella markeringen och utförs via ett anrop till FindText. I standardimplementeringen OnFindNext anropar OnTextNotFound om texten inte hittas.
Åsidosätt OnFindNext för att ändra hur ett CEditView-härlett objekt söker i text.
CEditView anropar OnFindNext när användaren väljer knappen Sök nästa i dialogrutan Sök som standard.
CEditView::OnReplaceAll
CEditView anropar OnReplaceAll när användaren väljer knappen Ersätt alla i dialogrutan Ersätt som standard.
virtual void OnReplaceAll(
LPCTSTR lpszFind,
LPCTSTR lpszReplace,
BOOL bCase);
Parameterar
lpszFind
Texten som ska hittas.
lpszReplace
Texten som ska ersätta söktexten.
bCase
Anger om sökningen är skiftlägeskänslig. Om TRUE är sökningen skiftlägeskänslig. Om false är sökningen inte skiftlägeskänslig.
Anmärkningar
OnReplaceAll söker i texten i bufferten efter den text som anges av lpszFind, med skiftlägeskänslighet som anges av bCase. Sökningen startar i början av den aktuella markeringen. Varje gång söktexten hittas ersätter den här funktionen den förekomsten av texten med texten som anges av lpszReplace. Sökningen utförs via ett anrop till FindText. I standardimplementeringen anropas OnTextNotFound om texten inte hittas.
Om den aktuella markeringen inte matchar lpszFind uppdateras markeringen till den första förekomsten av texten som anges av lpszFind och ingen ersättning utförs. Detta gör att användaren kan bekräfta att detta är vad de vill göra när markeringen inte matchar texten som ska ersättas.
Åsidosätt OnReplaceAll för att ändra hur ett CEditView-härlett objekt ersätter text.
CEditView::OnReplaceSel
CEditView anropar OnReplaceSel när användaren väljer knappen Ersätt i dialogrutan Ersätt som standard.
virtual void OnReplaceSel(
LPCTSTR lpszFind,
BOOL bNext,
BOOL bCase,
LPCTSTR lpszReplace);
Parameterar
lpszFind
Texten som ska hittas.
bNästa
Anger sökriktningen. Om true är sökriktningen mot slutet av bufferten. Om det är FALSKT är sökriktningen mot början av bufferten.
bCase
Anger om sökningen är skiftlägeskänslig. Om TRUE är sökningen skiftlägeskänslig. Om false är sökningen inte skiftlägeskänslig.
lpszReplace
Texten som ska ersätta den hittade texten.
Anmärkningar
När du har ersatt markeringen söker den här funktionen i texten i bufferten efter nästa förekomst av texten som anges av lpszFind, i den riktning som anges av bNext, med skiftlägeskänslighet som anges av bCase. Sökningen utförs via ett anrop till FindText. Om texten inte hittas anropas OnTextNotFound .
Åsidosätt OnReplaceSel för att ändra hur ett CEditView-derived-objekt ersätter den markerade texten.
CEditView::OnTextNotFound
Åsidosätt den här funktionen för att ändra standardimplementeringen, som anropar Windows-funktionen MessageBeep.
virtual void OnTextNotFound(LPCTSTR lpszFind);
Parameterar
lpszFind
Texten som ska hittas.
CEditView::P rintInsideRect
Anropa PrintInsideRect för att skriva ut text i den rektangel som anges av rectLayout.
UINT PrintInsideRect(
CDC *pDC,
RECT& rectLayout,
UINT nIndexStart,
UINT nIndexStop);
Parameterar
pDC-
Pekare mot skrivarens enhetskontext.
rectLayout
Referens till ett CRect-objekt eller en REKT-struktur som anger den rektangel där texten ska återges.
nIndexStart
Index i bufferten för det första tecknet som återges.
nIndexStop
Index i bufferten för tecknet efter det sista tecknet som ska återges.
Returvärde
Indexet för nästa tecken som ska skrivas ut (det vill: tecknet efter det sista återgivna tecknet).
Anmärkningar
Om kontrollen CEditView inte har formatet ES_AUTOHSCROLL omsluts texten i återgivningsrektangeln. Om kontrollen har formatmallen ES_AUTOHSCROLL klipps texten av till höger i rektangeln.
Elementet rect.bottom i rektLayout-objektet ändras så att rektangelns dimensioner definierar den del av den ursprungliga rektangel som används av texten.
CEditView::SerializeRaw
Anropa SerializeRaw för att låta ett CArchive objekt läsa eller skriva texten i CEditView objektet till en textfil.
void SerializeRaw(CArchive& ar);
Parameterar
Ar
Referens till objektet CArchive som lagrar den serialiserade texten.
Anmärkningar
SerializeRaw skiljer sig från CEditViewden interna implementeringen av Serialize eftersom den endast läser och skriver texten, utan föregående objektbeskrivningsdata.
CEditView::SetPrinterFont
Anropa SetPrinterFont för att ställa in skrivarteckensnittet på det teckensnitt som anges av pFont.
void SetPrinterFont(CFont* pFont);
Parameterar
pFont
En pekare till ett objekt av typen CFont. Om värdet är NULL baseras teckensnittet som används för utskrift på visningsteckensnittet.
Anmärkningar
Om du vill att vyn alltid ska använda ett visst teckensnitt för utskrift ska du inkludera ett anrop till SetPrinterFont i klassens OnPreparePrinting funktion. Den här virtuella funktionen anropas innan utskrift sker, så teckensnittsändringen sker innan vyns innehåll skrivs ut.
CEditView::SetTabStops
Anropa den här funktionen för att ange de tabbstopp som används för visning och utskrift.
void SetTabStops(int nTabStops);
Parameterar
nTabStops
Bredd på varje tabbstopp i dialogenheter.
Anmärkningar
Endast en enda flikstoppsbredd stöds. (CEdit objekt stöder flera flikbredder.) Bredder finns i dialogrutor, som är lika med en fjärdedel av den genomsnittliga teckenbredden (endast baserat på versaler och gemener) för det teckensnitt som användes vid tidpunkten för utskrift eller visning. Du bör inte använda CEdit::SetTabStops eftersom CEditView måste cachelagrat tab-stop-värdet.
Den här funktionen ändrar endast flikarna i det objekt som den anropas för. Om du vill ändra tabbstoppen för varje CEditView objekt i programmet anropar du varje objekts SetTabStops funktion.
Exempel
Det här kodfragmentet anger att fliken stannar i kontrollen till vart fjärde tecken genom att noggrant mäta teckensnittet som kontrollen använder.
// 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
Anropa den här medlemsfunktionen för att låsa upp bufferten.
void UnlockBuffer() const;
Anmärkningar
Anropa UnlockBuffer när du är klar med pekaren som returneras av LockBuffer.
Se även
MFC-exempel-SUPERPAD
CCtrlView-klass
hierarkidiagram
CEdit-klass
CDocument-klass
CDocTemplate-klass
CCtrlView-klass
CRichEditView-klass