Compartir a través de


CEdit (clase)

Proporciona la funcionalidad de un control de edición de Windows.

Sintaxis

class CEdit : public CWnd

Miembros

Constructores públicos

Nombre Descripción
CEdit::CEdit Construye un objeto de control CEdit.

Métodos públicos

Nombre Descripción
CEdit::CanUndo Determina si se puede deshacer una operación de control de edición.
CEdit::CharFromPos Recupera los índices de líneas y caracteres del carácter más cercano a una posición especificada.
CEdit::Clear Elimina (borra) la selección actual (si la hubiera) del control de edición.
CEdit::Copy Copia la selección actual (si la hubiera) del control de edición en el Portapapeles en formato CF_TEXT.
CEdit::Create Crea el control de edición de Windows y lo adjunta al objeto CEdit.
CEdit::Cut Elimina (corta) la selección actual (si la hubiera) del control de edición y copia el texto eliminado en el Portapapeles en formato CF_TEXT.
CEdit::EmptyUndoBuffer Restablece (borra) la marca de deshacer de un control de edición.
CEdit::FmtLines Activa o desactiva la inclusión de caracteres de salto de línea automático dentro de un control de edición de varias líneas.
CEdit::GetCueBanner Recupera el texto que se muestra como indicación de texto, o sugerencia, en un control de edición cuando el control está vacío y no tiene el foco.
CEdit::GetFirstVisibleLine Determina la línea visible situada más arriba de un control de edición.
CEdit::GetHandle Recupera un identificador de la memoria asignada actualmente a un control de edición de varias líneas.
CEdit::GetHighlight Obtiene los índices de los caracteres iniciales y finales de un rango de texto resaltado del control de edición actual.
CEdit::GetLimitText Obtiene la cantidad máxima de texto que CEdit puede contener.
CEdit::GetLine Recupera una línea de texto de un control de edición.
CEdit::GetLineCount Recupera el número de líneas de un control de edición de varias líneas.
CEdit::GetMargins Obtiene los márgenes izquierdo y derecho de CEdit.
CEdit::GetModify Determina si se ha modificado el contenido de un control de edición.
CEdit::GetPasswordChar Recupera el carácter de contraseña que se muestra en un control de edición cuando el usuario escribe texto.
CEdit::GetRect Obtiene el rectángulo de formato de un control de edición.
CEdit::GetSel Obtiene las posiciones de primer y último carácter de la selección actual de un control de edición.
CEdit::HideBalloonTip Oculta cualquier globo de sugerencias asociado al control de edición actual.
CEdit::LimitText Limita la longitud del texto que el usuario puede escribir en un control de edición.
CEdit::LineFromChar Recupera el número de línea de la línea que contiene el índice de caracteres especificado.
CEdit::LineIndex Recupera el índice de caracteres de una línea dentro de un control de edición de varias líneas.
CEdit::LineLength Recupera la longitud de una línea de un control de edición.
CEdit::LineScroll Desplaza el texto de un control de edición de varias líneas.
CEdit::Paste Inserta los datos del portapapeles al control de edición en la posición actual del cursor. Los datos solo se insertan si el Portapapeles contiene datos en formato CF_TEXT.
CEdit::PosFromChar Recupera las coordenadas de la esquina superior izquierda de un índice de caracteres especificado.
CEdit::ReplaceSel Reemplaza la selección actual de un control de edición por el texto especificado.
CEdit::SetCueBanner Establece el texto que se muestra como indicación de texto, o sugerencia, en un control de edición cuando el control está vacío y no tiene el foco.
CEdit::SetHandle Establece el identificador de la memoria local que se va a usar en un control de edición de varias líneas.
CEdit::SetHighlight Resalta un rango de texto que se muestra en el control de edición actual.
CEdit::SetLimitText Establece la cantidad máxima de texto que CEdit puede contener.
CEdit::SetMargins Establece los márgenes izquierdo y derecho de CEdit.
CEdit::SetModify Establece o borra la marca de modificación de un control de edición.
CEdit::SetPasswordChar Establece o quita el carácter de contraseña que se muestra en un control de edición cuando el usuario escribe texto.
CEdit::SetReadOnly Establece el estado de solo lectura de un control de edición.
CEdit::SetRect Establece el rectángulo de formato de un control de edición de varias líneas y actualiza el control.
CEdit::SetRectNP Establece el rectángulo de formato de un control de edición de varias líneas sin volver a dibujar la ventana de control.
CEdit::SetSel Selecciona un rango de caracteres de un control de edición.
CEdit::SetTabStops Establece las tabulaciones de un control de edición de varias líneas.
CEdit::ShowBalloonTip Muestra un globo de sugerencias asociado al control de edición actual.
CEdit::Undo Invierte la última operación de control de edición.

Comentarios

Un control de edición es una ventana secundaria rectangular en la que el usuario puede escribir texto.

Puede crear un control de edición a partir de una plantilla de cuadro de diálogo o directamente en el código. En ambos casos, primero llame al constructor CEdit para que construya el objeto CEdit y luego llame a la función miembro Create para que cree el control de edición de Windows y lo adjunte al objeto CEdit.

La construcción puede ser un proceso de un solo paso en una clase derivada de CEdit. Escriba un constructor para la clase derivada y llame a Create desde dentro del constructor.

CEdit hereda una funcionalidad considerable de CWnd. Para establecer y recuperar texto de un objeto CEdit, use las funciones miembro de CWndSetWindowText y GetWindowText, que establecen u obtienen todo el contenido de un control de edición, aunque tenga varias líneas. Las líneas de texto de un control de varias líneas están separadas por secuencias de caracteres "\r\n". Además, si un control de edición tiene varias líneas, obtenga y establezca parte del texto del control mediante una llamada a las funciones miembro de CEditGetLine, SetSel, GetSel y ReplaceSel.

Si quiere controlar los mensajes de notificación de Windows enviados por un cuadro de edición a su elemento primario (normalmente una clase derivada de CDialog), agregue una entrada de mapa de mensajes y una función miembro del controlador de mensajes a la clase primaria por cada mensaje.

Cada entrada de asignación de mensajes tiene la siguiente forma:

ON_NOTIFICATION(id,memberFxn)

donde id especifica el id. de la ventana secundaria del control de edición que envía la notificación y memberFxn es el nombre de la función miembro primaria que se ha escrito para controlar la notificación.

El prototipo de función principal es el siguiente:

afx_msg void memberFxn ( );

A continuación se muestra una lista de posibles entradas de mapa de mensajes y una descripción de los casos en los que se enviarían al elemento primario:

  • ON_EN_CHANGE El usuario ha realizado una acción que puede haber modificado texto de un control de edición. A diferencia del mensaje de notificación EN_UPDATE, este mensaje de notificación se envía después de que Windows actualice la pantalla.

  • ON_EN_ERRSPACE El control de edición no puede asignar memoria suficiente para satisfacer una solicitud específica.

  • ON_EN_HSCROLL El usuario hace clic en la barra de desplazamiento horizontal de un control de edición. Se notifica a la ventana primaria antes de actualizar la pantalla.

  • ON_EN_KILLFOCUS El control de edición pierde el foco de entrada.

  • ON_EN_MAXTEXT La inserción actual ha superado el número especificado de caracteres del control de edición y se ha truncado. También se envía cuando un control de edición no tiene el estilo ES_AUTOHSCROLL y el número de caracteres que se va a insertar superaría el ancho del control de edición. También se envía cuando un control de edición no tiene el estilo ES_AUTOVSCROLL y el número total de líneas resultante de una inserción de texto superaría el alto del control de edición.

  • ON_EN_SETFOCUS Se envía cuando un control de edición recibe el foco de entrada.

  • ON_EN_UPDATE El control de edición está a punto de mostrar texto modificado. Se envía después de que el control haya aplicado formato al texto, pero antes de que lo muestre en la pantalla, de modo que el tamaño de la ventana se pueda modificar si fuera necesario.

  • ON_EN_VSCROLL El usuario hace clic en la barra de desplazamiento vertical de un control de edición. Se notifica a la ventana primaria antes de actualizar la pantalla.

Si crea un objeto CEdit dentro de un cuadro de diálogo, el objeto CEdit se destruye automáticamente cuando el usuario cierra el cuadro de diálogo.

Si crea un objeto CEdit a partir de un recurso de cuadro de diálogo, el objeto CEdit se destruye automáticamente cuando el usuario cierra el cuadro de diálogo.

Si crea un objeto CEdit dentro de una ventana, es posible que también tenga que destruirlo. Si crea el objeto CEdit en la pila, se destruye automáticamente. Si crea el objeto CEdit en el montón mediante la función new, debe llamar a delete en el objeto para destruirlo cuando el usuario finalice el control de edición de Windows. Si asigna cualquier memoria en el objeto CEdit, invalide el destructor CEditpara eliminar las asignaciones.

Para modificar determinados estilos de un control de edición (como ES_READONLY), debe enviar mensajes específicos al control en lugar de usar ModifyStyle. Vea Editar estilos de control en Windows SDK.

Para más información sobre CEdit, consulte Controles.

Jerarquía de herencia

CObject

CCmdTarget

CWnd

CEdit

Requisitos

Encabezado: afxwin.h

CEdit::CanUndo

Llame a esta función para determinar si se puede deshacer la última operación de edición.

BOOL CanUndo() const;

Valor devuelto

Valor distinto de cero si la última operación de edición se puede deshacer mediante una llamada a la función miembro Undo; 0 si no se puede deshacer.

Comentarios

Para obtener más información, vea EM_CANUNDO en Windows SDK.

Ejemplo

Vea el ejemplo de CEdit::Undo.

CEdit::CEdit

Construye un objeto CEdit.

CEdit();

Comentarios

Use Create para construir el control de edición de Windows.

Ejemplo

// Declare a local CEdit object.
CEdit myEdit;

// Declare a dynamic CEdit object.
CEdit *pmyEdit = new CEdit;

CEdit::CharFromPos

Llame a esta función para recuperar los índices de caracteres y líneas de base cero del carácter más próximo al punto especificado de este control CEdit

int CharFromPos(CPoint pt) const;

Parámetros

pt
Coordenadas de un punto en el área cliente de este objeto CEdit.

Valor devuelto

Índice de caracteres en la palabra de orden inferior e índice de líneas en la palabra de orden superior.

Comentarios

Nota:

Esta función miembro está disponible a partir de Windows 95 y Windows NT 4.0.

Para obtener más información, vea EM_CHARFROMPOS en Windows SDK.

Ejemplo

// CMyEdit inherits from CEdit
void CMyEdit::OnLButtonDown(UINT nFlags, CPoint point)
{
   int n = CharFromPos(point);
   int nLineIndex = HIWORD(n);
   int nCharIndex = LOWORD(n);
   TRACE(_T("nLineIndex = %d, nCharIndex = %d\r\n"), nLineIndex, nCharIndex);

   CEdit::OnLButtonDown(nFlags, point);
}

CEdit::Clear

Llame a esta función para eliminar (borrar) la selección actual (si la hubiera) del control de edición.

void Clear();

Comentarios

La eliminación realizada por Clear se puede deshacer mediante una llamada a la función miembro Undo.

Para eliminar la selección actual y colocar el contenido eliminado en el Portapapeles, llame a la función miembro Cut.

Para obtener más información, vea WM_CLEAR en Windows SDK.

Ejemplo

// Delete all of the text.
m_myEdit.SetSel(0, -1);
m_myEdit.Clear();

CEdit::Copy

Llame a esta función para copiar la selección actual (si la hubiera) del control de edición en el Portapapeles en formato CF_TEXT.

void Copy();

Comentarios

Para obtener más información, vea WM_COPY en Windows SDK.

Ejemplo

// Copy all of the text to the clipboard.
m_myEdit.SetSel(0, -1);
m_myEdit.Copy();

CEdit::Create

Crea el control de edición de Windows y lo adjunta al objeto CEdit.

virtual BOOL Create(
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

Parámetros

dwStyle
Especifica el estilo del control de edición. Aplique cualquier combinación de estilos de edición al control.

rect
Especifica el tamaño y la posición del control de edición. Puede ser un objeto CRect o una estructura RECT.

pParentWnd
Especifica la ventana primaria del control de edición (normalmente CDialog). No debe ser NULL.

Nid
Especifica el identificador del control de edición.

Valor devuelto

Valor distinto de cero si la inicialización se lleva a cabo correctamente; de lo contrario, es 0.

Comentarios

El objeto CEdit se construye en dos pasos. En primer lugar, llame al constructor CEdit y luego a Create, lo que crea el control de edición de Windows y lo adjunta al objeto CEdit.

Cuando Create se ejecuta, Windows envía los mensajes WM_NCCREATE, WM_NCCALCSIZE, WM_CREATE y WM_GETMINMAXINFO al control de edición.

Estos mensajes se controlan de manera predeterminada mediante las funciones miembro OnNcCreate, OnNcCalcSize, OnCreate y OnGetMinMaxInfo de la clase base CWnd. Para ampliar el control de mensajes predeterminado, derive una clase de CEdit, agregue una asignación de mensajes a la nueva clase e invalide las funciones miembro del controlador de mensajes anteriores. Invalide OnCreate, por ejemplo, para realizar la inicialización necesaria para la nueva clase.

Aplique los siguientes estilos de ventana a un control de edición.

  • WS_CHILD siempre

  • WS_VISIBLE Normalmente

  • WS_DISABLED Rarely

  • WS_GROUP Para agrupar controles

  • WS_TABSTOP Para incluir el control de edición en el orden de tabulación

Ejemplo

// dynamically create an edit control
CEdit *pEdit = new CEdit;
pEdit->Create(ES_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER,
              CRect(10, 10, 100, 100), this, 1);

CEdit::Cut

Llame a esta función para eliminar (cortar) la selección actual (si la hubiera) del control de edición y copiar el texto eliminado en el Portapapeles en formato CF_TEXT.

void Cut();

Comentarios

La eliminación realizada por Cut se puede deshacer mediante una llamada a la función miembro Undo.

Para eliminar la selección actual sin colocar el texto eliminado en el Portapapeles, llame a la función miembro Clear.

Para obtener más información, vea WM_CUT en Windows SDK.

Ejemplo

// Delete all of the text and copy it to the clipboard.
m_myEdit.SetSel(0, -1);
m_myEdit.Cut();

CEdit::EmptyUndoBuffer

Llame a esta función para restablecer (borrar) la marca de deshacer de un control de edición.

void EmptyUndoBuffer();

Comentarios

El control de edición ya no podrá deshacer la última operación. La marca de deshacer se establece cada vez que se puede deshacer una operación dentro del control de edición.

La marca de deshacer se borra automáticamente cada vez que se llama a las funciones miembro de CWndSetWindowText o SetHandle.

Para obtener más información, vea EM_EMPTYUNDOBUFFER en Windows SDK.

Ejemplo

// Clear the undo buffer.
if (m_myEdit.CanUndo())
{
   m_myEdit.EmptyUndoBuffer();
   ASSERT(!m_myEdit.CanUndo());
}

CEdit::FmtLines

Llame a esta función para activar o desactivar la inclusión de caracteres de salto de línea automático dentro de un control de edición de varias líneas.

BOOL FmtLines(BOOL bAddEOL);

Parámetros

bAddEOL
Especifica si se van a insertar caracteres de salto de línea automático. Un valor TRUE inserta los caracteres; un valor FALSE los quita.

Valor devuelto

Valor distinto de cero si se aplica algún formato; de lo contrario, 0.

Comentarios

Un salto de línea automático consta de dos retornos de carro y un avance de línea insertados al final de una línea que se interrumpe debido al ajuste de palabras. Un salto de línea manual consta de un retorno de carro y un avance de línea. Las líneas que terminan con un salto de línea manual no se ven afectadas por FmtLines.

Windows solo responde si el objeto CEdit es un control de edición de varias líneas.

FmtLines solo afecta al búfer devuelto por GetHandle y el texto devuelto por WM_GETTEXT. No tiene ningún impacto sobre la presentación del texto dentro del control de edición.

Para obtener más información, vea EM_FMTLINES en Windows SDK.

Ejemplo

CString strText;

// Add soft line-break breaks.
m_myEdit.FmtLines(TRUE);

// Dump the text of the edit control.
m_myEdit.GetWindowText(strText);
AFXDUMP(strText);

// Remove soft line-break breaks.
m_myEdit.FmtLines(FALSE);

CEdit::GetCueBanner

Recupera el texto que se muestra como indicación de texto, o sugerencia, en un control de edición cuando el control está vacío.

BOOL GetCueBanner(
    LPWSTR lpszText,
    int cchText) const;

CString GetCueBanner() const;

Parámetros

lpszText
[out] Puntero a una cadena que contiene el texto de indicación.

cchText
[in] Número de caracteres que se pueden recibir. Este número incluye el carácter nulo de terminación.

Valor devuelto

En la primera sobrecarga, TRUE si el método se ejecuta correctamente; en caso contrario, FALSE.

En la segunda sobrecarga, CString que contiene el texto de indicación si el método se ejecuta correctamente; de lo contrario, la cadena vacía ("").

Comentarios

Este método envía el mensaje EM_GETCUEBANNER, que se describe en Windows SDK. Para obtener más información, vea la macro Edit_GetCueBannerText.

CEdit::GetFirstVisibleLine

Llame a esta función para determinar la línea visible situada más arriba de un control de edición.

int GetFirstVisibleLine() const;

Valor devuelto

Índice de base cero de la línea visible situada más arriba. En los controles de edición de una sola línea, el valor devuelto es 0.

Comentarios

Para obtener más información, vea EM_GETFIRSTVISIBLELINE en Windows SDK.

Ejemplo

int nFirstVisible = m_myEdit.GetFirstVisibleLine();

// Scroll the edit control so that the first visible line
// is the first line of text.
if (nFirstVisible > 0)
{
   m_myEdit.LineScroll(-nFirstVisible, 0);
}

CEdit::GetHandle

Llame a esta función para recuperar un identificador de la memoria asignada actualmente a un control de edición de varias líneas.

HLOCAL GetHandle() const;

Valor devuelto

Identificador de memoria local que identifica el búfer que incluye el contenido del control de edición. Si se produce un error, como enviar el mensaje a un control de edición de una sola línea, el valor devuelto es 0.

Comentarios

El identificador es un identificador de memoria local que pueden usar cualquiera de las funciones de memoria de Windows Local que toman un identificador de memoria local como parámetro.

GetHandle solo se procesa mediante controles de edición de varias líneas.

Llame a GetHandle en un control de edición de varias líneas de un cuadro de diálogo solo si el cuadro de diálogo se ha creado con la marca de estilo DS_LOCALEDIT establecida. Si no se ha establecido el estilo DS_LOCALEDIT, se sigue obteniendo un valor devuelto distinto de cero, pero no se puede usar.

Nota:

GetHandle no funciona con Windows 95/98. Si llama a GetHandle en Windows 95/98, devuelve NULL. GetHandle funciona como se ha documentado en Windows NT 3.51 y versiones posteriores.

Para obtener más información, vea EM_GETHANDLE en Windows SDK.

Ejemplo

HLOCAL h = m_myEdit.GetHandle();
LPCTSTR lpszText = (LPCTSTR)::LocalLock(h);

// Dump the text of the edit control.
AFXDUMP(lpszText);

::LocalUnlock(h);

CEdit::GetHighlight

Obtiene los índices de los caracteres primero y último de un rango de texto resaltado del control de edición actual.

BOOL GetHighlight(
    int* pichStart,
    int* pichEnd) const;

Parámetros

pichStart
[out] Índice de base cero del primer carácter del rango de texto resaltado.

pichEnd
[out] Índice de base cero del último carácter del rango de texto resaltado.

Valor devuelto

TRUE si este método se ejecuta correctamente; de lo contrario, FALSE.

Comentarios

Este método envía el mensaje EM_GETHILITE, que se describe en Windows SDK. Tanto SetHighlight como GetHighlight están habilitados actualmente solo para compilaciones UNICODE.

CEdit::GetLimitText

Llame a esta función miembro para obtener el límite de texto de este objeto CEdit.

UINT GetLimitText() const;

Valor devuelto

Límite de texto actual, en caracteres TCHAR, de este objetoCEdit.

Comentarios

El límite de texto es la cantidad máxima de texto, en caracteres TCHAR, que el control de edición puede aceptar.

Nota:

Esta función miembro está disponible a partir de Windows 95 y Windows NT 4.0.

Para obtener más información, vea EM_GETLIMITTEXT en Windows SDK.

Ejemplo

CString strText(_T("I'm an edit control!"));
UINT nLength = strText.GetLength() * sizeof(TCHAR);

// Want the text limit to be at least the size of the new string.
if (m_myEdit.GetLimitText() < nLength)
   m_myEdit.SetLimitText(nLength);

m_myEdit.SetWindowText(strText);

CEdit::GetLine

Llame a esta función para recuperar una línea de texto de un control de edición y colocarla en lpszBuffer.

int GetLine(
    int nIndex,
    LPTSTR lpszBuffer) const;

int GetLine(
    int nIndex,
    LPTSTR lpszBuffer,
    int nMaxLength) const;

Parámetros

nIndex
Especifica el número de línea que se va a recuperar de un control de edición de varias líneas. Los números de línea se basan en cero; un valor de 0 especifica la primera línea. Este parámetro se pasa por alto en los controles de edición de una sola línea.

lpszBuffer
Apunta al búfer que recibe una copia de la línea. La primera palabra del búfer debe especificar el número máximo de caracteres TCHAR que se pueden copiar en el búfer.

nMaxLength
Especifica el número máximo de caracteres TCHAR que se pueden copiar en el búfer. GetLine coloca este valor en la primera palabra de lpszBuffer antes de realizar la llamada a Windows.

Valor devuelto

Número de caracteres que realmente se va a copiar. El valor devuelto es 0 si el número de línea especificado por nIndex es mayor que el número de líneas del control de edición.

Comentarios

La línea copiada no contiene un carácter de terminación nulo.

Para obtener más información, vea EM_GETLINE en Windows SDK.

Ejemplo

Vea el ejemplo de CEdit::GetLineCount.

CEdit::GetLineCount

Llame a esta función para recuperar el número de líneas de un control de edición de varias líneas.

int GetLineCount() const;

Valor devuelto

Entero que contiene el número de líneas del control de edición de varias líneas. Si no se ha escrito texto en el control de edición, el valor devuelto es 1.

Comentarios

GetLineCount solo se procesa mediante controles de edición de varias líneas.

Para obtener más información, vea EM_GETLINECOUNT en Windows SDK.

Ejemplo

int i, nLineCount = m_myEdit.GetLineCount();
CString strText, strLine;
// Dump every line of text of the edit control.
for (i = 0; i < nLineCount; i++)
{
   // length of line i:
   int len = m_myEdit.LineLength(m_myEdit.LineIndex(i));
   m_myEdit.GetLine(i, strText.GetBuffer(len), len);
   strText.ReleaseBuffer(len);
   strLine.Format(_T("line %d: '%s'\n"), i, strText);
   AFXDUMP(strLine);
}

CEdit::GetMargins

Llame a esta función miembro para recuperar los márgenes izquierdo y derecho de este control de edición.

DWORD GetMargins() const;

Valor devuelto

Ancho del margen izquierdo en la palabra de orden inferior y ancho del margen derecho en la palabra de orden superior.

Comentarios

Los márgenes se miden en píxeles.

Nota:

Esta función miembro está disponible a partir de Windows 95 y Windows NT 4.0.

Para obtener más información, vea EM_GETMARGINS en Windows SDK.

Ejemplo

Vea el ejemplo de CEditView::GetEditCtrl.

CEdit::GetModify

Llame a esta función para determinar si se ha modificado el contenido de un control de edición.

BOOL GetModify() const;

Valor devuelto

Valor distinto de cero si se ha modificado el contenido del control de edición; 0 si ha permanecido sin cambios.

Comentarios

Windows mantiene una marca interna que indica si se ha modificado el contenido del control de edición. Esta marca se borra cuando se crea por primera vez el control de edición y también se puede borrar si se llama a la función miembro SetModify.

Para obtener más información, vea EM_GETMODIFY en Windows SDK.

Ejemplo

// Reset the modified state only if my edit has been modified.
if (m_myEdit.GetModify())
   m_myEdit.SetModify(FALSE);

CEdit::GetPasswordChar

Llame a esta función para recuperar el carácter de contraseña que se muestra en un control de edición cuando el usuario escribe texto.

TCHAR GetPasswordChar() const;

Valor devuelto

Especifica el carácter que se va a mostrar en lugar del carácter que el usuario ha escrito. El valor devuelto es NULL si no existe ningún carácter de contraseña.

Comentarios

Si crea el control de edición con el estilo ES_PASSWORD, el archivo DLL que admite el control determina el carácter de contraseña predeterminado. El manifiesto o el método InitCommonControlsEx determina qué archivo DLL admite el control de edición. Si user32.dll admite el control de edición, el carácter de contraseña predeterminado es ASTERISCO ('*', U+002A). Si comctl32.dll, versión 6, admite el control de edición, el carácter predeterminado es PUNTO NEGRO ('●', U+25CF). Para obtener más información sobre qué archivo DLL y versión admiten los controles comunes, vea Versiones de shell y controles comunes.

Este método envía el mensaje EM_GETPASSWORDCHAR, que se describe en Windows SDK.

Ejemplo

// Turn on the password mode.
m_myEdit.SetPasswordChar('*');
ASSERT(m_myEdit.GetStyle() & ES_PASSWORD);
ASSERT(m_myEdit.GetPasswordChar() == '*');

CEdit::GetRect

Llame a esta función para obtener el rectángulo de formato de un control de edición.

void GetRect(LPRECT lpRect) const;

Parámetros

lpRect
Apunta a la estructura RECT que recibe el rectángulo de formato.

Comentarios

El rectángulo de formato es el rectángulo limitador del texto, que es independiente del tamaño de la ventana de control de edición.

Las funciones miembro SetRect y SetRectNP pueden modificar el rectángulo de formato de un control de edición de varias líneas.

Para obtener más información, vea EM_GETRECT en Windows SDK.

Ejemplo

Vea el ejemplo de CEdit::LimitText.

CEdit::GetSel

Llame a esta función para obtener las posiciones de los caracteres inicial y final de la selección actual (si la hubiera) de un control de edición; para ello, use el valor devuelto o los parámetros.

DWORD GetSel() const;

void GetSel(
    int& nStartChar,
    int& nEndChar) const;

Parámetros

nStartChar
Referencia a un entero que va a recibir la posición del primer carácter de la selección actual.

nEndChar
Referencia a un entero que va a recibir la posición del primer carácter no seleccionado más allá del final de la selección actual.

Valor devuelto

La versión que devuelve DWORD devuelve un valor que contiene la posición inicial de la palabra de orden inferior y la posición del primer carácter no seleccionado después del final de la selección de la palabra de orden superior.

Comentarios

Para obtener más información, vea EM_GETSEL en Windows SDK.

Ejemplo

// Set the selection to be all characters after the current selection.
DWORD dwSel = m_myEdit.GetSel();
m_myEdit.SetSel(HIWORD(dwSel), -1);

CEdit::HideBalloonTip

Oculta cualquier globo de sugerencias asociado al control de edición actual.

BOOL HideBalloonTip();

Valor devuelto

TRUE si este método se ejecuta correctamente; de lo contrario, FALSE.

Comentarios

Esta función envía el mensaje EM_HIDEBALLOONTIP, que se describe en Windows SDK.

CEdit::LimitText

Llame a esta función para limitar la longitud del texto que el usuario puede escribir en un control de edición.

void LimitText(int nChars = 0);

Parámetros

nChars
Especifica la longitud (en caracteres TCHAR) del texto que el usuario puede escribir. Si este parámetro es 0, la longitud del texto se establece en UINT_MAX bytes. Este es el comportamiento predeterminado.

Comentarios

Si se modifica el límite de texto, solo se restringe el texto que el usuario puede escribir. No tiene ningún efecto sobre ningún texto que ya esté en el control de edición, ni afecta a la longitud del texto copiado en el control de edición por la función miembro SetWindowText de CWnd. Si una aplicación usa la función SetWindowText para colocar más texto en un control de edición que se especifica en la llamada a LimitText, el usuario puede eliminar cualquier texto del control de edición. Pero el límite de texto evita que el usuario reemplace el texto existente por nuevo, a menos que la eliminación de la selección actual haga que el texto esté por debajo del límite de texto.

Nota:

En Win32 (Windows NT y Windows 95/98), SetLimitText reemplaza a esta función.

Para obtener más información, vea EM_LIMITTEXT en Windows SDK.

Ejemplo

// Limit the number of characters to be the maximum number visible.

// Get the text metrics for the edit; needed for the
// average character width.
TEXTMETRIC tm;
CDC *pDC = m_myEdit.GetDC();
pDC->GetTextMetrics(&tm);
m_myEdit.ReleaseDC(pDC);

CRect r;
m_myEdit.GetRect(&r);
m_myEdit.LimitText(r.Width() / tm.tmAveCharWidth);

CEdit::LineFromChar

Llame a esta función para recuperar el número de línea de la línea que contiene el índice de caracteres especificado.

int LineFromChar(int nIndex = -1) const;

Parámetros

nIndex
Contiene el valor de índice de base cero del carácter deseado en el texto del control de edición, o contiene -1. Si nIndex es -1, especifica la línea actual, es decir, la línea que contiene el símbolo de inserción.

Valor devuelto

Número de línea de base cero de la línea que contiene el índice de caracteres especificado por nIndex. Si nIndex es -1, se devuelve el número de la línea que contiene el primer carácter de la selección. Si no hay ninguna selección, se devuelve el número de línea actual.

Comentarios

Un índice de caracteres es el número de caracteres desde el principio del control de edición.

Esta función miembro solo se usa en controles de edición de varias líneas.

Para obtener más información, vea EM_LINEFROMCHAR en Windows SDK.

Ejemplo

// The index of the char to get information on.
int nIndex = 4;
CString strText;

m_myEdit.GetWindowText(strText);
strText = strText.Mid(nIndex, 1);

// Get the text extent of the character.
CDC *pDC = m_myEdit.GetDC();
CSize sz = pDC->GetTextExtent(strText);
m_myEdit.ReleaseDC(pDC);

CPoint pt = m_myEdit.PosFromChar(nIndex);

// Dump the index, character, line number, and character bounds.
TRACE(_T("nIndex = %d, character = %c, line = %d, bounds = ")
      _T("{%d, %d, %d, %d}\r\n"),
      nIndex, strText[0], m_myEdit.LineFromChar(nIndex),
      pt.x /* left */, pt.y /* top */,
      pt.x + sz.cx /* right */, pt.y + sz.cy /* bottom */);

CEdit::LineIndex

Llame a esta función para recuperar el índice de caracteres de una línea dentro de un control de edición de varias líneas.

int LineIndex(int nLine = -1) const;

Parámetros

nLine
Contiene el valor de índice de la línea deseada en el texto del control de edición, o contiene -1. Si nLine es -1, especifica la línea actual, es decir, la línea que contiene el símbolo de inserción.

Valor devuelto

Índice de caracteres de la línea especificada en nLine o -1 si el número de línea especificado es mayor que el número de líneas del control de edición.

Comentarios

El índice de caracteres es el número de caracteres desde el principio del control de edición hasta la línea especificada.

Esta función miembro solo se procesa en controles de edición de varias líneas.

Para obtener más información, vea EM_LINEINDEX en Windows SDK.

Ejemplo

// The string for replacing.
CString strString(_T("Hi, we're the replacements."));
int nBegin, nEnd;

// Replace the second line, if it exists, of the edit control
// with the text strString.
if ((nBegin = m_myEdit.LineIndex(1)) != -1)
{
   nEnd = nBegin + m_myEdit.LineLength(nBegin);
   m_myEdit.SetSel(nBegin, nEnd);
   m_myEdit.ReplaceSel(strString);
}

CEdit::LineLength

Recupera la longitud de una línea de un control de edición.

int LineLength(int nLine = -1) const;

Parámetros

nLine
Índice de base cero de un carácter de la línea cuya longitud se va a recuperar. El valor predeterminado es -1.

Valor devuelto

En los controles de edición de una sola línea, el valor devuelto es la longitud, en caracteres TCHAR, del texto del control de edición.

En los controles de edición de varias líneas, el valor devuelto es la longitud, en caracteres TCHAR, de la línea especificada por el parámetro nLine. En el texto ANSI, la longitud es el número de bytes de la línea; en el texto Unicode, la longitud es el número de caracteres de la línea. La longitud no incluye el carácter de retorno de carro del final de la línea.

Si el parámetro nLine es mayor que el número de caracteres del control, el valor devuelto es cero.

Si el parámetro nLine es -1, el valor devuelto es el número de caracteres no seleccionados de las líneas que contienen caracteres seleccionados. Por ejemplo, si la selección se extiende desde el cuarto carácter de una línea hasta el octavo carácter del final de la línea siguiente, el valor devuelto es 10. Es decir, tres caracteres en la primera línea y siete en la siguiente.

Para obtener más información sobre el tipo TCHAR, vea la fila TCHAR de la tabla de Tipos de datos de Windows.

Comentarios

Este método es compatible con el mensaje EM_LINELENGTH, que se describe en Windows SDK.

Ejemplo

Vea el ejemplo de CEdit::LineIndex.

CEdit::LineScroll

Llame a esta función para desplazar el texto de un control de edición de varias líneas.

void LineScroll(
    int nLines,
    int nChars = 0);

Parámetros

nLines
Especifica el número de líneas que se va a desplazar en vertical.

nChars
Especifica el número de posiciones de caracteres que se va a desplazar en horizontal. Este valor se omite si el control de edición tiene el estilo ES_RIGHT o ES_CENTER.

Comentarios

Esta función miembro solo se procesa en controles de edición de varias líneas.

El control de edición no desplaza verticalmente más allá de la última línea de texto del control de edición. Si la línea actual más el número de líneas especificado por nLines supera el número total de líneas del control de edición, el valor se ajusta para que la última línea del control de edición se desplace hasta la parte superior de la ventana de control de edición.

LineScroll se puede usar para desplazar horizontalmente más allá del último carácter de cualquier línea.

Para obtener más información, vea EM_LINESCROLL en Windows SDK.

Ejemplo

Vea el ejemplo de CEdit::GetFirstVisibleLine.

CEdit::Paste

Llame a esta función para insertar los datos del Portapapeles en CEdit en el punto de inserción.

void Paste();

Comentarios

Los datos solo se insertan si el Portapapeles contiene datos en formato CF_TEXT.

Para obtener más información, vea WM_PASTE en Windows SDK.

Ejemplo

// Replace all of the text with the text in the clipboard.
m_myEdit.SetSel(0, -1);
m_myEdit.Paste();

CEdit::PosFromChar

Llame a esta función para obtener la posición (esquina superior izquierda) de un carácter determinado dentro de este objeto CEdit.

CPoint PosFromChar(UINT nChar) const;

Parámetros

nChar
Índice de base cero del carácter especificado.

Valor devuelto

Coordenadas de la esquina superior izquierda del carácter especificado por nChar.

Comentarios

El carácter se especifica mediante su valor de índice de base cero. Si nChar es mayor que el índice del último carácter de este objeto CEdit, el valor devuelto especifica las coordenadas de la posición del carácter justo después del último carácter de este objeto CEdit.

Nota:

Esta función miembro está disponible a partir de Windows 95 y Windows NT 4.0.

Para obtener más información, vea EM_POSFROMCHAR en Windows SDK.

Ejemplo

Vea el ejemplo de CEdit::LineFromChar.

CEdit::ReplaceSel

Llame a esta función para reemplazar la selección actual de un control de edición por el texto especificado por lpszNewText.

void ReplaceSel(LPCTSTR lpszNewText, BOOL bCanUndo = FALSE);

Parámetros

lpszNewText
Puntero a una cadena terminada en null que contiene el texto de reemplazo.

bCanUndo
Para especificar que esta función se puede deshacer, establezca el valor de este parámetro en TRUE. El valor predeterminado es FALSE.

Comentarios

Reemplaza solo una parte del texto de un control de edición. Si quiere reemplazar todo el texto, use la función miembro CWnd::SetWindowText.

Si no hay ninguna selección actual, el texto de reemplazo se inserta en la ubicación actual del cursor.

Para obtener más información, vea EM_REPLACESEL en Windows SDK.

Ejemplo

Vea el ejemplo de CEdit::LineIndex.

CEdit::SetCueBanner

Establece el texto que se muestra como indicación de texto, o sugerencia, en un control de edición cuando el control está vacío.

BOOL SetCueBanner(LPCWSTR lpszText);

BOOL SetCueBanner(
    LPCWSTR lpszText,
    BOOL fDrawWhenFocused = FALSE);

Parámetros

lpszText
[in] Puntero a una cadena que contiene la indicación que se va a mostrar en el control de edición.

fDrawWhenFocused
[in] Si es FALSE, el banner de indicación no se dibuja cuando el usuario hace clic en el control de edición y proporciona el foco al control.

Si es TRUE, el banner de indicación se dibuja incluso cuando el control tiene el foco. El banner de indicación desaparece cuando el usuario empieza a escribir en el control.

El valor predeterminado es FALSE.

Valor devuelto

TRUE si el método se ejecuta correctamente; de lo contrario, FALSE.

Comentarios

Este método envía el mensaje EM_SETCUEBANNER, que se describe en Windows SDK. Para obtener más información, vea la macro Edit_SetCueBannerTextFocused.

Ejemplo

En el siguiente ejemplo se muestra el método CEdit::SetCueBanner.

m_cedit.SetCueBanner(_T("First, enter text here..."), TRUE);

CEdit::SetHandle

Llame a esta función para establecer el identificador de la memoria local que se va a usar en un control de edición de varias líneas.

void SetHandle(HLOCAL hBuffer);

Parámetros

hBuffer
Contiene un identificador de la memoria local. Este identificador debe haberse creado mediante una llamada anterior a la función LocalAlloc de Windows con la marca LMEM_MOVEABLE. Se da por hecho que la memoria contiene una cadena terminada en null. Si no es así, el primer byte de la memoria asignada debe establecerse en 0.

Comentarios

Después, el control de edición usa este búfer para almacenar el texto mostrado actualmente en lugar de asignar su propio búfer.

Esta función miembro solo se procesa en controles de edición de varias líneas.

Antes de que una aplicación establezca un nuevo identificador de memoria, debe usar la función miembro GetHandle para obtener el identificador del búfer de memoria actual y liberar esa memoria mediante la función de Windows LocalFree.

SetHandle borra el búfer de deshacer (la función miembro CanUndo devuelve 0) y la marca de modificación interna (la función miembro GetModify devuelve 0). Se vuelve a dibujar la ventana de control de edición.

Puede usar esta función miembro en un control de edición de varias líneas de un cuadro de diálogo solo si ha creado el cuadro de diálogo con la marca de estilo DS_LOCALEDIT establecida.

Nota:

GetHandle no funciona con Windows 95/98. Si llama a GetHandle en Windows 95/98, devuelve NULL. GetHandle funciona como se ha documentado en Windows NT 3.51 y versiones posteriores.

Para obtener más información, vea EM_SETHANDLE, LocalAlloc y LocalFree en Windows SDK.

Ejemplo

// The string to set in the edit control.
CString strString(_T("George Frideric"));

// Initialize the new local handle.
size_t cbSize = (strString.GetLength() + 1) * sizeof(TCHAR);
HLOCAL h = ::LocalAlloc(LHND, cbSize);
LPTSTR lpszText = (LPTSTR)::LocalLock(h);
_tcsncpy_s(lpszText, cbSize / sizeof(TCHAR), strString, _TRUNCATE);
::LocalUnlock(h);

// Free the current text handle of the edit control.
::LocalFree(m_myEdit.GetHandle());

// Set the new text handle.
m_myEdit.SetHandle(h);

CEdit::SetHighlight

Resalta un rango de texto que se muestra en el control de edición actual.

void SetHighlight(
    int ichStart,
    int ichEnd);

Parámetros

ichStart
[in] Índice de base cero del primer carácter del rango de texto que se va a resaltar.

ichEnd
[in] Índice de base cero del último carácter del rango de texto que se va a resaltar.

Comentarios

Este método envía el mensaje EM_SETHILITE, que se describe en Windows SDK. Este método envía el mensaje EM_SETHILITE, que se describe en Windows SDK. Tanto SetHighlight como GetHighlight están habilitados solo para compilaciones UNICODE.

CEdit::SetLimitText

Llame a esta función miembro para establecer el límite de texto de este objeto CEdit.

void SetLimitText(UINT nMax);

Parámetros

nMax
Nuevo límite de texto, en caracteres.

Comentarios

El límite de texto es la cantidad máxima de texto, en caracteres, que el control de edición puede aceptar.

Si se modifica el límite de texto, solo se restringe el texto que el usuario puede escribir. No tiene ningún efecto sobre ningún texto que ya esté en el control de edición, ni afecta a la longitud del texto copiado en el control de edición por la función miembro SetWindowText de CWnd. Si una aplicación usa la función SetWindowText para colocar más texto en un control de edición que se especifica en la llamada a LimitText, el usuario puede eliminar cualquier texto del control de edición. Pero el límite de texto evita que el usuario reemplace el texto existente por nuevo, a menos que la eliminación de la selección actual haga que el texto esté por debajo del límite de texto.

Esta función reemplaza a LimitText en Win32.

Para obtener más información, vea EM_SETLIMITTEXT en Windows SDK.

Ejemplo

Vea el ejemplo de CEditView::GetEditCtrl.

CEdit::SetMargins

Llame a este método para establecer los márgenes izquierdo y derecho de este control de edición.

void SetMargins(
    UINT nLeft,
    UINT nRight);

Parámetros

nLeft
Ancho del nuevo margen izquierdo, en píxeles.

nRight
Ancho del nuevo margen derecho, en píxeles.

Comentarios

Nota:

Esta función miembro está disponible a partir de Windows 95 y Windows NT 4.0.

Para obtener más información, vea EM_SETMARGINS en Windows SDK.

Ejemplo

Vea el ejemplo de CEditView::GetEditCtrl.

CEdit::SetModify

Llame a esta función para establecer o borrar la marca modificada de un control de edición.

void SetModify(BOOL bModified = TRUE);

Parámetros

bModified
Un valor TRUE indica que el texto se ha modificado y un valor FALSE que no. De manera predeterminada, se establece la marca modificada.

Comentarios

La marca modificada indica si se ha modificado o no el texto del control de edición. Se establece automáticamente cada vez que el usuario modifica el texto. Su valor se puede recuperar con la función miembro GetModify.

Para obtener más información, vea EM_SETMODIFY en Windows SDK.

Ejemplo

Vea el ejemplo de CEdit::GetModify.

CEdit::SetPasswordChar

Llame a esta función para establecer o quitar un carácter de contraseña mostrado en un control de edición cuando el usuario escribe texto.

void SetPasswordChar(TCHAR ch);

Parámetros

Ch
Especifica el carácter que se va a mostrar en lugar del carácter escrito por el usuario. Si ch es 0, se muestran los caracteres reales escritos por el usuario.

Comentarios

Cuando se establece un carácter de contraseña, ese carácter se muestra por cada carácter que escribe el usuario.

Esta función miembro no tiene ningún efecto en un control de edición de varias líneas.

Cuando se llama a la función miembro SetPasswordChar, CEdit vuelve a dibujar todos los caracteres visibles con el carácter especificado por ch.

Si el control de edición se crea con el estilo ES_PASSWORD, el carácter de contraseña predeterminado se establece en un asterisco (*). Este estilo se quita si se llama a SetPasswordChar con ch establecido en 0.

Para obtener más información, vea EM_SETPASSWORDCHAR en Windows SDK.

Ejemplo

// Turn off the password mode.
m_myEdit.SetPasswordChar(0);
ASSERT(!(m_myEdit.GetStyle() & ES_PASSWORD));

CEdit::SetReadOnly

Llame a esta función para establecer el estado de solo lectura de un control de edición.

BOOL SetReadOnly(BOOL bReadOnly = TRUE);

Parámetros

bReadOnly
Especifica si se va a establecer o quitar el estado de solo lectura del control de edición. Un valor TRUE establece el estado en solo lectura; un valor FALSE establece el estado en lectura y escritura.

Valor devuelto

Valor distinto de cero si la operación se realiza correctamente o 0 si se produce un error.

Comentarios

El valor actual se puede encontrar si se prueba la marca ES_READONLY en el valor devuelto de CWnd::GetStyle.

Para obtener más información, vea EM_SETREADONLY en Windows SDK.

Ejemplo

// Set the edit control to be read-only.
m_myEdit.SetReadOnly(TRUE);
ASSERT(m_myEdit.GetStyle() & ES_READONLY);

CEdit::SetRect

Llame a esta función para establecer las dimensiones de un rectángulo mediante las coordenadas especificadas.

void SetRect(LPCRECT lpRect);

Parámetros

lpRect
Apunta a la estructura RECT o el objeto CRect que especifica las nuevas dimensiones del rectángulo de formato.

Comentarios

Este miembro solo se procesa en controles de edición de varias líneas.

Use SetRect para establecer el rectángulo de formato de un control de edición de varias líneas. El rectángulo de formato es el rectángulo limitador del texto, que es independiente del tamaño de la ventana de control de edición. Cuando se crea el control de edición por primera vez, el rectángulo de formato es igual que el área cliente de la ventana de control de edición. Mediante la función miembro SetRect, una aplicación puede hacer que el rectángulo de formato sea mayor o menor que la ventana de control de edición.

Si el control de edición no tiene barra de desplazamiento, se recorta el texto, no se ajusta, si el rectángulo de formato es mayor que la ventana. Si el control de edición contiene un borde, el rectángulo de formato se reduce según el tamaño del borde. Si ajusta el rectángulo devuelto por la función miembro GetRect, debe quitar el tamaño del borde antes de pasar el rectángulo a SetRect.

Cuando se llama a SetRect, también se vuelve a aplicar formato al texto del control de edición, que se vuelve a mostrar.

Para obtener más información, vea EM_SETRECT en Windows SDK.

Ejemplo

// Flag indicating whether to redraw the edit control.
bool fRedraw = TRUE;

CRect r;

m_myEdit.GetRect(&r);

// Reduce the formatting rect of the edit control by
// 10 pixels on each side.
if ((r.Width() > 20) && (r.Height() > 20))
{
   r.DeflateRect(10, 10);

   if (fRedraw)
      m_myEdit.SetRect(&r);
   else
      m_myEdit.SetRectNP(&r);
}

CEdit::SetRectNP

Llame a esta función para establecer el rectángulo de formato de un control de edición de varias líneas.

void SetRectNP(LPCRECT lpRect);

Parámetros

lpRect
Apunta a una estructura RECT o un objeto CRect que especifica las nuevas dimensiones del rectángulo.

Comentarios

El rectángulo de formato es el rectángulo limitador del texto, que es independiente del tamaño de la ventana de control de edición.

SetRectNP es idéntico a la función miembro SetRect, salvo que la ventana de control de edición no se vuelve a dibujar.

Cuando se crea el control de edición por primera vez, el rectángulo de formato es igual que el área cliente de la ventana de control de edición. Mediante una llamada a la función miembro SetRectNP, una aplicación puede hacer que el rectángulo de formato sea mayor o menor que la ventana de control de edición.

Si el control de edición no tiene barra de desplazamiento, se recorta el texto, no se ajusta, si el rectángulo de formato es mayor que la ventana.

Este miembro solo se procesa en controles de edición de varias líneas.

Para obtener más información, vea EM_SETRECTNP en Windows SDK.

Ejemplo

Vea el ejemplo de CEdit::SetRect.

CEdit::SetSel

Llame a esta función para seleccionar un rango de caracteres de un control de edición.

void SetSel(
    DWORD dwSelection,
    BOOL bNoScroll = FALSE);

void SetSel(
    int nStartChar,
    int nEndChar,
    BOOL bNoScroll = FALSE);

Parámetros

dwSelection
Especifica la posición inicial de la palabra de orden inferior y la posición final de la palabra de orden superior. Si la palabra de orden inferior es 0 y la de orden superior es -1, se selecciona todo el texto del control de edición. Si la palabra de orden inferior es -1, se quita cualquier selección actual.

bNoScroll
Indica si el símbolo de inserción debe desplazarse hasta la vista. Si es FALSE, el símbolo de inserción se desplaza hasta la vista. Si es TRUE, el símbolo de inserción no se desplaza a la vista.

nStartChar
Especifica la posición inicial. Si nStartChar es 0 y nEndChar es -1, se selecciona todo el texto del control de edición. Si nStartChar es -1, se quita cualquier selección actual.

nEndChar
Especifica la posición final.

Comentarios

Para obtener más información, vea EM_SETSEL en Windows SDK.

Ejemplo

Vea el ejemplo de CEdit::GetSel.

CEdit::SetTabStops

Llame a esta función para establecer las tabulaciones de un control de edición de varias líneas.

void SetTabStops();
BOOL SetTabStops(const int& cxEachStop);

BOOL SetTabStops(
    int nTabStops,
    LPINT rgTabStops);

Parámetros

cxEachStop
Especifica que las tabulaciones se deben establecer en cada unidad de diálogo cxEachStop.

nTabStops
Especifica el número de tabulaciones incluidas en rgTabStops. Este número debe ser mayor que 1.

rgTabStops
Apunta a una matriz de enteros sin signo que especifican las tabulaciones en unidades de diálogo. Una unidad de diálogo es una distancia horizontal o vertical. Una unidad de diálogo horizontal es igual a un cuarto de la unidad de ancho base del cuadro diálogo actual, y una unidad de diálogo vertical es igual a un octavo de la unidad de alto base del cuadro de diálogo actual. Las unidades base del cuadro de diálogo se calculan en función del alto y ancho de la fuente actual del sistema. La función de Windows GetDialogBaseUnits devuelve las unidades base del cuadro de diálogo actuales en píxeles.

Valor devuelto

Valor distinto de cero si se han establecido las tabulaciones; de lo contrario, 0.

Comentarios

Cuando se copia texto en un control de edición de varias líneas, cualquier carácter de tabulación del texto hace que se genere espacio hasta la siguiente tabulación.

Para establecer tabulaciones en el tamaño predeterminado de 32 unidades de diálogo, llame a la versión sin parámetros de esta función miembro. Para establecer tabulaciones en un tamaño distinto de 32, llame a la versión con el parámetro cxEachStop. Para establecer tabulaciones en una matriz de tamaños, use la versión con dos parámetros.

Esta función miembro solo se procesa en controles de edición de varias líneas.

SetTabStops no vuelve a dibujar automáticamente la ventana de edición. Si cambia las tabulaciones de un texto que ya está en el control de edición, llame a CWnd::InvalidateRect para volver a dibujar la ventana de edición.

Para obtener más información, vea EM_SETTABSTOPS y GetDialogBaseUnits en Windows SDK.

Ejemplo

Vea el ejemplo de CEditView::SetTabStops.

CEdit::ShowBalloonTip

Muestra un globo de sugerencias asociado al control de edición actual.

BOOL ShowBalloonTip(PEDITBALLOONTIP pEditBalloonTip);

BOOL ShowBalloonTip(
    LPCWSTR lpszTitle,
    LPCWSTR lpszText,
    INT ttiIcon = TTI_NONE);

Parámetros

pEditBalloonTip
[in] Puntero a una estructura EDITBALLOONTIP que describe el globo de sugerencias.

lpszTitle
[in] Puntero a una cadena Unicode que contiene el título del globo de sugerencias.

lpszText
[in] Puntero a una cadena Unicode que contiene el texto del globo de sugerencias.

ttiIcon
[in] INT que especifica el tipo de icono que se va a asociar al globo de sugerencias. El valor predeterminado es TTI_NONE. Para obtener más información, vea el miembro ttiIcon de la estructura EDITBALLOONTIP.

Valor devuelto

TRUE si este método se ejecuta correctamente; de lo contrario, FALSE.

Comentarios

Esta función envía el mensaje EM_SHOWBALLOONTIP, que se describe en Windows SDK. Para obtener más información, vea la macro Edit_ShowBalloonTip.

Ejemplo

En el primer ejemplo de código se define una variable, m_cedit, que se usa para acceder al control de edición actual. Esta variable se utiliza en el siguiente ejemplo.

public:
// Variable to access the edit control.
CEdit m_cedit;

En el ejemplo de código siguiente se muestra un globo de sugerencias de un control de edición. El método CEdit::ShowBalloonTip especifica un título y texto para el globo de sugerencias.

m_cedit.ShowBalloonTip(
    _T("CEdit Balloon Tip"), // title
    _T("Here's a tip!"),     // text
    TTI_INFO);

CEdit::Undo

Llame a esta función para deshacer la última operación de control de edición.

BOOL Undo();

Valor devuelto

En un control de edición de una sola línea, el valor devuelto siempre es distinto de cero. En un control de edición de varias líneas, el valor devuelto es distinto de cero si la operación de deshacer se realiza correctamente o 0 si se produce un error en ella.

Comentarios

También se puede deshacer una operación de deshacer. Por ejemplo, puede restaurar texto eliminado con la primera llamada a Undo. Siempre que no haya ninguna operación de edición que intervenga, puede quitar el texto de nuevo con una segunda llamada a Undo.

Para obtener más información, vea EM_UNDO en Windows SDK.

Ejemplo

// Undo the last operation, if possible.
if (m_myEdit.CanUndo())
   m_myEdit.Undo();

Consulte también

MFC Sample CALCDRIV
MFC Sample CMNCTRL2
CWnd (clase)
Gráfico de jerarquías
CWnd (clase)
CButton (clase)
CComboBox (clase)
CListBox (clase)
CScrollBar (clase)
CStatic (clase)
CDialog (clase)