Acerca de editar controles

Un control de edición es una ventana de control rectangular que normalmente se usa en un cuadro de diálogo para permitir que el usuario escriba y edite texto.

Los controles de edición admiten el juego de caracteres Unicode en el que los caracteres son dos bytes y los juegos de caracteres ANSI en los que los caracteres son de un byte. Para obtener más información sobre los juegos de caracteres Unicode y ANSI, vea Conjuntos de caracteres Unicode y Caracteres.

Los controles de edición enriquecidos admiten muchas características que no están disponibles en los controles de edición del sistema. Para obtener más información, vea Controles de edición enriquecidos.

En esta introducción se describen los temas siguientes.

Editar características de control

Cuando se selecciona, un control de edición muestra un símbolo de intercalación parpadeante que indica el punto de inserción. A continuación, el usuario puede escribir texto, mover el punto de inserción o seleccionar texto que se va a editar mediante el teclado o el mouse. Un control de edición envía códigos de notificación a su ventana primaria en forma de WM_COMMAND mensajes. Para obtener más información sobre los mensajes de un control de edición, vea Editar mensajes de notificación de control. Una ventana primaria puede enviar mensajes a un control de edición en un cuadro de diálogo llamando a la función SendDlgItemMessage . Algunos mensajes también se pueden enviar mediante macros predefinidas.

El sistema proporciona controles de edición de una sola línea y controles de edición de varias líneas. Los controles de edición pertenecen a la clase de ventana EDIT.

Un cuadro combinado es un control que combina gran parte de la funcionalidad de un control de edición y un cuadro de lista. En un cuadro combinado, el control de edición muestra la selección actual y el cuadro de lista presenta opciones que un usuario puede seleccionar. Para obtener más información sobre los cuadros combinados, vea Cuadros combinados.

Muchos desarrolladores usan los cuadros de diálogo proporcionados en la biblioteca común de cuadros de diálogo (Comdlg32.dll) para realizar tareas que, de lo contrario, podrían requerir controles de edición personalizados. Para obtener información sobre los cuadros de diálogo comunes, vea Biblioteca de cuadros de diálogo comunes.

Editar tipos y estilos de control

Un control de edición individual puede tener varios estilos al mismo tiempo. La mayoría de los desarrolladores usan herramientas para desarrollar cuadros de diálogo, por lo que es posible que no necesite especificar explícitamente estilos de control de edición. Sin embargo, si una aplicación crea un control de edición mediante la función CreateWindow o CreateWindowEx , debe especificar estos estilos de control de edición. Para obtener una tabla de estilos de control de edición, vea Editar estilos de control.

Cada control de edición especifica una combinación de valores de estilo que definen la apariencia y las características del control de edición. Los valores de estilo pueden establecer la apariencia de un control de edición de una sola línea o de varias líneas; alinear el texto en el control; y determinar cómo, e incluso si, el texto aparece en el control de edición.

Estilo multilínea

Hay dos estilos de línea para los controles de edición. El valor predeterminado es un control de edición de una sola línea. Una aplicación también puede crear un control de edición de varias líneas mediante el estilo ES_MULTILINE .

Estilos de desplazamiento

El estilo ES_AUTOHSCROLL indica al control de edición que desplácese horizontalmente el texto, cuando sea necesario, a medida que el usuario escribe texto. Si no se especifica este estilo, el control de edición no se puede desplazar horizontalmente. En el caso de los controles de edición de una sola línea sin ES_AUTOHSCROLL, solo se aceptan los caracteres que rellenan el área visible del control. En el caso de los controles de edición multilínea sin ES_AUTOHSCROLL, el texto se ajusta a la siguiente línea cuando el usuario escribe más texto de lo que se puede mostrar en una sola línea. Si se especifica ES_AUTOHSCROLL para un control de edición de varias líneas, el control se desplaza horizontalmente cuando el usuario escribe más texto de lo que se puede mostrar en una sola línea; el texto no se ajustará.

ES_AUTOHSCROLL se aplica automáticamente a un control de edición de varias líneas alineado a la izquierda que tiene un estilo WS_HSCROLL . En otras palabras, cualquier control de edición de varias líneas alineado a la izquierda que tenga una barra de desplazamiento horizontal se desplaza horizontalmente de forma automática.

ES_AUTOHSCROLL se omite mediante un control de edición multilínea que no está alineado a la izquierda. Los controles de edición multilínea centrados y alineados a la derecha no se pueden desplazar horizontalmente

El estilo ES_AUTOVSCROLL indica al control de edición que desplácese verticalmente el texto cuando el usuario escriba más texto de lo que se pueda mostrar en el control de edición. Este estilo solo se aplica a los controles de edición multilínea. Si no se especifica este estilo para un control de edición de varias líneas, el control de edición no aceptará la entrada cuando se escriba más texto de lo que se pueda mostrar.

Estilos de alineación

Hay tres estilos que hacen que el sistema alinee el texto en un control de edición. Los estilos ES_LEFT, ES_CENTER y ES_RIGHT determinan si el texto está alineado a la izquierda, el centro o la derecha, respectivamente. Los controles de edición multilínea centrados y alineados a la derecha no pueden tener el estilo ES_AUTOHSCROLL ; es decir, no pueden desplazarse horizontalmente.

Aunque no es posible cambiar el estilo de alineación de un control de edición dinámicamente, se pueden usar las siguientes técnicas para solucionar esta restricción:

  • Cree varios controles de edición, uno para cada estilo que necesite la aplicación y cambie entre ellos según sea necesario.
  • Cree un nuevo control de edición con el estilo deseado, ya que es necesario y cambie al nuevo control.

Estilos de texto y entrada

Una aplicación puede usar estilos para especificar cómo muestra el control de edición texto. El estilo ES_LOWERCASE hace que todos los caracteres en mayúsculas especificados en el control de edición se conviertan en minúsculas. Del mismo modo, el estilo ES_UPPERCASE hace que todos los caracteres en minúsculas se conviertan en mayúsculas.

Para obtener más información sobre los juegos de caracteres, vea Unicode y Juegos de caracteres.

El estilo ES_NUMBER restringe la entrada a los dígitos solo en el control de edición.

El estilo ES_READONLY cambia el control de edición al estado de solo lectura.

El estilo ES_PASSWORD muestra todos los caracteres de un control de edición de una sola línea como asteriscos. Una aplicación puede definir un carácter diferente para mostrar mediante el mensaje EM_SETPASSWORDCHAR , como se describe más adelante en este tema.

Si un control de edición procede de Comctl32.dll versión 6, un círculo negro es el carácter predeterminado para el estilo ES_PASSWORD . En los controles de edición de versiones anteriores de los controles comunes, el carácter predeterminado es un asterisco.

El estilo ES_OEMCONVERT hace que el texto escrito en el control de edición se convierta de los caracteres de Windows establecidos en el juego de caracteres OEM y, a continuación, vuelva a establecer caracteres de Windows. Esto garantiza una conversión de caracteres adecuada cuando la aplicación llama a la función CharToOem para convertir una cadena de Windows en el control de edición a caracteres OEM. ES_OEMCONVERT es más útil para los controles de edición que contienen nombres de archivo que se usarán en sistemas de archivos que no admiten Unicode.

Para un control de edición de varias líneas en un cuadro de diálogo, el estilo ES_WANTRETURN hace que el control inserte un retorno de carro cuando el usuario presiona la tecla ENTRAR mientras escribe texto. Si no se especifica este estilo, presionar la tecla ENTRAR tiene el mismo efecto que presionar el botón de inserción predeterminado en el cuadro de diálogo. Sin ES_WANTRETURN, el usuario debe presionar CTRL+ENTRAR para insertar un retorno de carro. Para obtener información sobre Wordwrap y saltos de línea, vea Control de saltos de línea y wordwrap.

Estilos visuales

El estilo ES_NOHIDESEL hace que el texto seleccionado permanezca resaltado cuando el control de edición no tenga el foco. Sin este estilo, el texto seleccionado pierde el resaltado cuando el control pierde el foco.

De forma predeterminada, un control de edición no tiene borde. Para darle una, una aplicación puede usar el estilo de ventana WS_BORDER .

Para usar estilos visuales con controles de edición, una aplicación debe incluir un manifiesto y llamar a InitCommonControls al principio del programa. Para obtener información sobre los estilos visuales, vea Estilos visuales. Para obtener información sobre los manifiestos, consulte Habilitación de estilos visuales.

Búfer de texto

El sistema almacena el texto de control de edición en un búfer y lo copia en el control, según sea necesario.

En los temas siguientes se describe cómo el sistema asigna e inicializa el búfer y cambia sus características:

Asignar un búfer de texto

Cuando el sistema crea un control de edición, crea automáticamente un búfer de texto, establece su tamaño inicial y aumenta el tamaño según sea necesario. El tamaño puede ser hasta un límite predefinido de aproximadamente 32 kilobytes (KB) para los controles de edición de una sola línea. Dado que este límite puede cambiar, se denomina límite flexible. Una aplicación puede establecer un límite máximo en el tamaño del búfer enviando un mensaje EM_SETLIMITTEXT al control de edición. Si el búfer supera cualquiera de los límites, el sistema envía a la aplicación un código de notificación EN_ERRSPACE . Una aplicación puede recuperar el límite de texto actual enviando un mensaje de EM_GETLIMITTEXT .

Normalmente, el sistema crea un búfer de control de edición en un cuadro de diálogo con memoria fuera del segmento de datos de la aplicación. Una aplicación puede suprimir este comportamiento de asignación predeterminado y crear el búfer a partir de su montón local mediante el estilo DS_LOCALEDIT (vea "Estilos de plantilla de cuadro de diálogo" en Acerca de los cuadros de diálogo) al crear el control de edición. Una aplicación que usa el estilo DS_LOCALEDIT es responsable de todas las asignaciones de búfer. Para realizar la asignación inicial, una aplicación puede llamar a la función LocalAlloc y pasar el identificador de búfer devuelto al control de edición mediante el envío de un mensaje de EM_SETHANDLE . Para realizar asignaciones posteriores (en respuesta a un código de notificación de EN_ERRSPACE , por ejemplo), una aplicación debe guardar el contenido del búfer actual (si es necesario) y obtener un nuevo búfer como se indica a continuación.

Para guardar el búfer actual y obtener uno nuevo, siga este procedimiento.

  1. Recupere el identificador de la memoria asignada actualmente para el texto en un control de edición de varias líneas enviando al control un mensaje de EM_GETHANDLE .
  2. Libere el búfer llamando a la función LocalFree .
  3. Obtenga un nuevo búfer (y identificador de búfer) llamando a LocalAlloc.
  4. Asigne al sistema el identificador del búfer enviando al control un mensaje de EM_SETHANDLE .

Los mensajes EM_SETHANDLE y EM_GETHANDLE solo se aplican a los controles de edición de varias líneas.

Una aplicación que usa el comportamiento de asignación predeterminado (es decir, no usa el estilo DS_LOCALEDIT (vea "Estilos de plantilla de cuadro de diálogo" en Acerca de los cuadros de diálogo) no debe enviar EM_SETHANDLE ni EM_GETHANDLE mensajes al control de edición.

El envío de un mensaje EM_SETHANDLE tiene varios efectos secundarios: borra la marca de deshacer (haciendo que el mensaje EM_CANUNDO devuelva cero), borra la marca de modificación (haciendo que el mensaje de EM_GETMODIFY devuelva cero) y vuelve a dibujar la ventana de control de edición.

Inicialización de un búfer de texto

Una aplicación puede inicializar o reinicializar el búfer de texto de un control de edición llamando a la función SetDlgItemText . Una aplicación puede recuperar el contenido de un búfer de texto llamando a la función GetDlgItemText .

Hacer que un búfer de texto sea de solo lectura

Para cada control de edición, el sistema mantiene una marca de solo lectura que indica si el texto del control es de lectura y escritura (valor predeterminado) o de solo lectura. Una aplicación puede establecer la marca de lectura y escritura o la marca de solo lectura para el texto enviando al control un mensaje de EM_SETREADONLY . Para determinar si un control de edición es de solo lectura, una aplicación puede llamar a la función GetWindowLong mediante la constante GWL_STYLE . El mensaje de EM_SETREADONLY se aplica a los controles de edición de una sola línea y de varias líneas.

Cambio del rectángulo de formato

La visibilidad del texto de un control de edición se rige por las dimensiones de su rectángulo de ventana y su rectángulo de formato. El rectángulo de ventana es el área cliente de la ventana que contiene el control de edición. El sistema mantiene el formato del rectángulo de formato para dar formato al texto mostrado en el rectángulo de ventana. Cuando se muestra un control de edición por primera vez, los dos rectángulos son idénticos en la pantalla. Una aplicación puede hacer que el rectángulo de formato sea mayor que el rectángulo de ventana (lo que limita la visibilidad del texto del control de edición) o menor que el rectángulo de la ventana (lo que crea espacio en blanco adicional alrededor del texto).

Una aplicación puede establecer las coordenadas del rectángulo de formato de un control de edición mediante el envío de un mensaje EM_SETRECT . El mensaje EM_SETRECT también vuelve a dibujar automáticamente el texto del control de edición. Para establecer las coordenadas del rectángulo de formato sin volver a dibujar el texto del control, una aplicación puede enviar al control un mensaje de EM_SETRECTNP . Para recuperar las coordenadas del rectángulo de formato, una aplicación puede enviar al control un mensaje de EM_GETRECT . Estos mensajes solo se aplican a los controles de edición multilínea.

Editar mensajes de notificación de control

El usuario realiza solicitudes de edición mediante el teclado y el mouse. El sistema envía cada solicitud a la ventana primaria del control de edición en forma de mensaje WM_COMMAND . El mensaje incluye el identificador de control de edición en la palabra de orden bajo del parámetro wParam , el identificador del control de edición en el parámetro lParam y un código de notificación de control de edición correspondiente a la acción del usuario en la palabra de orden superior del parámetro wParam .

Una aplicación debe examinar los códigos de notificación que acompañan a cada mensaje de notificación y responder adecuadamente. En la tabla siguiente se enumeran cada código de notificación de control de edición y la acción que la genera.

Código de notificación Acción del usuario
EN_CHANGE El usuario ha modificado el texto en un control de edición. El sistema actualiza la pantalla antes de enviar este código de notificación (a diferencia de EN_UPDATE).
EN_ERRSPACE El control de edición no puede asignar memoria suficiente para satisfacer una solicitud específica.
EN_HSCROLL El usuario ha realizado clic en la barra de desplazamiento horizontal del control de edición. El sistema envía este código de notificación antes de actualizar la pantalla.
EN_KILLFOCUS El usuario ha seleccionado otro control.
EN_MAXTEXT Al insertar texto, el usuario ha superado el número especificado de caracteres para el control de edición. Se ha truncado la inserción. Este código de notificación 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 van a insertar supera el ancho del control de edición o cuando un control de edición no tiene el estilo ES_AUTOVSCROLL y el número total de líneas que se van a insertar supera el alto del control de edición.
EN_SETFOCUS El usuario ha seleccionado este control de edición.
EN_UPDATE El usuario ha modificado el texto en el control de edición y el sistema está a punto de mostrar el nuevo texto. El sistema envía este código de notificación después de dar formato al texto, pero antes de mostrarlo, para que la aplicación pueda cambiar el tamaño de la ventana de control de edición.
EN_VSCROLL El usuario ha realizado clic en la barra de desplazamiento vertical del control de edición o ha desplazado la rueda del mouse sobre el control de edición. El sistema envía este código de notificación antes de actualizar la pantalla.
EN_SEARCHWEB El usuario ha realizado clic en la entrada del menú contextual "Buscar en la web". El sistema envía esta notificación después de iniciar el explorador.

Además, el sistema envía un mensaje WM_CTLCOLOREDIT a la ventana primaria de un control de edición antes de dibujar el control de edición. Este mensaje contiene un identificador del contexto de visualización (DC) del control de edición y un identificador de la ventana secundaria. La ventana primaria puede usar estos identificadores para cambiar los colores de fondo y texto del control de edición.

Editar el procesamiento predeterminado de mensajes del control

El procedimiento de ventana de la clase de ventana de control de edición predefinida lleva a cabo el procesamiento predeterminado de todos los mensajes que el procedimiento de control de edición no procesa. Cuando el procedimiento de control de edición devuelve FALSE para cualquier mensaje, el procedimiento de ventana predefinido comprueba los mensajes y lleva a cabo las siguientes acciones predeterminadas.

Message Acción predeterminada
EM_CANUNDO Devuelve TRUE si se puede deshacer la operación de control de edición.
EM_CHARFROMPOS Devuelve el índice de caracteres y el índice de línea del carácter más cercano al punto especificado.
EM_EMPTYUNDOBUFFER Vacía el búfer de deshacer y establece la marca de deshacer recuperada por el mensaje EM_CANUNDOen FALSE. El sistema borra automáticamente la marca de deshacer cada vez que el control de edición recibe un mensaje de WM_SETTEXT o EM_SETHANDLE .
EM_FMTLINES Agrega o quita caracteres de salto de línea suaves (dos retornos de carro y una fuente de línea) a los extremos de las líneas ajustadas en un control de edición de varias líneas. Los controles de edición de una sola línea no los procesan.
EM_GETFIRSTVISIBLELINE Devuelve el índice de base cero del primer carácter visible en un control de edición de una sola línea o el índice de base cero de la línea visible superior en un control de edición de varias líneas.
EM_GETHANDLE Devuelve un identificador que identifica el búfer que contiene el texto del control de edición de varias líneas. Los controles de edición de una sola línea no los procesan.
EM_GETLIMITTEXT Devuelve el límite de texto actual, en caracteres.
EM_GETLINE Copia caracteres en un control de edición de una sola línea en un búfer y devuelve el número de caracteres copiados. En un control de edición de varias líneas, recupera una línea de texto del control y devuelve el número de caracteres copiados.
EM_GETLINECOUNT Devuelve el número de líneas del control de edición.
EM_GETMARGINS Devuelve los anchos de los márgenes izquierdo y derecho.
EM_GETMODIFY Devuelve una marca que indica si se ha modificado el contenido de un control de edición.
EM_GETPASSWORDCHAR Devuelve el carácter que editan los controles que usan junto con el estilo ES_PASSWORD .
EM_GETRECT Devuelve las coordenadas del rectángulo de formato en un control de edición.
EM_GETSEL Devuelve las posiciones de carácter inicial y final de la selección actual en el control de edición.
EM_GETTHUMB Devuelve la posición del cuadro de desplazamiento en la barra de desplazamiento vertical de un control de edición de varias líneas.
EM_GETWORDBREAKPROC Devuelve la dirección de la función Wordwrap actual en un control de edición.
EM_LINEFROMCHAR Devuelve el número de base cero de la línea en un control de edición de varias líneas que contiene un índice de caracteres especificado. Este mensaje es el inverso del mensaje EM_LINEINDEX . No se procesa mediante controles de edición de una sola línea.
EM_LINEINDEX Devuelve el carácter de una línea en un control de edición de varias líneas. Este mensaje es el inverso del mensaje EM_LINEFROMCHAR . No se procesa mediante controles de edición de una sola línea.
EM_LINELENGTH Devuelve la longitud, en caracteres, de un control de edición de una sola línea. En un control de edición de varias líneas, devuelve la longitud, en caracteres, de una línea especificada.
EM_LINESCROLL Desplaza el texto verticalmente en un control de edición de una sola línea o horizontalmente en un control de edición de varias líneas (cuando el control tiene el estilo ES_LEFT ). El parámetro lParam especifica el número de líneas que se desplazarán verticalmente, empezando por la línea actual. El parámetro wParam especifica el número de caracteres que se van a desplazar horizontalmente, empezando por el carácter actual.
EM_POSFROMCHAR Devuelve las coordenadas de cliente del carácter especificado.
EM_REPLACESEL Reemplaza la selección actual por el texto de un búfer proporcionado por la aplicación, envía la ventana primaria EN_UPDATE y EN_CHANGE códigos de notificación, y actualiza el búfer de deshacer.
EM_SCROLL Desplaza el texto verticalmente en un control de edición de varias líneas. Este mensaje equivale a enviar un mensaje de WM_VSCROLL al control de edición. No se procesa mediante controles de edición de una sola línea.
EM_SCROLLCARET Desplaza el símbolo de intercalación a la vista en un control de edición.
EM_SETFONT No compatible.
EM_SETHANDLE Establece un identificador en la memoria utilizada como búfer de texto, vacía el búfer de deshacer, restablece las posiciones de desplazamiento a cero y vuelve a dibujar la ventana.
EM_SETLIMITTEXT Establece el número máximo de caracteres que el usuario puede escribir en el control de edición. Para los controles de edición de una sola línea, este valor es 0x7FFFFFFE o el valor del parámetro wParam , lo que sea menor. Para los controles de edición de varias líneas, este valor es 1 o el valor del parámetro wParam , lo que sea menor.
EM_SETMARGINS Establece los anchos de los márgenes izquierdo y derecho y vuelve a dibujar el control de edición para reflejar los nuevos márgenes.
EM_SETMODIFY Establece o borra la marca de modificación para indicar si se ha modificado el control de edición.
EM_SETPASSWORDCHAR Define el carácter que los controles de edición usan junto con el estilo de ES_PASSWORD .
EM_SETREADONLY Establece o quita el estilo de solo lectura (ES_READONLY) en un control de edición.
EM_SETRECT Establece el rectángulo de formato para el control de edición de varias líneas y vuelve a dibujar la ventana. No se procesa mediante controles de edición de una sola línea.
EM_SETRECTNP Establece el rectángulo de formato para el control de edición de varias líneas, pero no vuelve a dibujar la ventana. No se procesa mediante controles de edición de una sola línea.
EM_SETSEL Selecciona un intervalo de caracteres en el control de edición estableciendo las posiciones inicial y final que se van a seleccionar.
EM_SETTABSTOPS Establece las posiciones de tabulación en el control de edición de varias líneas. No se procesa mediante controles de edición de una sola línea.
EM_SETWORDBREAKPROC Reemplaza la función Wordwrap predeterminada por una función wordwrap definida por la aplicación.
EM_UNDO Quita cualquier texto que se haya insertado o insertado los caracteres eliminados y establece la selección en el texto insertado. Si es necesario, envía los códigos de notificación EN_UPDATE y EN_CHANGE a la ventana primaria.
WM_CHAR Escribe un carácter en el control de edición de una sola línea y envía los códigos de notificación de EN_UPDATE y EN_CHANGE a la ventana primaria. Escribe un carácter en el control de edición de varias líneas. Controla las teclas de aceleración de las funciones estándar, como CTRL+C para copiar y CTRL+V para pegar. En los controles de edición de varias líneas, también procesa pulsaciones de teclas TAB y CTRL+TAB para desplazarse entre los controles de un cuadro de diálogo y para insertar pestañas en controles de edición multilínea. Usa la función MessageBeep para caracteres no válidos.
WM_CLEAR Borra la selección actual, si existe, en un control de edición. Si no hay ninguna selección actual, elimina el carácter a la derecha del símbolo de intercalación. Si el usuario presiona la tecla MAYÚS, esto corta la selección en el Portapapeles o elimina el carácter a la izquierda del símbolo de intercalación cuando no hay ninguna selección. Si el usuario presiona la tecla CTRL, se elimina la selección o se elimina al final de la línea cuando no hay ninguna selección.
WM_COPY Copia texto en el Portapapeles a menos que el estilo sea ES_PASSWORD, en cuyo caso el mensaje devuelve cero.
WM_CREATE Crea el control de edición y notifica a la ventana primaria con TRUE si se ha realizado correctamente o 1 si se produce un error.
WM_CUT Corta la selección en el Portapapeles o elimina el carácter a la izquierda del cursor si no hay ninguna selección.
WM_ENABLE Hace que el rectángulo se vuelva a dibujar en gris para los controles de edición de una sola línea. Devuelve el estado habilitado para los controles de edición de una sola línea y de varias líneas.
WM_ERASEBKGND Rellena la ventana de control de edición de varias líneas con el color actual del control de edición.
WM_GETDLGCODE Devuelve los valores siguientes: DLGC_WANTCHARS, DLGC_HASSETSEL y DLGC_WANTARROWS. En los controles de edición multilínea, también devuelve DLGC_WANTALLKEYS. Si el usuario presiona ALT+BACKSPACE, también devuelve DLGC_WANTMESSAGE.
WM_GETFONT Devuelve el identificador de la fuente que usa el control o NULL si el control usa la fuente del sistema.
WM_GETTEXT Copia el número especificado de caracteres en un búfer y devuelve el número de caracteres copiados.
WM_GETTEXTLENGTH Devuelve la longitud, en caracteres, del texto de un control de edición. La longitud no incluye el carácter de terminación null.
WM_HSCROLL Desplaza el texto en un control de edición de varias líneas horizontalmente y controla el movimiento del cuadro de desplazamiento.
WM_KEYDOWN Realiza el procesamiento estándar de los códigos de clave virtual.
WM_KILLFOCUS Quita el foco del teclado de una ventana de control de edición, destruye el símbolo de intercalación, oculta la selección actual y notifica a la ventana primaria que el control de edición ha perdido el foco.
WM_LBUTTONDBLCLK Borra la selección actual y selecciona la palabra debajo del cursor. Si la tecla MAYÚS está presionada, extiende la selección a la palabra debajo del cursor.
WM_LBUTTONDOWN Cambia el punto de inserción actual. Si la tecla MAYÚS está presionada, extiende la selección a la posición del cursor. En los controles de edición multilínea, también establece el temporizador para desplazarse automáticamente cuando el usuario mantiene presionado el botón del mouse fuera de la ventana de control de edición de varias líneas.
WM_LBUTTONUP Libera la captura del mouse y establece el punto de inserción de texto en el control de edición de una sola línea. En un control de edición de varias líneas, finaliza también el temporizador establecido en el mensaje WM_LBUTTONDOWN .
WM_MOUSEMOVE Cambia la selección actual en el control de edición de una sola línea, si el botón del mouse está inactivo. En un control de edición de varias líneas, también establece el temporizador para desplazarse automáticamente si el usuario mantiene presionado el botón del mouse fuera de la ventana de control de edición de varias líneas.
WM_NCCREATE Puntero a la estructura CREATESTRUCT de la ventana. Este mensaje se envía al mensaje WM_CREATE cuando se crea una ventana por primera vez.
WM_NCDESTROY Libera toda la memoria asociada a la ventana de control de edición, incluido el búfer de texto, el búfer deshacer, el búfer de tabulación y el pincel de resaltado.
WM_PAINT Borra el fondo, rellena la ventana con el color actual de la ventana de control de edición, dibuja el borde (si existe), establece la fuente y dibuja cualquier texto y muestra el símbolo de inserción de texto.
WM_PASTE Pega el texto del Portapapeles en la ventana de control de edición en la posición del símbolo de intercalación.
WM_SETFOCUS Establece el foco del teclado de una ventana de control de edición (muestra la selección actual, si estaba oculta y crea el símbolo de intercalación).
WM_SETFONT Establece la fuente y, opcionalmente, vuelve a dibujar el control de edición.
WM_SETTEXT Copia texto en el control de edición de una sola línea, notifica a la ventana primaria cuando no hay memoria suficiente, vacía el búfer de deshacer y envía el EN_UPDATE y EN_CHANGE códigos de notificación a la ventana primaria. En los controles de edición multilínea, también vuelve a insertar las líneas (si es necesario) y establece las posiciones de desplazamiento.
WM_SIZE Establece el tamaño de la ventana de control de edición, asegurándose de que el tamaño admite el alto y el ancho de un carácter.
WM_SYSCHAR Devuelve TRUE si el usuario presiona ALT+BACKSPACE; de lo contrario, no realiza ninguna acción.
WM_SYSKEYDOWN Deshace la última acción si el usuario presiona ALT+BACKSPACE; de lo contrario, no realiza ninguna acción.
WM_TIMER Desplaza el texto en la ventana de control de edición si el usuario mantiene presionado el botón del mouse fuera de la ventana de control de edición de varias líneas.
WM_UNDO Quita cualquier texto que se acaba de insertar o inserta los caracteres eliminados y establece la selección en el texto insertado. Si es necesario, envía los códigos de notificación EN_UPDATE y EN_CHANGE a la ventana primaria.
WM_VSCROLL Desplaza un control de edición de varias líneas verticalmente y controla el movimiento del cuadro de desplazamiento. Los controles de edición de una sola línea no los procesan.

El procedimiento predefinido de ventana de control de edición pasa todos los demás mensajes a la función DefWindowProc para el procesamiento predeterminado.