La Web del Programador: Comunidad de Programadores
 
    Pregunta:  30492 - ATRIBUTOS EN MODO TEXTO PARA COUT
Autor:  John Jairo Gamba Rincon
he tratado de muchas maneras hacer que el texto que saco con cout me salga con color o fondo y no he prodido, las ordenes textcolor, textbackground y textattr solo me funcionan con cprintf o similares.

si hay que hacer algun procedimiento especial o utilizar alguna orden especial porfavor colaborenme, se que no es muy complicado

  Respuesta:  David Cañadas
En particular no puedo responder dado que no conozco el método para hacer esto con cout. De todas formas, presupongo que estás trabajando sobre consola de DOS, en este caso debes saber que puedes controlar esto de otra forma.

Yo particularmente me programé en su momento una rutina de impresión a medida, algo como printf pero bastante más avanzado, capaz de reconocer saltos de línea, cambios de color, esperas a pulsación de una tecla, dibujo de ventanas, etc., todo controlable desde un string.

El caso es que si deseas controlar el color del modo texto, y hablamos de un PC, puedes usar el segmento 0xB800, donde se almacena la pantalla de texto.

Dicha pantalla ocupa 2000 bytes, de los cuales 1000 corresponden al texto y 1000 a los atributos. Van en grupos de dos (offset = 0 para carácter, offset = 1 para atributo, offset = 2 para carácter, offset = 3 para atributo, etc).

El atributo se divide en dos partes:

El byte 7 indica que ese carácter debe parpadear. Los bytes 6, 5 y 4 indican el color de fondo del carácter. Nótese que sólo pueden ser colores de brillo medio (del 0 al 7). El byte 3 indica si el color de primer plano del carácter será de brillo máximo o de brillo medio. Y los bytes 2, 1 y 0 indican el color de primer plano.

Quizás puedas aprovechar algo de esto.

Salu2.