Compartir a través de


Función SetConsoleMode

Establece el modo de entrada del búfer de entrada de una consola o el modo de salida de un búfer de pantalla de la consola.

Sintaxis

BOOL WINAPI SetConsoleMode(
  _In_ HANDLE hConsoleHandle,
  _In_ DWORD  dwMode
);

Parámetros

hConsoleHandle [in]
Identificador para el búfer de entrada de la consola o un búfer de pantalla de la consola. El identificador debe tener derecho de acceso de GENERIC_READ. Para obtener más información, consulte Seguridad y derechos de acceso del búfer de la consola.

dwMode [in]
Modo de entrada o de salida que se va a establecer.

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.

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es distinto de cero.

Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

Comentarios

Una consola de está formada por un búfer de entrada y uno o más búferes de pantalla. El modo de un búfer de consola determina cómo se comporta esta durante las operaciones de entrada o salida (E/S). Un conjunto de constantes de marca se usa con los identificadores de entrada, y el otro conjunto se usa con los identificadores del búfer de pantalla (salida). Tenga en cuenta que la configuración de los modos de salida de un búfer de pantalla no afecta a los modos de salida de otros búferes de pantalla.

Los modos ENABLE_LINE_INPUT y ENABLE_ECHO_INPUT solo afectan a los procesos que usan ReadFile o ReadConsole para leer contenido desde el búfer de entrada de la consola. De forma similar, el modo ENABLE_PROCESSED_INPUT afecta principalmente a los usuarios de ReadFile y ReadConsole; sin embargo, también determina si la entrada de Ctrl + C se indica en el búfer de entrada (para que pueda leerla la función ReadConsoleInput) o si se pasa a una función que haya definido la aplicación.

Los modos ENABLE_WINDOW_INPUT y ENABLE_MOUSE_INPUT determinan si las interacciones del usuario que implican el cambio de tamaño de las ventanas y las acciones del mouse se registran en el búfer de entrada o se descartan. Estos eventos puede leerlos ReadConsoleInput, pero siempre se filtran mediante ReadFile y ReadConsole.

Los modos ENABLE_PROCESSED_OUTPUT y ENABLE_WRAP_AT_EOL_OUTPUT solo afectan a los procesos que usan ReadFile o ReadConsole y WriteFile o WriteConsole.

Para determinar el modo actual de un búfer de entrada o un búfer de pantalla de la consola, utilice la función GetConsoleMode.

Ejemplos

Para un ejemplo, vea Lectura de eventos de búfer de entrada.

Requisitos

   
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Encabezado ConsoleApi.h (a través de WinCon.h, incluido Windows.h)
Biblioteca Kernel32.lib
Archivo DLL Kernel32.dll

Consulte también

Funciones de la consola

Modos de consola

GetConsoleMode

HandlerRoutine

ReadConsole

PeekConsoleInput

ReadFile

WriteConsole

WriteFile