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 CView
handelt, 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 demCEdit
Steuerelement.
Weitere Informationen CEditView
finden Sie unter abgeleitete Ansichtsklassen, die in MFC verfügbar sind.
Vererbungshierarchie
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::AddDocTemplate
ruft 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 CEditView
Objekt 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 CEditView
Objekt 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 CEditView
Objekt den markierten Text ersetzt.
CEditView::OnTextNotFound
Überschreiben Sie diese Funktion, um die Standardimplementierung zu ändern, die die Windows-Funktion MessageBeep
aufruft.
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 CEditView
der 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