Problem mit Consolen Hitergrund farbe / Endlich Gelöst....



  • Moin Moin ich bins mal wieder *g*

    Also meine frage.... hab aus dem script von mycoloredconsole die funktion für Hintergrundfarbe ausgeschnitten und versucht sie auf meinen syntax umzuschreiben, da ich irgendwie nicht verstehe wie macn das mit der Hintergrundfarbe macht iss mir unvereständlich dieses script... hab versucht mir n eigenes zu schreiben aber das brauchte imer so ca. ne sec um die hintergrundfarbe für die ganze Console aufzubauen und wirkte auch sehr komisch beim aufbau.... naja die funktion aus der mycoleredconsole konnte ich scho auf meinen syntax umschreiben... problem dabei ist, das die hellen farben nicht funktionieren.... woran liegt das ? was kann ich am script besser machen und ? wie kann ich dafür sorgen das die hellen farben auch funktionieren ?

    Hier der Code

    #include <iostream>
    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    
    using namespace std;
    
    #define Black              "Black"    
    #define DarkBlue           "DarkBlue"   
    #define DarkGreen          "DarkGreen"  
    #define DarkCyan           "DarkCyan"   
    #define DarkRed            "DarkRed"   
    #define Violett            "Violett"   
    #define Brown              "Brown"   
    #define Gray               "Gray"   
    #define DarkGray           "DarkGray"
    #define Blue               "Blue"    
    #define Green              "Green"   
    #define Cyan               "Cyan"  
    #define Red                "Red"   
    #define Pink               "Pink"   
    #define Yellow             "Yellow"   
    #define White              "White" 
    
    void clrscr(char Background_Color[] )
    {
    
       int COLOR;
       if (strcmp (Background_Color, Black           )==0)COLOR='0x0000';   
       if (strcmp (Background_Color, DarkBlue        )==0)COLOR='0x0001';
       if (strcmp (Background_Color, DarkGreen       )==0)COLOR='0x0002';   
       if (strcmp (Background_Color, DarkCyan        )==0)COLOR='0x0003';
       if (strcmp (Background_Color, DarkRed         )==0)COLOR='0x0004';   
       if (strcmp (Background_Color, Violett         )==0)COLOR='0x0005';
       if (strcmp (Background_Color, Brown           )==0)COLOR='0x0006';   
       if (strcmp (Background_Color, Gray            )==0)COLOR='0x0007';
       if (strcmp (Background_Color, DarkGray        )==0)COLOR='0x0008';   
       if (strcmp (Background_Color, Blue            )==0)COLOR='0x0009';
    
    // Hier der teil der nicht so will wie ich das will.... hatt bestimmt was mit dem mir unverständlichem charinfo zu tun.....
    
       //if (strcmp (Background_Color, Green           )==0)COLOR='0x000A';   
       //if (strcmp (Background_Color, Cyan            )==0)COLOR='0x000B';
       //if (strcmp (Background_Color, Red             )==0)COLOR='0x000C';   
       //if (strcmp (Background_Color, Pink            )==0)COLOR='0x000D';
       //if (strcmp (Background_Color, Yellow          )==0)COLOR='0x000E';   
       //if (strcmp (Background_Color, White           )==0)COLOR='0x000F';
    
       static const COORD upperleftcorner = {0, 0};
       CONSOLE_SCREEN_BUFFER_INFO screen_info;
       GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &screen_info);
    
       SMALL_RECT screensize;
       screensize.Left = 0;
       screensize.Top = 0;
       screensize.Right = screen_info.dwSize.X - 1;
       screensize.Bottom = screen_info.dwSize.Y - 1;
    
       _CHAR_INFO* buffer = new _CHAR_INFO[screen_info.dwSize.X * screen_info.dwSize.Y];
       _CHAR_INFO charinfo = {' ', COLOR << 4};
    
       for (int i = 0; i < screen_info.dwSize.X * screen_info.dwSize.Y; i++)
       {
          buffer[i] = charinfo;
       }
    
       COORD buffsize = {screen_info.dwSize.X, screen_info.dwSize.Y};
       WriteConsoleOutput(GetStdHandle(STD_OUTPUT_HANDLE),buffer,buffsize,upperleftcorner,&screensize);
    
       delete[] buffer;
    }
    

    die sache m. dem charinfo u. dem coord kommt mir echt spanisch vor....

    naja hoffe irgendjemant hier könnte mir helfen.... mir ist klar das das in euren augen echt nerfige fragen seien dürften... aber, ihr seid meine einzige hoffnung... irgendwie komm ich halt m. winapi sachen voll net wirklich klar...
    mfg Baltur 🙄



  • Willst du einfach nur das deine Konsole ne andere Farbe hat?
    Dann geht das auch leichter:

    system("color xy")
    wobei für x (Hintergrund) folgende Werte möglich sind:
    0 = Schwarz
    1 = Dunkelblau
    2 = Dunkelgrün
    3 = Blaugrün
    4 = Dunkelrot
    5 = Lila
    6 = Ocker
    7 = Hellgrau

    und für y (Textfarbe) folgene Werte möglich sind:
    8 = Dunkelgrau
    9 = Blau
    A = Grün
    B = Zyan
    C = Rot
    D = Magenta
    E = Gelb
    F = Weiss



  • color ist nicht zu empfehlen, siehe dazu den Beitrag in der C++-FAQ zum Thema "system()".

    Wenn du in der Konsole arbeitest und du noch nicht die nötigen Kenntnisse hast soetwas zu implementieren, lege ich dir die Improved Console auf http://ic.c-plusplus.net ans Herz. Damit kannst du die Farben schnell und einfach wechseln.

    MfG SideWinder



  • Danke für eure Hilfe !!!

    das m. system(....werd ich auf jeden fall mal ausprobieren...
    mit der improoved console hab ich mich auch schon auseinandergesezt...
    meine meinung dazu: 👍 👍 👍
    Das thema Text und Hintergrundfarbe hatt sich damit für mich abgeschlossen Danke für die Hilfe !!!!


Anmelden zum Antworten