Color de fondo y coordenadas de escritura

21/07/2004 - 18:41 por Amelia | Informe spam
Si uso el compilador Turbo C++ o borland c++ puedo
cambiar el color de fondo y establecer las coordenadas de
escritura de la siguiente forma:

textbackground(BLUE);
gotoxy(25,2);
cout << "Hola ";

pero esto no funciona con Visual C++ de Microsoft.

¿Alguien podría decirme como hacer lo mismo en Visual C++?

Estaré muy agradecida.
Un saludo
Amelia

Preguntas similare

Leer las respuestas

#1 Hernán
21/07/2004 - 19:04 | Informe spam
"Amelia" escribía:

Si uso el compilador Turbo C++ o borland c++ puedo
cambiar el color de fondo y establecer las coordenadas de
escritura de la siguiente forma:

textbackground(BLUE);


SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),\
BACKGROUND_BLUE);

gotoxy(25,2);


SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), \
(COORD){25, 2});

cout << "Hola ";

pero esto no funciona con Visual C++ de Microsoft.

¿Alguien podría decirme como hacer lo mismo en Visual C++?




Claro que si es un programa para la GUI, vas a necesitar crear una
consola (con AllocConsole()).

Hernán (28)
Quilmes (ar)
"...lacintaestácansadadeescucharsiemprelasmismaspelotudaspavadas."
Respuesta Responder a este mensaje
#2 Amelia
23/07/2004 - 16:31 | Informe spam
Muchas gracias,

he provado este código:

///////////////////////////////////////////////
#include <stdio.h>
#include <windows.h>

void main()
{
COORD coordenada;

coordenada.X=5;
coordenada.Y=5;

SetConsoleTextAttribute (GetStdHandle
(STD_OUTPUT_HANDLE),BACKGROUND_BLUE);
SetConsoleCursorPosition (GetStdHandle
(STD_OUTPUT_HANDLE), coordenada);

printf("Hola");

coordenada.X=5;
coordenada.Y=7;
SetConsoleCursorPosition (GetStdHandle
(STD_OUTPUT_HANDLE), coordenada);
}
///////////////////////////////////////////////////

y funciona bien, pero SetConsoleTextAttribute no cambia
el color de fondo de toda la pantalla sino sólo el color
de fondo del trozo de texto.

¿Sabes como cambiar el color de fondo de toda la pantalla?

Muchas gracias de nuevo
Amelia



"Amelia" escribía:

Si uso el compilador Turbo C++ o borland c++ puedo
cambiar el color de fondo y establecer las coordenadas




de
escritura de la siguiente forma:

textbackground(BLUE);


SetConsoleTextAttribute (GetStdHandle


(STD_OUTPUT_HANDLE),\
BACKGROUND_BLUE);

gotoxy(25,2);


SetConsoleCursorPosition (GetStdHandle


(STD_OUTPUT_HANDLE), \
(COORD){25, 2});

cout << "Hola ";

pero esto no funciona con Visual C++ de Microsoft.

¿Alguien podría decirme como hacer lo mismo en Visual




C++?




Claro que si es un programa para la GUI, vas a necesitar


crear una
consola (con AllocConsole()).

Hernán (28)
Quilmes (ar)
"...lacintaestácansadadeescucharsiemprelasmismaspelotudas


pavadas."
.

Respuesta Responder a este mensaje
#3 Hernán
23/07/2004 - 18:05 | Informe spam
"Amelia" escribía:

[...]

y funciona bien, pero SetConsoleTextAttribute no cambia
el color de fondo de toda la pantalla sino sólo el color
de fondo del trozo de texto.

¿Sabes como cambiar el color de fondo de toda la pantalla?




DWORD total;
COORD coord;
CONSOLE_SCREEN_BUFFER_INFO csbi;

/* dimensiones del búfer */
GetConsoleScreenBufferInfo(GetStdHandle (STD_OUTPUT_HANDLE), &csbi);

/*
* pone en azul los atributos de color de fondo de las X * Y celdas del
* búfer de video a partir de la celda {0,0}
*/
FillConsoleOutputAttribute (GetStdHandle (STD_OUTPUT_HANDLE),\
BACKGROUND_BLUE, csbi.dwSize.X * csbi.dwSize.Y, (COORD){0}, &total);

/* texto en blanco sobre azul */
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),\
FOREGROUND_BLUE|FOREGROUND_GREEN|FOREGROUND_RED|BACKGROUND_BLUE);

/* desde */
coord.X = 25;
coord.Y = 2;
SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), coord);
puts("HOLA");


Hernán (28)
Quilmes (ar)
Respuesta Responder a este mensaje
#4 Amelia
23/07/2004 - 20:16 | Informe spam
Muchas gracias,

Lo he provado y funciona perfectamente.

Espero poder ayudarte alguna vez.

Un saludo
Amelia González

"Amelia" escribía:

[...]

y funciona bien, pero SetConsoleTextAttribute no cambia
el color de fondo de toda la pantalla sino sólo el




color
de fondo del trozo de texto.

¿Sabes como cambiar el color de fondo de toda la




pantalla?




DWORD total;
COORD coord;
CONSOLE_SCREEN_BUFFER_INFO csbi;

/* dimensiones del búfer */
GetConsoleScreenBufferInfo(GetStdHandle


(STD_OUTPUT_HANDLE), &csbi);

/*
* pone en azul los atributos de color de fondo de


las X * Y celdas del
* búfer de video a partir de la celda {0,0}
*/
FillConsoleOutputAttribute (GetStdHandle


(STD_OUTPUT_HANDLE),\
BACKGROUND_BLUE, csbi.dwSize.X * csbi.dwSize.Y,


(COORD){0}, &total);

/* texto en blanco sobre azul */
SetConsoleTextAttribute (GetStdHandle


(STD_OUTPUT_HANDLE),\



FOREGROUND_BLUE|FOREGROUND_GREEN|FOREGROUND_RED|BA
CKGROUND_BLUE);

/* desde */
coord.X = 25;
coord.Y = 2;
SetConsoleCursorPosition (GetStdHandle


(STD_OUTPUT_HANDLE), coord);
puts("HOLA");


Hernán (28)
Quilmes (ar)
.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida