| title | CEditView Class | Microsoft Docs | |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ms.custom | ||||||||||||||||||||
| ms.date | 11/04/2016 | |||||||||||||||||||
| ms.reviewer | ||||||||||||||||||||
| ms.suite | ||||||||||||||||||||
| ms.technology |
|
|||||||||||||||||||
| ms.tgt_pltfrm | ||||||||||||||||||||
| ms.topic | reference | |||||||||||||||||||
| f1_keywords |
|
|||||||||||||||||||
| dev_langs |
|
|||||||||||||||||||
| helpviewer_keywords |
|
|||||||||||||||||||
| ms.assetid | bf38255c-fcbe-450c-95b2-3c5e35f86c37 | |||||||||||||||||||
| caps.latest.revision | 25 | |||||||||||||||||||
| author | mikeblome | |||||||||||||||||||
| ms.author | mblome | |||||||||||||||||||
| manager | ghogen | |||||||||||||||||||
| translation.priority.ht |
|
A type of view class that provides the functionality of a Windows edit control and can be used to implement simple text-editor functionality.
class CEditView : public CCtrlView
| Name | Description |
|---|---|
| CEditView::CEditView | Constructs an object of type CEditView. |
| Name | Description |
|---|---|
| CEditView::FindText | Searches for a string within the text. |
| CEditView::GetBufferLength | Obtains the length of the character buffer. |
| CEditView::GetEditCtrl | Provides access to the CEdit portion of a CEditView object (the Windows edit control). |
| CEditView::GetPrinterFont | Retrieves the current printer font. |
| CEditView::GetSelectedText | Retrieves the current text selection. |
| CEditView::LockBuffer | Locks the buffer. |
| CEditView::PrintInsideRect | Renders text inside a given rectangle. |
| CEditView::SerializeRaw | Serializes a CEditView object to disk as raw text. |
| CEditView::SetPrinterFont | Sets a new printer font. |
| CEditView::SetTabStops | Sets tab stops for both screen display and printing. |
| CEditView::UnlockBuffer | Unlocks the buffer. |
| Name | Description |
|---|---|
| CEditView::OnFindNext | Finds next occurrence of a text string. |
| CEditView::OnReplaceAll | Replaces all occurrences of a given string with a new string. |
| CEditView::OnReplaceSel | Replaces current selection. |
| CEditView::OnTextNotFound | Called when a find operation fails to match any further text. |
| Name | Description |
|---|---|
| CEditView::dwStyleDefault | Default style for objects of type CEditView. |
The CEditView class provides the following additional functions:
-
Print.
-
Find and replace.
Because class CEditView is a derivative of class CView, objects of class CEditView can be used with documents and document templates.
Each CEditView control's text is kept in its own global memory object. Your application can have any number of CEditView objects.
Create objects of type CEditView if you want an edit window with the added functionality listed above, or if you want simple text-editor functionality. A CEditView object can occupy the entire client area of a window. Derive your own classes from CEditView to add or modify the basic functionality, or to declare classes that can be added to a document template.
The default implementation of class CEditView handles the following commands: ID_EDIT_SELECT_ALL, ID_EDIT_FIND, ID_EDIT_REPLACE, ID_EDIT_REPEAT, and ID_FILE_PRINT.
The default character limit for CEditView is (1024 * 1024 - 1 = 1048575). This can be changed by calling the EM_LIMITTEXT function of the underlying edit control. However, the limits are different depending on the operating system and the type of edit control (single or multiline). For more information on these limits, see EM_LIMITTEXT.
To change this limit in your control, override the OnCreate() function for your CEditView class and insert the following line of code:
[!code-cppNVC_MFCDocView#65]
Objects of type CEditView (or of types derived from CEditView) have the following limitations:
-
CEditViewdoes not implement true what you see is what you get (WYSIWYG) editing. Where there is a choice between readability on the screen and matching printed output,CEditViewopts for screen readability. -
CEditViewcan display text in only a single font. No special character formatting is supported. See class CRichEditView for greater capabilities. -
The amount of text a
CEditViewcan contain is limited. The limits are the same as for theCEditcontrol.
For more information on CEditView, see Derived View Classes Available in MFC.
CEditView
Header: afxext.h
Constructs an object of type CEditView.
CEditView();
After constructing the object, you must call the CWnd::Create function before the edit control is used. If you derive a class from CEditView and add it to the template using CWinApp::AddDocTemplate, the framework calls both this constructor and the Create function.
Contains the default style of the CEditView object.
static const DWORD dwStyleDefault;
Pass this static member as the dwStyle parameter of the Create function to obtain the default style for the CEditView object.
Call the FindText function to search the CEditView object's text buffer.
BOOL FindText(
LPCTSTR lpszFind,
BOOL bNext = TRUE,
BOOL bCase = TRUE);
lpszFind
The text to be found.
bNext
Specifies the direction of the search. If TRUE, the search direction is toward the end of the buffer. If FALSE, the search direction is toward the beginning of the buffer.
bCase
Specifies whether the search is case sensitive. If TRUE, the search is case sensitive. If FALSE, the search is not case sensitive.
Nonzero if the search text is found; otherwise 0.
This function searches the text in the buffer for the text specified by lpszFind, starting at the current selection, in the direction specified by bNext, and with case sensitivity specified by bCase. If the text is found, it sets the selection to the found text and returns a nonzero value. If the text is not found, the function returns 0.
You normally do not need to call the FindText function unless you override OnFindNext, which calls FindText.
Call this member function to obtain the number of characters currently in the edit control's buffer, not including the null terminator.
UINT GetBufferLength() const;
The length of the string in the buffer.
Call GetEditCtrl to get a reference to the edit control used by the edit view.
CEdit& GetEditCtrl() const;
A reference to a CEdit object.
This control is of type CEdit, so you can manipulate the Windows edit control directly using the CEdit member functions.
Caution
Using the CEdit object can change the state of the underlying Windows edit control. For example, you should not change the tab settings using the CEdit::SetTabStops function because CEditView caches these settings for use both in the edit control and in printing. Instead, use CEditView::SetTabStops.
[!code-cppNVC_MFCDocView#66]
Call GetPrinterFont to get a pointer to a CFont object that describes the current printer font.
CFont* GetPrinterFont() const;
A pointer to a CFont object that specifies the current printer font; NULL if the printer font has not been set. The pointer may be temporary and should not be stored for later use.
If the printer font has not been set, the default printing behavior of the CEditView class is to print using the same font used for display.
Use this function to determine the current printer font. If it is not the desired printer font, use CEditView::SetPrinterFont to change it.
Call GetSelectedText to copy the selected text into a CString object, up to the end of the selection or the character preceding the first carriage-return character in the selection.
void GetSelectedText(CString& strResult) const;
strResult
A reference to the CString object that is to receive the selected text.
Call this member function to obtain a pointer to the buffer. The buffer should not be modified.
LPCTSTR LockBuffer() const;
A pointer to the edit control's buffer.
Searches the text in the buffer for the text specified by lpszFind, in the direction specified by bNext, with case sensitivity specified by bCase.
virtual void OnFindNext(
LPCTSTR lpszFind,
BOOL bNext,
BOOL bCase);
lpszFind
The text to be found.
bNext
Specifies the direction of the search. If TRUE, the search direction is toward the end of the buffer. If FALSE, the search direction is toward the beginning of the buffer.
bCase
Specifies whether the search is case sensitive. If TRUE, the search is case sensitive. If FALSE, the search is not case sensitive.
The search starts at the beginning of the current selection and is accomplished through a call to FindText. In the default implementation, OnFindNext calls OnTextNotFound if the text is not found.
Override OnFindNext to change the way a CEditView-derived object searches text. CEditView calls OnFindNext when the user chooses the Find Next button in the standard Find dialog box.
CEditView calls OnReplaceAll when the user selects the Replace All button in the standard Replace dialog box.
virtual void OnReplaceAll(
LPCTSTR lpszFind,
LPCTSTR lpszReplace,
BOOL bCase);
lpszFind
The text to be found.
lpszReplace
The text to replace the search text.
bCase
Specifies whether search is case sensitive. If TRUE, the search is case sensitive. If FALSE, the search is not case sensitive.
OnReplaceAll searches the text in the buffer for the text specified by lpszFind, with case sensitivity specified by bCase. The search starts at the beginning of the current selection. Each time the search text is found, this function replaces that occurrence of the text with the text specified by lpszReplace. The search is accomplished through a call to FindText. In the default implementation, OnTextNotFound is called if the text is not found.
If the current selection does not match lpszFind, the selection is updated to the first occurrence of the text specified by lpszFind and a replace is not performed. This allows the user to confirm that this is what they want to do when the selection does not match the text to be replaced.
Override OnReplaceAll to change the way a CEditView-derived object replaces text.
CEditView calls OnReplaceSel when the user selects the Replace button in the standard Replace dialog box.
virtual void OnReplaceSel(
LPCTSTR lpszFind,
BOOL bNext,
BOOL bCase,
LPCTSTR lpszReplace);
lpszFind
The text to be found.
bNext
Specifies the direction of the search. If TRUE, the search direction is toward the end of the buffer. If FALSE, the search direction is toward the beginning of the buffer.
bCase
Specifies whether the search is case sensitive. If TRUE, the search is case sensitive. If FALSE, the search is not case sensitive.
lpszReplace
The text to replace the found text.
After replacing the selection, this function searches the text in the buffer for the next occurrence of the text specified by lpszFind, in the direction specified by bNext, with case sensitivity specified by bCase. The search is accomplished through a call to FindText. If the text is not found, OnTextNotFound is called.
Override OnReplaceSel to change the way a CEditView-derived object replaces the selected text.
Override this function to change the default implementation, which calls the Windows function MessageBeep.
virtual void OnTextNotFound(LPCTSTR lpszFind);
lpszFind
The text to be found.
Call PrintInsideRect to print text in the rectangle specified by rectLayout.
UINT PrintInsideRect(
CDC *pDC,
RECT& rectLayout,
UINT nIndexStart,
UINT nIndexStop);
pDC
Pointer to the printer device context.
rectLayout
Reference to a CRect object or RECT structure specifying the rectangle in which the text is to be rendered.
nIndexStart
Index within the buffer of the first character to be rendered.
nIndexStop
Index within the buffer of the character following the last character to be rendered.
The index of the next character to be printed (that is, the character following the last character rendered).
If the CEditView control does not have the style ES_AUTOHSCROLL, text is wrapped within the rendering rectangle. If the control does have the style ES_AUTOHSCROLL, the text is clipped at the right edge of the rectangle.
The rect.bottom element of the rectLayout object is changed so that the rectangle's dimensions define the part of the original rectangle that is occupied by the text.
Call SerializeRaw to have a CArchive object read or write the text in the CEditView object to a text file.
void SerializeRaw(CArchive& ar);
ar
Reference to the CArchive object that stores the serialized text.
SerializeRaw differs from CEditView's internal implementation of Serialize in that it reads and writes only the text, without preceding object-description data.
Call SetPrinterFont to set the printer font to the font specified by pFont.
void SetPrinterFont(CFont* pFont);
pFont
A pointer to an object of type CFont. If NULL, the font used for printing is based on the display font.
If you want your view to always use a particular font for printing, include a call to SetPrinterFont in your class's OnPreparePrinting function. This virtual function is called before printing occurs, so the font change takes place before the view's contents are printed.
Call this function to set the tab stops used for display and printing.
void SetTabStops(int nTabStops);
nTabStops
Width of each tab stop, in dialog units.
Only a single tab-stop width is supported. ( CEdit objects support multiple tab widths.) Widths are in dialog units, which equal one-fourth of the average character width (based on uppercase and lowercase alphabetic characters only) of the font used at the time of printing or displaying. You should not use CEdit::SetTabStops because CEditView must cache the tab-stop value.
This function modifies only the tabs of the object for which it is called. To change the tab stops for each CEditView object in your application, call each object's SetTabStops function.
This code fragment sets the tab stops in the control to every fourth character by carefully measuring the font the control uses.
[!code-cppNVC_MFCDocView#67]
Call this member function to unlock the buffer.
void UnlockBuffer() const;
Call UnlockBuffer after you have finished using the pointer returned by LockBuffer.
MFC Sample SUPERPAD
CCtrlView Class
Hierarchy Chart
CEdit Class
CDocument Class
CDocTemplate Class
CCtrlView Class
CRichEditView Class