2012-02-08 11 views
12

Wiem "textcolor();" jest dla C++ i widziałem metody dla unix ... , ale czy jest też sposób na windows?Tekst koloru C w aplikacjach terminalowych w oknach

#include <stdio.h> 
int main() 
{ 
    printf("\ntest - C programming text color!"); 
    printf("\n--------------------------------"); 
    printf("\n\n\t\t-BREAK-\n\n"); 
    textcolor(15); 
    printf("WHITE\n"); 
    textcolor(0); 
    printf("BLACK\n"); 
    textcolor(4); 
    printf("RED\n"); 
    textcolor(1); 
    printf("BLUE\n"); 
    textcolor(2); 
    printf("GREEN\n"); 
    textcolor(5); 
    printf("MAGENTA\n"); 
    textcolor(14); 
    printf("YELLOW\n"); 
    textcolor(3); 
    printf("CYAN\n"); 
    textcolor(7); 
    printf("LIGHT GRAY\n"); 
} 

nie mogę znaleźć żadnych coś w sieci ... Miejmy nadzieję, dobrych ludzi z przepełnienia stosu może pomóc: D

C proszę, nie C++

Odpowiedz

28

Ponieważ chcesz C i Windows tak specyficzny lution, polecam użycie funkcji SetConsoleTextAttribute() w Win32 API. Musisz pobrać uchwyt do konsoli, a następnie przekazać go z odpowiednimi atrybutami.

Jako prosty przykład:

/* Change console text color, then restore it back to normal. */ 
#include <stdio.h> 
#include <windows.h> 

int main() { 
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); 
    CONSOLE_SCREEN_BUFFER_INFO consoleInfo; 
    WORD saved_attributes; 

    /* Save current attributes */ 
    GetConsoleScreenBufferInfo(hConsole, &consoleInfo); 
    saved_attributes = consoleInfo.wAttributes; 

    SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE); 
    printf("This is some nice COLORFUL text, isn't it?"); 

    /* Restore original attributes */ 
    SetConsoleTextAttribute(hConsole, saved_attributes); 
    printf("Back to normal"); 

    return 0; 
} 

Aby uzyskać więcej informacji na temat dostępnych atrybutów, patrzeć here.

Mam nadzieję, że to pomoże! :)

+0

Wielkie dzięki, działa świetnie, po prostu zastanawiasz się, jak przywrócić domyślny jasnoszary kolor? Wielkie dzięki! –

+0

@JoeDF Aby to zrobić, musisz wczytać oryginalne atrybuty za pomocą 'GetConsoleScreenBufferInfo()', zapisać je w zmiennej, a następnie przywrócić je po zakończeniu. Zaktualizowałem odpowiedź, aby pokazać, jak to zrobić. :) – Miguel

+0

DZIĘKI DUŻO! : D –

-3

Drugi z funkcjami "include windows.h". Drugi prawdopodobnie jest początkiem

+0

Myślę, że to odpowiedź na odpowiedź Miguela? Powinieneś użyć komentarzy do tego. Zamiast tego dodano nową odpowiedź. –

Powiązane problemy