Color del texto

Iniciado por cNoob, 30 Junio 2016, 21:31 PM

0 Miembros y 1 Visitante están viendo este tema.

cNoob

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 (cpp) [Seleccionar]
#include <iostream>
#include <windows.h>
using namespace std;

int main()
{
    HANDLE h=GetStdHandle( STD_OUTPUT_HANDLE);

    SetConsoleTextAttribute(h,FOREGROUND_BLUE |FOREGROUND INTENSITY);
    cout<<"Blue"<<endl;
    SetConsoleTextAttribute(h,FOREGROUND_RED |FOREGROUND INTENSITY);
    cout<<"Red"<<endl;
    SetConsoleTextAttribute(h,FOREGROUND_GREEN |FOREGROUND INTENSITY);
    cout<<"Green"<<endl;

    cin.get();
    return 0;
}
Wannabe programador autodidacta de c++
"Usain Bolt comenzó gateando."

avesudra

Hola, te faltan los guiones bajos en FOREGROUND_INTENSITY. Tu código corregido es este:

Código (cpp) [Seleccionar]
#include <iostream>
#include <windows.h>
using namespace std;

int main()
{
    HANDLE h=GetStdHandle( STD_OUTPUT_HANDLE);

    SetConsoleTextAttribute(h,FOREGROUND_BLUE |FOREGROUND_INTENSITY);
    cout<<"Blue"<<endl;
    SetConsoleTextAttribute(h,FOREGROUND_RED |FOREGROUND_INTENSITY);
    cout<<"Red"<<endl;
    SetConsoleTextAttribute(h,FOREGROUND_GREEN |FOREGROUND_INTENSITY);
    cout<<"Green"<<endl;

    cin.get();
    return 0;
}


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.
Regístrate en

AlbertoBSD

#2
Sobre por que no compilaba tu codigo ya te respondieron. Respecto a tu duda

Citarno 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
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

cNoob

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!
Wannabe programador autodidacta de c++
"Usain Bolt comenzó gateando."