Funciones de salida de la consola de bajo nivel
Importante
En este documento se describe funcionalidad de la plataforma de consola que ya no forma parte de nuestro plan de desarrollo del ecosistema. No se recomienda usar este contenido en nuevos productos, pero seguiremos admitiendo los usos existentes para el futuro indefinido. Nuestra solución moderna preferida se centra en secuencias de terminal virtual para lograr la máxima compatibilidad en escenarios multiplataforma. Puede encontrar más información sobre esta decisión de diseño en nuestro documento de Comparación de consola clásica y terminal virtual.
Las funciones de salida de la consola de bajo nivel proporcionan acceso directo a las celdas de caracteres de un búfer de pantalla. Un conjunto de funciones lee o escribe en celdas consecutivas, empezando por cualquier ubicación del búfer de pantalla de la consola. Otro conjunto de funciones lee o escribe en bloques rectangulares de celdas.
Las siguientes funciones leen o escriben en un número especificado de celdas de caracteres consecutivas en un búfer de pantalla, empezando por la celda indicada.
Función | Descripción |
---|---|
ReadConsoleOutputCharacter | Copia una cadena de caracteres Unicode o ANSI desde un búfer de pantalla. |
WriteConsoleOutputCharacter | Escribe una cadena de caracteres Unicode o ANSI en un búfer de pantalla. |
ReadConsoleOutputAttribute | Copia una cadena de atributos de color de fondo y texto desde un búfer de pantalla. |
WriteConsoleOutputAttribute | Escribe una cadena de atributos de color de fondo y texto en un búfer de pantalla. |
FillConsoleOutputCharacter | Escribe un único carácter Unicode o ANSI en un número especificado de celdas consecutivas en un búfer de pantalla. |
FillConsoleOutputAttribute | Escribe una combinación de atributos de color de fondo y texto en un número especificado de celdas consecutivas en un búfer de pantalla. |
Con todas estas funciones, cuando se encuentra la última celda de una fila, la lectura o escritura se ajusta a la primera celda de la fila siguiente. Cuando se encuentra el final de la última fila del búfer de pantalla de consola, las funciones de escritura descartan todos los caracteres o atributos no escritos, y las funciones de lectura informan del número de caracteres o atributos escritos realmente.
Las siguientes funciones leen o escriben en bloques rectangulares de celdas de caracteres en una ubicación especificada de un búfer de pantalla.
Función | Descripción |
---|---|
ReadConsoleOutput | Copia los datos de caracteres y colores de un bloque especificado de celdas del búfer de pantalla en un bloque determinado del búfer de destino. |
WriteConsoleOutput | Escribe los datos de caracteres y colores de un bloque especificado de celdas del búfer de pantalla en un bloque determinado del búfer de destino. |
Estas funciones tratan los búferes de pantalla y los de origen y destino como matrices bidimensionales de estructuras CHAR_INFO (que contienen datos de atributos de colores y caracteres para cada celda). Las funciones especifican el ancho y el alto (en las celdas de caracteres) del búfer de origen o destino, y el puntero al búfer se trata como un puntero a la celda de origen (0,0) de la matriz bidimensional. Además, utilizan una estructura SMALL_RECT para especificar a qué rectángulo se debe acceder en el búfer de pantalla de consola. Las coordenadas de la celda superior izquierda del búfer de origen o destino determinan la ubicación del rectángulo correspondiente en ese búfer.
Estas funciones recortan automáticamente el rectángulo del búfer de pantalla especificado para ajustarse a los límites del búfer de pantalla de consola. Por ejemplo, si el rectángulo especifica las coordenadas de la celda inferior derecha (columna 100, fila 50) y el búfer de pantalla de consola solo tiene 80 columnas de ancho, las coordenadas se recortan a (columna 79, fila 50). Del mismo modo, este rectángulo ajustado se vuelve a recortar para ajustarse a los límites del búfer de origen o destino. Se especifican las coordenadas leídas o escritas del búfer de pantalla del rectángulo real. Para ver un ejemplo en el que se utilizan estas funciones, consulte Lectura y escritura de bloques de caracteres y atributos.
En la ilustración se muestra una operación ReadConsoleOutput donde se produce el recorte en primer lugar cuando el bloque se lee desde el búfer de pantalla de consola, y en segundo cuando el bloque se copia en el búfer de destino. La función informa del rectángulo real del búfer de pantalla en el que copió.