CEditView-Klasse

Ein Ansichtsklassentyp, die die Funktionalität eines Windows-Bearbeitungssteuerelements bereitstellt und verwendet werden kann, um einfache Textbearbeitungsfunktionalität zu implementieren.

Syntax

class CEditView : public CCtrlView

Member

Öffentliche Konstruktoren

Name Beschreibung
CEditView::CEditView Konstruiert ein Objekt vom Typ CEditView.

Öffentliche Methoden

Name Beschreibung
CEditView::FindText Sucht nach einer Zeichenfolge innerhalb des Texts.
CEditView::GetBufferLength Ruft die Länge des Zeichenpuffers ab.
CEditView::GetEditCtrl Bietet Zugriff auf den CEdit Teil eines CEditView Objekts (das Windows-Bearbeitungssteuerelement).
CEditView::GetPrinterFont Ruft die aktuelle Druckerschriftart ab.
CEditView::GetSelectedText Ruft die aktuelle Textauswahl ab.
CEditView::LockBuffer Sperrt den Puffer.
CEditView::P rintInsideRect Rendert Text in einem bestimmten Rechteck.
CEditView::SerializeRaw Serialisiert ein CEditView Objekt als Rohtext auf datenträger.
CEditView::SetPrinterFont Legt eine neue Druckerschriftart fest.
CEditView::SetTabStops Legt Tabstopps sowohl für die Bildschirmanzeige als auch für den Druck fest.
CEditView::UnlockBuffer Entsperrt den Puffer.

Geschützte Methoden

Name Beschreibung
CEditView::OnFindNext Sucht das nächste Vorkommen einer Textzeichenfolge.
CEditView::OnReplaceAll Ersetzt alle Vorkommen einer bestimmten Zeichenfolge durch eine neue Zeichenfolge.
CEditView::OnReplaceSel Ersetzt die aktuelle Auswahl.
CEditView::OnTextNotFound Wird aufgerufen, wenn ein Suchvorgang keinem weiteren Text entspricht.

Öffentliche Datenmember

Name Beschreibung
CEditView::d wStyleDefault Standardformat für Objekte vom Typ CEditView.

Hinweise

Die CEditView Klasse stellt die folgenden zusätzlichen Funktionen bereit:

  • Drucken

  • Suchen und Ersetzen.

Da es sich bei der Klasse CEditView um eine Ableitung der Klasse CViewhandelt, können Objekte der Klasse CEditView mit Dokumenten und Dokumentvorlagen verwendet werden.

Der CEditView Text jedes Steuerelements wird in einem eigenen globalen Speicherobjekt gespeichert. Ihre Anwendung kann eine beliebige Anzahl von CEditView Objekten haben.

Erstellen Sie Objekte vom Typ CEditView , wenn Sie ein Bearbeitungsfenster mit der oben aufgeführten hinzugefügten Funktionalität oder eine einfache Text-Editor-Funktionalität benötigen. Ein CEditView Objekt kann den gesamten Clientbereich eines Fensters belegen. Leiten Sie Ihre eigenen Klassen ab CEditView , um die grundlegenden Funktionen hinzuzufügen oder zu ändern, oder um Klassen zu deklarieren, die einer Dokumentvorlage hinzugefügt werden können.

Die Standardimplementierung der Klasse CEditView behandelt die folgenden Befehle: ID_EDIT_SELECT_ALL, ID_EDIT_FIND, ID_EDIT_REPLACE, ID_EDIT_REPEAT und ID_FILE_PRINT.

Der Standardzeichengrenzwert CEditView ist (1024 * 1024 - 1 = 1048575). Dies kann durch Aufrufen der EM_LIMITTEXT-Funktion des zugrunde liegenden Bearbeitungssteuerelements geändert werden. Die Grenzwerte unterscheiden sich jedoch je nach Betriebssystem und Art des Bearbeitungssteuerelements (single or multiline). Weitere Informationen zu diesen Grenzwerten finden Sie unter EM_LIMITTEXT.

Um diesen Grenzwert in Ihrem Steuerelement zu ändern, setzen Sie die OnCreate() Funktion für Ihre CEditView Klasse außer Kraft, und fügen Sie die folgende Codezeile ein:

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

Objekte vom Typ CEditView (oder von Typen abgeleitet CEditView) weisen die folgenden Einschränkungen auf:

  • CEditView implementiert nicht wahr, was Sie sehen, was Sie (WYSIWYG) bearbeiten. Wenn es eine Wahl zwischen Lesbarkeit auf dem Bildschirm und passender gedruckter Ausgabe gibt, CEditView entscheiden Sie sich für die Lesbarkeit des Bildschirms.

  • CEditView Text kann nur in einer einzigen Schriftart angezeigt werden. Es wird keine Sonderzeichenformatierung unterstützt. Weitere Funktionen finden Sie unter "CRichEditView".

  • Die Textmenge, die ein CEditView enthalten kann, ist begrenzt. Die Grenzwerte sind identisch mit dem CEdit Steuerelement.

Weitere Informationen CEditViewfinden Sie unter abgeleitete Ansichtsklassen, die in MFC verfügbar sind.

Vererbungshierarchie

CObject

CCmdTarget

CWnd

CView

CCtrlView

CEditView

Anforderungen

Header: afxext.h

CEditView::CEditView

Konstruiert ein Objekt vom Typ CEditView.

CEditView();

Hinweise

Nach dem Erstellen des Objekts müssen Sie die CWnd::Create-Funktion aufrufen, bevor das Bearbeitungssteuerelement verwendet wird. Wenn Sie eine Klasse von CEditView der Vorlage ableiten und der Vorlage hinzufügen, CWinApp::AddDocTemplateruft das Framework sowohl diesen Konstruktor als auch die Create Funktion auf.

CEditView::d wStyleDefault

Enthält die Standardformatvorlage des CEditView Objekts.

static const DWORD dwStyleDefault;

Hinweise

Übergeben Sie dieses statische Element als dwStyle-Parameter der Create Funktion, um die Standardformatvorlage für das CEditView Objekt abzurufen.

CEditView::FindText

Rufen Sie die FindText Funktion auf, um den Textpuffer des CEditView Objekts zu durchsuchen.

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

Parameter

lpszFind
Der zu findende Text.

bNext
Gibt die Richtung der Suche an. Wenn WAHR, liegt die Suchrichtung am Ende des Puffers. Wenn FALSE, liegt die Suchrichtung am Anfang des Puffers.

bCase
Gibt an, ob bei der Suche die Groß-/Kleinschreibung beachtet wird. Bei TRUE wird bei der Suche die Groß-/Kleinschreibung beachtet. Bei FALSCH wird bei der Suche die Groß-/Kleinschreibung nicht beachtet.

Rückgabewert

Nonzero, wenn der Suchtext gefunden wird; andernfalls 0.

Hinweise

Diese Funktion durchsucht den Text im Puffer nach dem von lpszFind angegebenen Text, beginnend bei der aktuellen Auswahl, in der von bNext angegebenen Richtung und mit der durch bCase angegebenen Groß-/Kleinschreibung. Wenn der Text gefunden wird, wird die Markierung auf den gefundenen Text festgelegt und ein Wert ungleich Null zurückgegeben. Wenn der Text nicht gefunden wird, gibt die Funktion "0" zurück.

Normalerweise müssen Sie die FindText Funktion nur aufrufen, wenn Sie die Funktion außer Kraft setzen OnFindNext, die aufgerufen wird FindText.

CEditView::GetBufferLength

Rufen Sie diese Memberfunktion auf, um die Anzahl der Zeichen abzurufen, die sich derzeit im Puffer des Bearbeitungssteuerelements befinden, nicht einschließlich des Null-Endators.

UINT GetBufferLength() const;

Rückgabewert

Die Länge der Zeichenfolge im Puffer.

CEditView::GetEditCtrl

Rufen Sie GetEditCtrl auf, um einen Verweis auf das Bearbeitungssteuerelement abzurufen, das von der Bearbeitungsansicht verwendet wird.

CEdit& GetEditCtrl() const;

Rückgabewert

Ein Verweis auf ein CEdit-Objekt.

Hinweise

Dieses Steuerelement ist vom Typ CEdit, sodass Sie das Windows-Bearbeitungssteuerelement direkt mithilfe der CEdit Memberfunktionen bearbeiten können.

Achtung

Die Verwendung des CEdit Objekts kann den Zustand des zugrunde liegenden Windows-Bearbeitungssteuerelements ändern. Beispielsweise sollten Sie die Registerkarteneinstellungen nicht mithilfe der Funktion "CEdit::SetTabStops " ändern, da CEditView diese Einstellungen für die Verwendung sowohl im Bearbeitungssteuerelement als auch beim Drucken zwischengespeichert werden. Verwenden Sie stattdessen CEditView::SetTabStops.

Beispiel

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

Rufen Sie GetPrinterFont auf, um einen Zeiger auf ein CFont-Objekt abzurufen, das die aktuelle Druckerschriftart beschreibt.

CFont* GetPrinterFont() const;

Rückgabewert

Ein Zeiger auf ein CFont Objekt, das die aktuelle Druckerschriftart angibt; NULL, wenn die Druckerschriftart nicht festgelegt wurde. Der Zeiger kann temporär sein und sollte nicht für eine spätere Verwendung gespeichert werden.

Hinweise

Wenn die Druckerschriftart nicht festgelegt wurde, besteht das Standarddruckverhalten der CEditView Klasse darin, die gleiche Schriftart zu drucken, die für die Anzeige verwendet wird.

Verwenden Sie diese Funktion, um die aktuelle Druckerschriftart zu ermitteln. Wenn es sich nicht um die gewünschte Druckerschriftart handelt, verwenden Sie CEditView::SetPrinterFont , um sie zu ändern.

CEditView::GetSelectedText

Rufen Sie GetSelectedText auf, um den markierten Text in ein CString Objekt zu kopieren, bis zum Ende der Markierung oder das Zeichen vor dem ersten Wagenrücklaufzeichen in der Auswahl.

void GetSelectedText(CString& strResult) const;

Parameter

strResult
Ein Verweis auf das CString Objekt, das den markierten Text empfängt.

CEditView::LockBuffer

Rufen Sie diese Memberfunktion auf, um einen Zeiger auf den Puffer abzurufen. Der Puffer sollte nicht geändert werden.

LPCTSTR LockBuffer() const;

Rückgabewert

Ein Zeiger auf den Puffer des Bearbeitungssteuerelements.

CEditView::OnFindNext

Durchsucht den Text im Puffer nach dem von lpszFind angegebenen Text in der von bNext angegebenen Richtung, wobei die Groß-/Kleinschreibung durch bCase angegeben wird.

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

Parameter

lpszFind
Der zu findende Text.

bNext
Gibt die Richtung der Suche an. Wenn WAHR, liegt die Suchrichtung am Ende des Puffers. Wenn FALSE, liegt die Suchrichtung am Anfang des Puffers.

bCase
Gibt an, ob bei der Suche die Groß-/Kleinschreibung beachtet wird. Bei TRUE wird bei der Suche die Groß-/Kleinschreibung beachtet. Bei FALSCH wird bei der Suche die Groß-/Kleinschreibung nicht beachtet.

Hinweise

Die Suche beginnt am Anfang der aktuellen Auswahl und erfolgt über einen Aufruf von FindText. Ruft in der Standardimplementierung OnTextNotFound auf, OnFindNext wenn der Text nicht gefunden wird.

Überschreiben OnFindNext , um die Art und Weise zu ändern, wie ein abgeleitetes CEditViewObjekt Text durchsucht. CEditView Aufrufe OnFindNext , wenn der Benutzer die Schaltfläche "Weitersuchen" im Standardmäßigen Dialogfeld "Suchen" auswähnt.

CEditView::OnReplaceAll

CEditView aufruft OnReplaceAll , wenn der Benutzer die Schaltfläche "Alle ersetzen" im Standardmäßigen Dialogfeld "Ersetzen" auswählt.

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

Parameter

lpszFind
Der zu findende Text.

lpszReplace
Der Text, der den Suchtext ersetzt.

bCase
Gibt an, ob bei der Suche die Groß-/Kleinschreibung beachtet wird. Bei TRUE wird bei der Suche die Groß-/Kleinschreibung beachtet. Bei FALSCH wird bei der Suche die Groß-/Kleinschreibung nicht beachtet.

Hinweise

OnReplaceAll durchsucht den Text im Puffer nach dem von lpszFind angegebenen Text, wobei die Groß-/Kleinschreibung durch bCase angegeben wird. Die Suche beginnt am Anfang der aktuellen Auswahl. Jedes Mal, wenn der Suchtext gefunden wird, ersetzt diese Funktion dieses Vorkommen des Texts durch den durch lpszReplace angegebenen Text. Die Suche erfolgt über einen Aufruf von FindText. In der Standardimplementierung wird OnTextNotFound aufgerufen, wenn der Text nicht gefunden wird.

Wenn die aktuelle Auswahl nicht mit lpszFind übereinstimmt, wird die Auswahl auf das erste Vorkommen des texts aktualisiert, der durch lpszFind angegeben wird und keine Ersetzung ausgeführt wird. Dadurch kann der Benutzer bestätigen, dass dies der Fall ist, wenn die Auswahl nicht mit dem zu ersetzenden Text übereinstimmt.

Überschreiben OnReplaceAll , um die Art und Weise zu ändern, wie ein abgeleitetes CEditViewObjekt Text ersetzt.

CEditView::OnReplaceSel

CEditView aufruft OnReplaceSel , wenn der Benutzer die Schaltfläche "Ersetzen" im Standarddialogfeld "Ersetzen" auswählt.

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

Parameter

lpszFind
Der zu findende Text.

bNext
Gibt die Richtung der Suche an. Wenn WAHR, liegt die Suchrichtung am Ende des Puffers. Wenn FALSE, liegt die Suchrichtung am Anfang des Puffers.

bCase
Gibt an, ob bei der Suche die Groß-/Kleinschreibung beachtet wird. Bei TRUE wird bei der Suche die Groß-/Kleinschreibung beachtet. Bei FALSCH wird bei der Suche die Groß-/Kleinschreibung nicht beachtet.

lpszReplace
Der Text, der den gefundenen Text ersetzt.

Hinweise

Nach dem Ersetzen der Markierung durchsucht diese Funktion den Text im Puffer nach dem nächsten Vorkommen des texts, der durch lpszFind angegeben wurde, in der von bNext angegebenen Richtung, wobei die Groß-/Kleinschreibung durch bCase angegeben ist. Die Suche erfolgt über einen Aufruf von FindText. Wenn der Text nicht gefunden wird, wird OnTextNotFound aufgerufen.

Überschreiben OnReplaceSel , um zu ändern, wie ein abgeleitetes CEditViewObjekt den markierten Text ersetzt.

CEditView::OnTextNotFound

Überschreiben Sie diese Funktion, um die Standardimplementierung zu ändern, die die Windows-Funktion MessageBeepaufruft.

virtual void OnTextNotFound(LPCTSTR lpszFind);

Parameter

lpszFind
Der zu findende Text.

CEditView::P rintInsideRect

Aufrufen PrintInsideRect , um Text in dem durch rectLayout angegebenen Rechteck zu drucken.

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

Parameter

pDC
Zeiger auf den Druckergerätekontext.

rectLayout
Verweisen auf ein CRect-Objekt oder eine RECT-Struktur, das das Rechteck angibt, in dem der Text gerendert werden soll.

nIndexStart
Index innerhalb des Puffers des ersten zeichens, das gerendert werden soll.

nIndexStop
Index innerhalb des Puffers des Zeichens nach dem letzten zu rendernden Zeichen.

Rückgabewert

Der Index des nächsten Zeichens, das gedruckt werden soll (d. a. das Zeichen nach dem letzten gerenderten Zeichen).

Hinweise

Wenn das CEditView Steuerelement nicht über die Formatvorlage ES_AUTOHSCROLL verfügt, wird der Text innerhalb des Renderrechtecks umbrochen. Wenn das Steuerelement über die Formatvorlage ES_AUTOHSCROLL verfügt, wird der Text am rechten Rand des Rechtecks abgeschnitten.

Das rect.bottom Element des rectLayout-Objekts wird geändert, sodass die Abmessungen des Rechtecks den Teil des ursprünglichen Rechtecks definieren, der vom Text belegt wird.

CEditView::SerializeRaw

Aufrufen SerializeRaw , dass ein CArchive Objekt den Text im Objekt in CEditView eine Textdatei liest oder schreibt.

void SerializeRaw(CArchive& ar);

Parameter

Ar
Verweis auf das CArchive Objekt, das den serialisierten Text speichert.

Hinweise

SerializeRaw unterscheidet sich von CEditViewder internen Implementierung Serialize davon, dass er nur den Text liest und schreibt, ohne vorherige Objektbeschreibungsdaten.

CEditView::SetPrinterFont

Rufen Sie SetPrinterFont auf, um die Druckerschriftart auf die von pFont angegebene Schriftart festzulegen.

void SetPrinterFont(CFont* pFont);

Parameter

pFont
Ein Zeiger auf ein Objekt vom Typ CFont. Wenn NULL, basiert die zum Drucken verwendete Schriftart auf der Anzeigeschriftart.

Hinweise

Wenn Ihre Ansicht immer eine bestimmte Schriftart zum Drucken verwenden soll, fügen Sie einen Aufruf SetPrinterFont in die Funktion Ihrer Klasse OnPreparePrinting ein. Diese virtuelle Funktion wird vor dem Drucken aufgerufen, sodass die Schriftartänderung vor dem Drucken der Ansicht erfolgt.

CEditView::SetTabStops

Rufen Sie diese Funktion auf, um die tabstopps festzulegen, die zum Anzeigen und Drucken verwendet werden.

void SetTabStops(int nTabStops);

Parameter

nTabStops
Breite der einzelnen Tabstopps in Dialogfeldeinheiten.

Hinweise

Es wird nur eine einzelne Tabstoppbreite unterstützt. ( CEdit Objekte unterstützen mehrere Registerkartenbreiten.) Die Breite befindet sich in Dialogfeldeinheiten, die der durchschnittlichen Zeichenbreite (basierend auf nur Groß- und Kleinbuchstaben) der Schriftart entsprechen, die zum Zeitpunkt des Druckens oder Anzeigens verwendet wird. Sie sollten nicht verwenden CEdit::SetTabStops , da CEditView der Tabstoppwert zwischengespeichert werden muss.

Diese Funktion ändert nur die Registerkarten des Objekts, für das sie aufgerufen wird. Wenn Sie die Tabstopps für jedes CEditView Objekt in Ihrer Anwendung ändern möchten, rufen Sie die Funktion jedes SetTabStops Objekts auf.

Beispiel

Dieses Codefragment legt die Tabstopps im Steuerelement auf jedes vierte Zeichen fest, indem die von dem Steuerelement verwendete Schriftart sorgfältig gemessen wird.

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

Rufen Sie diese Memberfunktion auf, um den Puffer zu entsperren.

void UnlockBuffer() const;

Hinweise

Rufen Sie auf UnlockBuffer , nachdem Sie den von LockBuffer zurückgegebenen Zeiger verwendet haben.

Siehe auch

MFC-Beispiel SUPERPAD
CCtrlView-Klasse
Hierarchiediagramm
CEdit-Klasse
CDocument-Klasse
CDocTemplate-Klasse
CCtrlView-Klasse
CRichEditView-Klasse