Share via


Modos de consola de alto nivel

Los modos de entrada y salida de la consola afectan al comportamiento de las funciones de la consola de alto nivel. Todos los siguientes modos de entrada de la consola están habilitados para el búfer de entrada de la consola cuando se crea una consola:

  • Modo de entrada de línea
  • Modo de entrada procesado
  • Modo de entrada de eco

Los dos modos de salida de consola siguientes están habilitados para un búfer de pantalla de consola cuando se crea:

  • Modo de salida procesado
  • Modo de salida de ajuste en EOL

Los tres modos de entrada, junto con el modo de salida procesado, están diseñados para trabajar de forma conjunta. Es preferible habilitar o deshabilitar todos estos modos en grupo. Cuando todos están habilitados, se dice que la aplicación está en modo "cocinado", lo que significa que se controla la mayor parte del procesamiento para la aplicación. Cuando todos están deshabilitados, la aplicación está en modo "sin procesar", lo que significa que la entrada no se filtra y la aplicación realiza todo el procesamiento.

Una aplicación puede utilizar la función GetConsoleMode para determinar el modo actual de un búfer de entrada o pantalla de consola. Puede habilitar o deshabilitar cualquiera de estos modos utilizando los siguientes valores en la función SetConsoleMode. Tenga en cuenta que la configuración del modo de salida de un búfer de pantalla no afecta al modo de salida de otros búferes de pantalla.

Si el parámetro hConsoleHandle es un identificador de entrada, el modo puede ser uno o varios de los valores siguientes. Cuando se crea una consola, todos los modos de entrada, excepto ENABLE_WINDOW_INPUT y ENABLE_VIRTUAL_TERMINAL_INPUT, están habilitados de manera predeterminada.

Valor Significado
ENABLE_ECHO_INPUT 0x0004 Los caracteres que lee la función ReadFile o ReadConsole se escriben en el búfer de pantalla activo a medida que se escriben en la consola. Este modo solo se puede usar si el modo ENABLE_LINE_INPUT también está habilitado.
ENABLE_INSERT_MODE 0x0020 Cuando está habilitado, el texto especificado en una ventana de la consola se insertará en la ubicación actual del cursor y no se sobrescribirá el texto que siga a esa ubicación. En cambio, cuando este modo está deshabilitado, se sobrescribirá todo el texto siguiente.
ENABLE_LINE_INPUT 0x0002 La función ReadFile o ReadConsole solo se devuelve cuando se lee un carácter de retorno de carro. Si este modo está deshabilitado, las funciones se devuelven cuando uno o varios caracteres están disponibles.
ENABLE_MOUSE_INPUT 0x0010 Si el puntero del mouse está dentro de los bordes de la ventana de la consola y la ventana tiene el foco de teclado, los eventos del mouse que se generen debido a su movimiento y las pulsaciones de botones se sitúan en el búfer de entrada. Estos eventos se descartan mediante ReadFile o ReadConsole, incluso cuando este modo está habilitado. La función ReadConsoleInput se puede usar para leer registros de entrada de MOUSE_EVENT del búfer de entrada.
ENABLE_PROCESSED_INPUT 0x0001 El sistema procesa CTRL + C y no se sitúa en el búfer de entrada. Si el búfer de entrada se lee mediante ReadFile o ReadConsole, el sistema procesa otras claves de control y no se devuelven en el búfer de ReadFile o ReadConsole. Si el modo ENABLE_LINE_INPUT también está habilitado, el sistema controla los caracteres de retroceso, de retorno de carro y de avance de línea.
ENABLE_QUICK_EDIT_MODE 0x0040 Esta marca permite al usuario usar el mouse para seleccionar y editar texto. Para habilitar este modo, use ENABLE_QUICK_EDIT_MODE | ENABLE_EXTENDED_FLAGS. Para deshabilitar este modo, use ENABLE_EXTENDED_FLAGS sin esta marca.
ENABLE_WINDOW_INPUT 0x0008 Las interacciones de usuario que cambian el tamaño del búfer de pantalla de la consola se muestran en el búfer de entrada de la consola. La información sobre estos eventos se puede leer desde el búfer de entrada mediante aplicaciones que usan la función ReadConsoleInput, pero no con aquellas que usen ReadFile o ReadConsole.
ENABLE_VIRTUAL_TERMINAL_INPUT 0x0200 Al establecer esta marca, se indica al motor de procesamiento del terminal virtual que convierta las entradas de usuario que haya recibido la ventana de la consola en Secuencias del terminal virtual de la consola, ya que se pueden recuperar mediante una aplicación de soporte a través de las funciones ReadFile o ReadConsole.

Esta marca debe usarse normalmente con ENABLE_VIRTUAL_TERMINAL_PROCESSING en el identificador de salida, para que así pueda conectarse a una aplicación que se comunica exclusivamente a través de secuencias de terminales virtuales.

Si el parámetro hConsoleHandle es un identificador del búfer de pantalla, el modo puede ser uno o varios de los valores siguientes. Cuando se crea un búfer de pantalla, ambos modos de salida están habilitados de forma predeterminada.

Valor Significado
ENABLE_PROCESSED_OUTPUT 0x0001 Los caracteres que hayan escrito las funciones WriteFile o WriteConsole o que hayan reproducido las funciones ReadFile o ReadConsole, se analizan en las secuencias de control de ASCII y se realiza la acción correcta. A continuación, se procesan los caracteres de retroceso, tabulación, timbre, retorno de carro y avance de línea. Se debe habilitar al usar secuencias de control o al establecer ENABLE_VIRTUAL_TERMINAL_PROCESSING.
ENABLE_WRAP_AT_EOL_OUTPUT 0x0002 Al escribir contenido con las funciones WriteFile o WriteConsole o al reproducirlo con ReadFile o ReadConsole, el cursor se desplaza al principio de la fila siguiente cuando alcanza el final de la fila actual. Esto hace que las filas que se muestran en la ventana de la consola se desplacen hacia arriba automáticamente cuando el cursor avanza más allá de la última fila de la ventana. Asimismo, el contenido del búfer de pantalla de la consola también se desplaza hacia arriba (../se descarta la fila superior del búfer de pantalla de la consola) cuando el cursor avanza más allá de la última fila del búfer de pantalla de la consola. Si este modo se deshabilita, el último carácter de la fila se sobrescribe con los caracteres posteriores.
ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004 Al escribir contenido con WriteFile o WriteConsole, se analizan los caracteres para VT100 y para secuencias de caracteres de control administran el movimiento del cursor, el modo de color o fuente y otras operaciones que también se pueden realizar a través de las API de consola existentes. Para obtener más información, consulte Secuencias del terminal virtual de la consola.
Asegúrese de establecer ENABLE_PROCESSED_OUTPUT al usar esta marca.
DISABLE_NEWLINE_AUTO_RETURN 0x0008 Al escribir contenido con WriteFile o WriteConsole, se agrega un estado adicional al encapsulado del final de la línea que puede retrasar las operaciones de movimiento y desplazamiento del cursor.

Normalmente, cuando se establece ENABLE_WRAP_AT_EOL_OUTPUT y el texto alcanza el final de la línea, el cursor se mueve inmediatamente a la línea siguiente y el contenido del búfer se desplaza una línea hacia arriba. A diferencia de este conjunto de marcas, el cursor no se mueve a la línea siguiente y no se realiza la operación de desplazamiento. El carácter escrito se imprimirá en la posición final de la línea y el cursor permanecerá por encima de este carácter como si ENABLE_WRAP_AT_EOL_OUTPUT estuviera desactivado; aún así, el siguiente carácter imprimible se imprimirá como si ENABLE_WRAP_AT_EOL_OUTPUT estuviera activado. No se producirá ninguna sobrescritura. En concreto, el cursor avanza rápidamente hasta la línea siguiente, se realiza un desplazamiento si es necesario, se imprime el carácter y el cursor se desplaza una posición más.

Normalmente, esta marca está pensada para usarse junto con la configuración ENABLE_VIRTUAL_TERMINAL_PROCESSING y así poder administrar mejor el emulador de terminal en el que el comportamiento deseado es poder escribir el carácter final en la pantalla (../en la esquina inferior derecha) sin tener que desencadenar un desplazamiento inmediato.
ENABLE_LVB_GRID_WORLDWIDE 0x0010 Las API para escribir atributos de caracteres, como WriteConsoleOutput y WriteConsoleOutputAttribute permiten el uso de marcas de los atributos de caracteres para ajustar el color del primer plano y del fondo del texto. Asimismo, se ha especificado un intervalo de marcas DBCS con el prefijo COMMON_LVB. Antes estas marcas solo funcionaban en páginas de código DBCS del chino, japonés y coreano.

A excepción de las marcas de byte inicial y final, el resto de marcas que describen el trazo de línea y el vídeo inverso (../intercambiar los colores de primer plano y de fondo de) pueden ser útiles para que otros idiomas puedan enfatizar partes de la salida.

Al establecer esta marca de modo de consola, podrá usar estos atributos en todas las páginas de código de todos los lenguajes.

Tenga en cuenta que la marca está desactivada de forma predeterminada para mantener la compatibilidad con aquellas aplicaciones conocidas que se hayan aprovechado anteriormente del hecho de que la consola ignora estas marcas en máquinas que no son CJK para almacenar bits en estos campos para sus propios fines o por accidente.

Tenga en cuenta que el uso del modo ENABLE_VIRTUAL_TERMINAL_PROCESSING puede dar lugar a que se establezcan marcas de la cuadrícula de LVB y de vídeo inverso, mientras que la aplicación conectada solicita el subrayado o el vídeo inverso a través de las Secuencias de terminales virtuales de la consola.