Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: cNoob en 30 Junio 2016, 21:31 pm



Título: Color del texto
Publicado por: cNoob en 30 Junio 2016, 21:31 pm
Hola!
He probado a cambiar el color del texto de mi programa, pero al ejecutarlo me da error "error: FOREGROUND was not declared on this scope" no entiendo por que el compilador entiende que foreground es una variable. Alguien puede ayudarme y decirme de paso si hay algún método más simple para cambiar el texto de color?
Gracias!

Código
  1. #include <iostream>
  2. #include <windows.h>
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.    HANDLE h=GetStdHandle( STD_OUTPUT_HANDLE);
  8.  
  9.    SetConsoleTextAttribute(h,FOREGROUND_BLUE |FOREGROUND INTENSITY);
  10.    cout<<"Blue"<<endl;
  11.    SetConsoleTextAttribute(h,FOREGROUND_RED |FOREGROUND INTENSITY);
  12.    cout<<"Red"<<endl;
  13.    SetConsoleTextAttribute(h,FOREGROUND_GREEN |FOREGROUND INTENSITY);
  14.    cout<<"Green"<<endl;
  15.  
  16.    cin.get();
  17.    return 0;
  18. }
  19.  


Título: Re: Color del texto
Publicado por: avesudra en 1 Julio 2016, 02:31 am
Hola, te faltan los guiones bajos en FOREGROUND_INTENSITY. Tu código corregido es este:

Código
  1. #include <iostream>
  2. #include <windows.h>
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.    HANDLE h=GetStdHandle( STD_OUTPUT_HANDLE);
  8.  
  9.    SetConsoleTextAttribute(h,FOREGROUND_BLUE |FOREGROUND_INTENSITY);
  10.    cout<<"Blue"<<endl;
  11.    SetConsoleTextAttribute(h,FOREGROUND_RED |FOREGROUND_INTENSITY);
  12.    cout<<"Red"<<endl;
  13.    SetConsoleTextAttribute(h,FOREGROUND_GREEN |FOREGROUND_INTENSITY);
  14.    cout<<"Green"<<endl;
  15.  
  16.    cin.get();
  17.    return 0;
  18. }

PD: No sé si hay un método más simple, pero no creo que haya algo más simple que lo que la WinAPI te ofrece.

Un saludo.


Título: Re: Color del texto
Publicado por: AlbertoBSD en 1 Julio 2016, 06:20 am
Sobre por que no compilaba tu codigo ya te respondieron. Respecto a tu duda

Citar
no entiendo por que el compilador entiende que foreground es una variable

Eso se debe al analizador lexico que procesa tu código dado que se encuentra como parametro dentro de una funcion el compilador espera que lo que le pases sea uno de tres valores, una numero (Su valor), una constante previamente declarada o en su defecto una variable. Por eso como foreground no es constante lo interpreta como.si fuera una variable no declarada.

Pero ya te dijeron que le faltaba el Guion bajo.

Estando we windows y usando librerias estandar no, no hay nada mas simple...

como anectoda cuando aprendi a programar en C usabamos el turbo C y teníamos la biblioteca de funciones conio la cual usaba pero al ver que no era estandar me puse a reescribir casi toda la libreria en Ensamblador para segun yo usar esas funciones en otro lado  :xD :xD

lo comento por que esa biblioteca de funciones (conio.h) se encontraban las funciones para cambiar de color el texto. Sin embargo NO la recomiendo por no ser estandar y tampoco recomiendo el ASM ( A no ser que quieras aprender ASM)

Saludos


Título: Re: Color del texto
Publicado por: cNoob en 1 Julio 2016, 12:55 pm
Gracias a ambos por la ayuda, y si que es cierto que cuando uno es noob como yo se hacen muchas matadas por no saber estructurar o ir directamente al grano en el codigo  :xD Pero bueno, eso imagino que son cosas que se acaban aprendiendo.
Un saludo!