Dela via


CEditView-klass

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:

  • CEditView implementerar 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 utdata CEditView väljer du skärmläsbarhet.

  • CEditView kan bara visa text i ett enda teckensnitt. Ingen specialteckenformatering stöds. Mer funktioner finns i CRichEditView för klassen.

  • Mängden text som en CEditView kan innehålla är begränsad. Gränserna är desamma som för CEdit kontrollen.

Mer information om CEditViewfinns i Härledda vyklasser som är tillgängliga i MFC.

Arvshierarki

CObject

CCmdTarget

CWnd

CView

CCtrlView

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