it-swarm.com.de

Wie kann man Textfarbe und Konsolenfarbe in code :: blocks ändern?

Ich schreibe ein Programm in C. Ich möchte die Textfarbe und die Hintergrundfarbe in der Konsole ändern. Mein Beispielprogramm ist - 

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <dos.h>
#include <dir.h>

int main(int argc,char *argv[])
{
 textcolor(25);
 printf("\n \n \t This is dummy program for text color ");
 getch();

 return 0;
}

Beim Kompilieren dieses Programmcodes :: blocks gibt es einen Fehler - Textfarbe nicht definiert. Warum ist das so? Ich arbeite in einem GNU GCC-Compiler und Windows Vista. Wenn es nicht funktionieren wird, was ist das Duplikat von Textfarbe? So möchte ich die Hintergrundfarbe der Konsole ändern. Der Compiler gibt mir den gleichen Fehler, nur der Name der Funktion ist anders. So ändern Sie die Farbe der Konsole und des Texts. Bitte helfen.

Ich bin in Ordnung, auch wenn die Antwort in C++ ist.

8
Ashish Ahuja

Funktionen wie textcolor funktionierten in alten Compilern wie turbo C und Dev C ..__ In heutigen Compilern würden diese Funktionen nicht funktionieren. Ich werde zwei Funktionen SetColor und ChangeConsoleToColors geben. Sie kopieren diesen Funktionscode in Ihr Programm und führen die folgenden Schritte aus. Der von mir angegebene Code funktioniert in einigen Compilern nicht.

Der Code von SetColor ist - 

 void SetColor(int ForgC)
 {
     Word wColor;

      HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
      CONSOLE_SCREEN_BUFFER_INFO csbi;

                       //We use csbi for the wAttributes Word.
     if(GetConsoleScreenBufferInfo(hStdOut, &csbi))
     {
                 //Mask out all but the background attribute, and add in the forgournd     color
          wColor = (csbi.wAttributes & 0xF0) + (ForgC & 0x0F);
          SetConsoleTextAttribute(hStdOut, wColor);
     }
     return;
 }

Um diese Funktion nutzen zu können, müssen Sie sie aus Ihrem Programm heraus aufrufen. Zum Beispiel nehme ich dein Beispielprogramm - 

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <dos.h>
#include <dir.h>

int main(void)
{
  SetColor(4);
  printf("\n \n \t This text is written in Red Color \n ");
  getch();
  return 0;
}

void SetColor(int ForgC)
 {
 Word wColor;

  HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
  CONSOLE_SCREEN_BUFFER_INFO csbi;

                       //We use csbi for the wAttributes Word.
 if(GetConsoleScreenBufferInfo(hStdOut, &csbi))
 {
                 //Mask out all but the background attribute, and add in the forgournd color
      wColor = (csbi.wAttributes & 0xF0) + (ForgC & 0x0F);
      SetConsoleTextAttribute(hStdOut, wColor);
 }
 return;
}

Wenn Sie das Programm ausführen, wird die Textfarbe in ROT angezeigt. Jetzt werde ich Ihnen den Code jeder Farbe geben - 

Name         | Value
             |
Black        |   0
Blue         |   1
Green        |   2
Cyan         |   3
Red          |   4
Magenta      |   5
Brown        |   6
Light Gray   |   7
Dark Gray    |   8
Light Blue   |   9
Light Green  |   10
Light Cyan   |   11
Light Red    |   12
Light Magenta|   13
Yellow       |   14
White        |   15

Jetzt gebe ich den Code von ChangeConsoleToColors ein. Der Code lautet - 

void ClearConsoleToColors(int ForgC, int BackC)
 {
 Word wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);
               //Get the handle to the current output buffer...
 HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
                     //This is used to reset the carat/cursor to the top left.
 COORD coord = {0, 0};
                  //A return value... indicating how many chars were written
                    //   not used but we need to capture this since it will be
                      //   written anyway (passing NULL causes an access violation).
  DWORD count;

                               //This is a structure containing all of the console info
                      // it is used here to find the size of the console.
 CONSOLE_SCREEN_BUFFER_INFO csbi;
                 //Here we will set the current color
 SetConsoleTextAttribute(hStdOut, wColor);
 if(GetConsoleScreenBufferInfo(hStdOut, &csbi))
 {
                          //This fills the buffer with a given character (in this case 32=space).
      FillConsoleOutputCharacter(hStdOut, (TCHAR) 32, csbi.dwSize.X * csbi.dwSize.Y, coord, &count);

      FillConsoleOutputAttribute(hStdOut, csbi.wAttributes, csbi.dwSize.X * csbi.dwSize.Y, coord, &count );
                          //This will set our cursor position for the next print statement.
      SetConsoleCursorPosition(hStdOut, coord);
 }
 return;
}

In dieser Funktion übergeben Sie zwei Zahlen. Wenn Sie normale Farben wünschen, setzen Sie einfach die erste Zahl als Null und die zweite Zahl als Farbe. Mein Beispiel ist - 

#include <windows.h>          //header file for windows
#include <stdio.h>

void ClearConsoleToColors(int ForgC, int BackC);

int main()
{
ClearConsoleToColors(0,15);
Sleep(1000);
return 0;
}
void ClearConsoleToColors(int ForgC, int BackC)
{
 Word wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);
               //Get the handle to the current output buffer...
 HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
                     //This is used to reset the carat/cursor to the top left.
 COORD coord = {0, 0};
                  //A return value... indicating how many chars were written
                    //   not used but we need to capture this since it will be
                      //   written anyway (passing NULL causes an access violation).
 DWORD count;

                               //This is a structure containing all of the console info
                      // it is used here to find the size of the console.
 CONSOLE_SCREEN_BUFFER_INFO csbi;
                 //Here we will set the current color
 SetConsoleTextAttribute(hStdOut, wColor);
 if(GetConsoleScreenBufferInfo(hStdOut, &csbi))
 {
                          //This fills the buffer with a given character (in this case 32=space).
      FillConsoleOutputCharacter(hStdOut, (TCHAR) 32, csbi.dwSize.X * csbi.dwSize.Y, coord, &count);

      FillConsoleOutputAttribute(hStdOut, csbi.wAttributes, csbi.dwSize.X * csbi.dwSize.Y, coord, &count );
                          //This will set our cursor position for the next print statement.
      SetConsoleCursorPosition(hStdOut, coord);
 }
 return;
} 

In diesem Fall habe ich die erste Zahl als Null und die zweite Zahl als 15 angegeben, so dass die Konsolenfarbe weiß ist, da der Code für Weiß 15 ist. Dies funktioniert für mich in Code :: Blöcken. Ich hoffe es funktioniert auch für dich.

8
Ashish Ahuja

Sie können auch rlutil verwenden:

  • plattformübergreifend
  • nur Kopfzeile (rlutil.h),
  • arbeitet für C und C++,
  • implementiert setColor(), cls(), getch(), gotoxy(), usw.
  • Lizenz: WTFPL

Ihr Code würde in etwa so aussehen:

#include <stdio.h>

#include "rlutil.h"

int main(int argc, char* argv[])
{
    setColor(BLUE);
    printf("\n \n \t This is dummy program for text color ");
    getch();

    return 0;
}

In example.c und test.cpp finden Sie Beispiele für C- und C++ - Beispiele.

7
maddouri

Die Funktion textcolor wird in den neuesten Compilern nicht mehr unterstützt. 

Dies ist die einfachste Möglichkeit, die Textfarbe in Codeblöcken zu ändern. Sie können die Funktion system verwenden.

So ändern Sie die Textfarbe:

#include<stdio.h> 
#include<stdlib.h> //as system function is in the standard library

int main()        
        {
          system("color 1"); //here 1 represents the text color
          printf("This is dummy program for text color");
          return 0;
        }

Wenn Sie sowohl die Textfarbe als auch die Konsolenfarbe ändern möchten, müssen Sie lediglich einen weiteren Farbcode in der Funktion system hinzufügen

So ändern Sie die Textfarbe und die Konsolenfarbe:

system("color 41"); //here 4 represents the console color and 1 represents the text color

NB: Verwenden Sie keine Leerzeichen zwischen diesen Farbcodes 

system("color 4 1");

Wenn Sie es dennoch tun, zeigt der Codeblock alle Farbcodes an. Mit diesen Tricks können Sie alle unterstützten Farbcodes kennen.

1
Md. Pial Ahamed

Dies ist eine Funktion online, ich habe eine Header-Datei damit erstellt und benutze stattdessen Setcolor();, ich hoffe, das hat geholfen! Sie können die Farbe ändern, indem Sie eine beliebige Farbe im Bereich von 0-256 auswählen. :) Leider glaube ich, dass CodeBlocks einen späteren Build der window.h-Bibliothek hat ...

#include <windows.h>            //This is the header file for windows.
#include <stdio.h>              //C standard library header file

void SetColor(int ForgC);

int main()
{
    printf("Test color");       //Here the text color is white
    SetColor(30);               //Function call to change the text color
    printf("Test color");       //Now the text color is green
    return 0;
}

void SetColor(int ForgC)
{
     Word wColor;
     //This handle is needed to get the current background attribute

     HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
     CONSOLE_SCREEN_BUFFER_INFO csbi;
     //csbi is used for wAttributes Word

     if(GetConsoleScreenBufferInfo(hStdOut, &csbi))
     {
          //To mask out all but the background attribute, and to add the color
          wColor = (csbi.wAttributes & 0xF0) + (ForgC & 0x0F);
          SetConsoleTextAttribute(hStdOut, wColor);
     }
     return;
}
1
LearningCODE

Ein einfacher Ansatz ...

system("Color F0");

Buchstabe steht für Hintergrundfarbe, während die Zahl die Textfarbe darstellt.

0 = schwarz

1 = Blau

2 = grün

3 = Aqua

4 = rot

5 = Lila

6 = gelb

7 = weiß

8 = grau

9 = Hellblau

A = Hellgrün

B = leichtes Aqua

C = Hellrot

D = Hellpurpur

E = hellgelb

F = Hellweiß

0
user7504718

system("COLOR 0A");'

dabei ist 0A eine Kombination aus Hintergrund und Schriftfarbe 0

0
Akash Rc