Clase CEditView
Un tipo de clase de vista que proporciona la funcionalidad de un control de edición de Windows y se puede utilizar para implementar funcionalidad de editor de texto simple.
Sintaxis
class CEditView : public CCtrlView
Miembros
Constructores públicos
Nombre | Descripción |
---|---|
CEditView::CEditView | Construye un objeto de tipo CEditView . |
Métodos públicos
Nombre | Descripción |
---|---|
CEditView::FindText | Busca una cadena dentro del texto. |
CEditView::GetBufferLength | Obtiene la longitud del búfer de caracteres. |
CEditView::GetEditCtrl | Proporciona acceso a la parte CEdit de un objeto CEditView (control de edición de Windows). |
CEditView::GetPrinterFont | Recupera la fuente actual de la impresora. |
CEditView::GetSelectedText | Recupera la selección actual del texto. |
CEditView::LockBuffer | Bloquea el buffer. |
CEditView::PrintInsideRect | Representa el texto dentro de un rectángulo determinado. |
CEditView::SerializeRaw | Serializa un objeto CEditView en el disco como texto sin formato. |
CEditView::SetPrinterFont | Establece una nueva fuente de impresora. |
CEditView::SetTabStops | Establece los topes de tabulación para la visualización de la pantalla y la impresión. |
CEditView::UnlockBuffer | Desbloquea el búfer. |
Métodos protegidos
Nombre | Descripción |
---|---|
CEditView::OnFindNext | Busca la siguiente aparición de una cadena de texto. |
CEditView::OnReplaceAll | Reemplaza todas las apariciones de una cadena determinada por una nueva cadena. |
CEditView::OnReplaceSel | Reemplaza la selección actual. |
CEditView::OnTextNotFound | Se llama cuando una operación de búsqueda no coincide con cualquier texto adicional. |
Miembros de datos públicos
Nombre | Descripción |
---|---|
CEditView::dwStyleDefault | Estilo predeterminado para objetos de tipo CEditView . |
Comentarios
La clase CEditView
proporciona las siguientes funciones adicionales:
Impresión.
Buscar y reemplazar.
Dado que la clase CEditView
es un derivado de la clase CView
, los objetos de la clase CEditView
se pueden usar con documentos y plantillas de documento.
Cada texto de control CEditView
se mantiene en su propio objeto de memoria global. La aplicación puede tener cualquier número de objetos CEditView
.
Cree objetos de tipo CEditView
si desea una ventana de edición con la funcionalidad agregada enumerada anteriormente o si desea una funcionalidad sencilla del editor de texto. Un objeto CEditView
puede ocupar todo el área de cliente de una ventana. Derive sus propias clases de CEditView
para agregar o modificar la funcionalidad básica o para declarar clases que se pueden agregar a una plantilla de documento.
La implementación predeterminada de la clase CEditView
controla los siguientes comandos: ID_EDIT_SELECT_ALL, ID_EDIT_FIND, ID_EDIT_REPLACE, ID_EDIT_REPEAT, y ID_FILE_PRINT.
El límite de caracteres predeterminado para CEditView
es (1024 * 1024 - 1 = 1048575). Esto se puede cambiar llamando a la función EM_LIMITTEXT del control de edición subyacente. Sin embargo, los límites son diferentes en función del sistema operativo y del tipo de control de edición (única o multilínea). Para más información sobre estos limites, consulte EM_LIMITTEXT.
Para cambiar este límite en el control, invalide la función OnCreate()
de la clase CEditView
e inserte la siguiente línea de código:
GetEditCtrl().SetLimitText(nNewVal); //nNewVal, the new character limit
Los objetos de tipo CEditView
(o de los tipos derivados de CEditView
) tienen las siguientes limitaciones:
CEditView
no implementa true, lo que se ve es lo que se obtiene editando (WYSIWYG). Si hay una opción entre legibilidad en la pantalla y la salida impresa coincidente,CEditView
opta por la legibilidad de la pantalla.CEditView
puede mostrar el texto en una sola fuente. No se admite ningún formato de caracteres especiales. Consulte la clase CRichEditView para obtener más funcionalidades.La cantidad de texto que
CEditView
puede contener es limitada. Los límites son los mismos que para el controlCEdit
.
Para obtener más información sobre CEditView
, consulte Clases de vista derivadas disponibles en MFC.
Jerarquía de herencia
CEditView
Requisitos
Encabezado: afxext.h
CEditView::CEditView
Construye un objeto de tipo CEditView
.
CEditView();
Comentarios
Después de construir el objeto, debe llamar a la función CWnd::Create antes de usar el control de edición. Si se deriva una clase de CEditView
y la agrega a la plantilla mediante CWinApp::AddDocTemplate
, el marco llama tanto a este constructor como a la función Create
.
CEditView::dwStyleDefault
Contiene el estilo predeterminado del objeto CEditView
.
static const DWORD dwStyleDefault;
Comentarios
Pase este miembro estático como parámetro dwStyle de la función Create
para obtener el estilo predeterminado para el objeto CEditView
.
CEditView::FindText
Llame a la función FindText
para buscar en el búfer de texto del objeto CEditView
.
BOOL FindText(
LPCTSTR lpszFind,
BOOL bNext = TRUE,
BOOL bCase = TRUE);
Parámetros
lpszFind
El texto que se va a encontrar.
bNext
Especifica la dirección de la búsqueda. Si es TRUE, la dirección de búsqueda está hacia el final del búfer. Si es FALSE, la dirección de búsqueda es hacia el principio del búfer.
bCase
Especifica si la búsqueda distingue entre mayúsculas y minúsculas. Si es TRUE, la búsqueda distingue entre mayúsculas y minúsculas. Si es FALSE, la búsqueda no hace distinción de mayúsculas y minúsculas.
Valor devuelto
Distinto de cero si se encuentra el texto de búsqueda; de lo contrario es 0.
Comentarios
Esta función busca en el búfer el texto especificado por lpszFind, comenzando en la selección actual, de la dirección especificada por bNext y con distinción entre mayúsculas y minúsculas especificada por bCase. Si se encuentra el texto, se establece la selección en el texto encontrado y se devuelve un valor distinto de cero. Si no se encuentra el texto, la función devuelve 0.
Normalmente no es necesario llamar a la función FindText
a menos que se invalide OnFindNext
, que llama a FindText
.
CEditView::GetBufferLength
Llame a esta función miembro para obtener el número de caracteres que se encuentran actualmente en el búfer del control de edición, no incluido el terminador null.
UINT GetBufferLength() const;
Valor devuelto
Longitud de la cadena en el buffer.
CEditView::GetEditCtrl
Llame a GetEditCtrl
para obtener una referencia al control de edición usado por la vista de edición.
CEdit& GetEditCtrl() const;
Valor devuelto
Referencia a un objeto CEdit
.
Comentarios
Este control es de tipo CEdit, por lo que puede manipular el control de edición de Windows directamente mediante las funciones miembro CEdit
.
Precaución
El uso del objeto CEdit
puede cambiar el estado del control de edición subyacente de Windows. Por ejemplo, no debe cambiar la configuración de la tabulación mediante la función CEdit::SetTabStops porque CEditView
almacena en la caché esta configuración para su uso tanto en el control de edición como en la impresión. En su lugar, use CEditView::SetTabStops.
Ejemplo
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
Llame a GetPrinterFont
para obtener un puntero a un objeto CFont que describa la fuente de la impresora actual.
CFont* GetPrinterFont() const;
Valor devuelto
Puntero a un objeto CFont
que especifica la fuente de la impresora actual; NULL si no se ha establecido la fuente de la impresora. El puntero puede ser temporal y no se debe almacenar para su uso posterior.
Comentarios
Si no se ha establecido la fuente de la impresora, el comportamiento de impresión predeterminado de la clase CEditView
es imprimir con la misma fuente usada para mostrar.
Use esta función para determinar la fuente de la impresora actual. Si no es la fuente de impresora deseada, use CEditView::SetPrinterFont para cambiarla.
CEditView::GetSelectedText
Llame a GetSelectedText
para copiar el texto seleccionado en un objeto CString
, hasta el final de la selección o el carácter anterior al primer carácter de retorno de carro de la selección.
void GetSelectedText(CString& strResult) const;
Parámetros
strResult
Referencia al objeto CString
que va a recibir el texto seleccionado.
CEditView::LockBuffer
Llame a esta función miembro para obtener un puntero al búfer. No se debe modificar el búfer.
LPCTSTR LockBuffer() const;
Valor devuelto
Un puntero al buffer del control de edición.
CEditView::OnFindNext
Busca en el búfer el texto especificado por lpszFind, en la dirección especificada por bNext, con distinción entre mayúsculas y minúsculas especificada por bCase.
virtual void OnFindNext(
LPCTSTR lpszFind,
BOOL bNext,
BOOL bCase);
Parámetros
lpszFind
El texto que se va a encontrar.
bNext
Especifica la dirección de la búsqueda. Si es TRUE, la dirección de búsqueda está hacia el final del búfer. Si es FALSE, la dirección de búsqueda es hacia el principio del búfer.
bCase
Especifica si la búsqueda distingue entre mayúsculas y minúsculas. Si es TRUE, la búsqueda distingue entre mayúsculas y minúsculas. Si es FALSE, la búsqueda no hace distinción de mayúsculas y minúsculas.
Comentarios
La búsqueda inicia al principio de la selección actual y se realiza a través de una llamada a FindText. En la implementación predeterminada, OnFindNext
llama a OnTextNotFound si el texto no se encuentra.
Invalide OnFindNext
para cambiar la forma en que un objeto derivadoCEditView
busca el texto. CEditView
llama OnFindNext
cuando el usuario elige el botón Buscar siguiente en el cuadro de diálogo Buscar estándar.
CEditView::OnReplaceAll
CEditView
llama OnReplaceAll
cuando el usuario selecciona el botón Reemplazar todo en el cuadro de diálogo Reemplazar estándar.
virtual void OnReplaceAll(
LPCTSTR lpszFind,
LPCTSTR lpszReplace,
BOOL bCase);
Parámetros
lpszFind
El texto que se va a encontrar.
lpszReplace
Texto para reemplazar el texto de búsqueda.
bCase
Especifica si la búsqueda distingue entre mayúsculas y minúsculas. Si es TRUE, la búsqueda distingue entre mayúsculas y minúsculas. Si es FALSE, la búsqueda no hace distinción de mayúsculas y minúsculas.
Comentarios
OnReplaceAll
busca en el búfer el texto especificado por lpszFind, con distinción entre mayúsculas y minúsculas especificada por bCase. La búsqueda inicia al principio de la selección actual. Cada vez que se encuentra el texto de búsqueda, esta función reemplaza esa aparición del texto por el texto especificado por lpszReplace. La búsqueda se realiza a través de una llamada a FindText. En la implementación predeterminada se llama a OnTextNotFound si el texto no se encuentra.
Si la selección actual no coincide con lpszFind, la selección se actualiza a la primera aparición del texto especificado por lpszFind y no se realiza un reemplazo. Esto permite al usuario confirmar que esto es lo que quiere hacer cuando la selección no coincide con el texto que se va a reemplazar.
Invalide OnReplaceAll
para cambiar la forma en que un objeto derivadoCEditView
reemplaza el texto.
CEditView::OnReplaceSel
CEditView
llama OnReplaceSel
cuando el usuario selecciona el botón Reemplazar todo en el cuadro de diálogo Reemplazar estándar.
virtual void OnReplaceSel(
LPCTSTR lpszFind,
BOOL bNext,
BOOL bCase,
LPCTSTR lpszReplace);
Parámetros
lpszFind
El texto que se va a encontrar.
bNext
Especifica la dirección de la búsqueda. Si es TRUE, la dirección de búsqueda está hacia el final del búfer. Si es FALSE, la dirección de búsqueda es hacia el principio del búfer.
bCase
Especifica si la búsqueda distingue entre mayúsculas y minúsculas. Si es TRUE, la búsqueda distingue entre mayúsculas y minúsculas. Si es FALSE, la búsqueda no hace distinción de mayúsculas y minúsculas.
lpszReplace
Texto con el que se va a reemplazar el texto encontrado.
Comentarios
Después de reemplazar la selección, esta función busca en el texto del buffer la siguiente aparición del texto especificado por lpszFind, en la dirección especificada por bNext con distinción entre mayúsculas y minúsculas especificada por bCase. La búsqueda se realiza a través de una llamada a FindText. Si no se encuentra el texto, se llama a OnTextNotFound .
Invalide OnReplaceSel
para cambiar la forma en que un objeto derivadoCEditView
reemplaza el texto seleccionado.
CEditView::OnTextNotFound
Invalide esta función para cambiar la implementación predeterminada que llama a la función MessageBeep
de Windows.
virtual void OnTextNotFound(LPCTSTR lpszFind);
Parámetros
lpszFind
El texto que se va a encontrar.
CEditView::PrintInsideRect
Llame a PrintInsideRect
para imprimir el texto en el rectángulo especificado por rectLayout.
UINT PrintInsideRect(
CDC *pDC,
RECT& rectLayout,
UINT nIndexStart,
UINT nIndexStop);
Parámetros
pDC
Apunta al contexto del dispositivo de la impresora.
rectLayout
Referencia a un objeto CRect o estructura RECT que especifica el rectángulo en el que se va a representar el texto.
nIndexStart
Índice dentro del búfer del primer carácter que se va a representar.
nIndexStop
Índice dentro del búfer del carácter que sigue al último carácter que se va a representar.
Valor devuelto
Índice del siguiente carácter que se va a imprimir (es decir, el carácter que sigue al último carácter representado).
Comentarios
Si el control CEditView
no tiene el estilo ES_AUTOHSCROLL, el texto se encapsula dentro del rectángulo de representación. Si el control tiene el estilo ES_AUTOHSCROLL, el texto se recorta en el borde derecho del rectángulo.
El elemento rect.bottom
del objeto rectLayout se cambia para que las dimensiones del rectángulo definan la parte del rectángulo original ocupado por el texto.
CEditView::SerializeRaw
Llame a SerializeRaw
para que un objeto CArchive
lea o escriba el texto en el objeto CEditView
a un archivo de texto.
void SerializeRaw(CArchive& ar);
Parámetros
Ar
Referencia al objeto CArchive
que almacena el texto serializado.
Comentarios
SerializeRaw
difiere de la implementación interna de CEditView
deSerialize
en que lee y escribe solo el texto, sin datos anteriores de descripción de objeto.
CEditView::SetPrinterFont
Llame a SetPrinterFont
para establecer la fuente de la impresora en la fuente especificada por pFont.
void SetPrinterFont(CFont* pFont);
Parámetros
pFont
Puntero a un objeto de tipo CFont
. Si es NULL, la fuente usada para imprimir se basa en la fuente de presentación.
Comentarios
Si desea que la vista use siempre una fuente determinada para imprimirla, incluya una llamada a SetPrinterFont
en la función de la clase OnPreparePrinting
. Se llama a esta función virtual antes de que se produzca la impresión, por lo que el cambio de fuente tiene lugar antes de imprimir el contenido de la vista.
CEditView::SetTabStops
Llame a esta función para establecer las tabulaciones usadas para mostrar e imprimir.
void SetTabStops(int nTabStops);
Parámetros
nTabStops
Ancho de cada tabulación, en unidades de diálogo.
Comentarios
Sólo se admite un único ancho de tabulación. (los objetos CEdit
admiten varias anchuras de tabulación). Las anchuras se encuentran en unidades de diálogo, que equivalen a un cuarto del ancho medio de caracteres (basado solo en caracteres alfabéticos en mayúsculas y minúsculas) de la fuente usada en el momento de imprimir o mostrar. No se debe usar CEdit::SetTabStops
porque CEditView
debe almacenar en caché el valor de la pestaña.
Esta función modifica solo las tabulaciones del objeto para el que se llama. Para cambiar las tabulaciones de cada objeto CEditView
de la aplicación, llame a la función de cada objeto de SetTabStops
.
Ejemplo
Este fragmento de código establece las paradas de tabulación del control en cada cuarto carácter midiendo cuidadosamente la fuente que usa el control.
// 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
Llame a esta función miembro para desbloquear el búfer.
void UnlockBuffer() const;
Comentarios
Llame a UnlockBuffer
cuando haya terminado de usar el puntero devuelto por LockBuffer.
Consulte también
SUPERPAD de ejemplo de MFC
CCtrlView (clase)
Gráfico de jerarquías
CEdit (clase)
CDocument (clase)
CDocTemplate (clase)
CCtrlView (clase)
CRichEditView (clase)