Farben verändern mit C++ im cmd Fenster



  • Aso! Muss man das auch wissen?

    Win7 Professional



  • Kommt darauf an ob du es Betriebssystem spezifisch machen darfst.
    Falls windows ausreicht kannst du
    https://github.com/CoreAPITeam/CoreAPI_build1.2.0.1
    ausprobieren.

    #include <iostream>
    #include <conio.h>
    
    #include "CoreAPI.h"
    
    int main()
    {
       core::CoreAPI inst;
       inst.SetBGColor(core::color::COLOR_BLUE);
       inst.SetFontColor(core::color::COLOR_WHITE);
    
       std::cout << "Output" << std::endl;
       _getch();
    }
    


  • Was meintest du genau mit:"Betriebssystem spezifisch machen darfst."?

    Wenn ich das Programm debbuge kommt dann diese Fehlermeldung:

    fatal error C1083: Datei (Include) kann nicht geöffnet werden: "CoreAPI.h": No such file or directory



  • 1. Du musst dir die beiden Dateien CoreAPI.h und CoreAPI.cpp runterladen und in den gleichen Ordner wie deine main.cpp Datei schieben.
    Dann bindest du beide Dateien in dein Projekt mit ein.

    2.CoreAPI.h enthälet den header Windows.h d.h. CoreAPI ist Windows spezifisch, da die Datei Windows.h z.B. standard-mäßig nicht auf z.B. Unix Systemen vorhanden ist.Kurz gesagt : wenn dein Programm nur auf Windows laufen muss, gibt es keine Probleme.



  • Er mekert nun:

    error C3083: "color": Das Symbol links neben "::" muss ein Typ sein.

    error C2589: 'Konstante': Ungültiges Token auf der rechten Seite von '::'

    Syntaxfehler: Es fehlt ')' vor '::'

    'core::CoreAPI::SetBGColor': Funktion akzeptiert keine 0 Argumente

    und noch viel mehr.



  • Ist das nicht viel für so eine simple (denke ich mal) Sache? 😕



  • Tut mir leid, hab was verwechseld

    #include <iostream>
    #include <conio.h>
    
    #include "CoreAPI.h"
    
    int main()
    {
       core::CoreAPI inst;
       inst.SetBGColor(COLOR_BLUE);
       inst.SetFontColor(COLOR_WHITE);
    
       std::cout << "Output" << std::endl;
       _getch();
    }
    


  • Ich hatte zwar viele Fehler, doch konnte sie auf wenige minimieren.

    Nun habe ich folgendes:

    coreapi.h(10) : error C2006: '#include': Dateinamen erwartet, aber 'Bezeichner' gefunden

    coreapi.h(10) : fatal error C1083: Datei (Include) kann nicht geöffnet werden: "": No such file or directory

    coreapi.h(10) : error C2006: '#include': Dateinamen erwartet, aber 'Bezeichner' gefunden

    coreapi.h(10) : fatal error C1083: Datei (Include) kann nicht geöffnet werden: "": No such file or directory

    Sind die letzten.



  • Dann hast du die beiden Dateien noch nicht dem Projekt hinzugefügt bzw. findet er die nicht an der erwarteten Stelle. Steht aber auch in der Fehlermeldung.



  • Tut mir Leid wenn ich dir auf die Nerven gehe, aber das mit dem hinzufügen musst du mir ggf. erklären.

    Ich habe die zwei Dateien die du als LINK gepostet hast genommen und in den selben Ordner wie die main.cpp gelegt.

    Danach habe ich C++ gestartet mein Projekt geöffnet und dann links an der Seite bei der "Headerdatei" rechts klick gemacht und "Vorhandenes Element" angeklickt.

    CoreAPI.h eingefügt und das gleiche mit der CoreAPI.cpp gemacht, abr bei "Queldatei".

    Vielleicht ist das nicht richtig wie ich es gemacht habe?! 😞



  • Hast die Dateien auch zum Projekt hinzugefügt?



  • Schau mal so sieht das aus:

    http://www.pic-upload.de/view-13229920/Test.jpg.html

    Es sieht so aus als ob es in einer Projektmappe ist, aber ob das stimmt?

    Falls nicht musst du mir das kurz erklären wie ich das mache. 🙂



  • Hab nicht deine Entwicklungsumgebung.
    Deshalb - welches Projekt/Projektmappe hast du gewählt?
    Der Rest sieht schon brauchbar aus.
    Nur welche Projektmappe?



  • Diese DV-Tool ist meine Projektmappe. Oder was meinst du genau?

    Ist das alles wirklich notwendig um nur 2 Farben zu verändern?



  • Gib mal in der Suche des Forums: Farbe auf Windows-Konsole oder ähnlich ein.
    Da solltest du Beispiele finden und auch ein paar ähnliche Projekte dem dir hier gezeigt wurde.

    MfG f.-th.



  • Vielleicht hast du ein falsches Projekt angefangen.
    Win32-Consolen Projekt brauchst du.

    Obwohl das eig. nicht sein kann.
    Du hast irgendwas mit den Pfaden und Dateien falsch gemacht.
    Hast du CoreAPI.h/.cpp geändert ?



  • #include <windows.h>
    
    #include <iostream>
    
    using namespace std;
    
    void ClearScreen(WORD attribute = 7)
    {
        CONSOLE_SCREEN_BUFFER_INFO csbi;
        COORD target = {0, 0};
        DWORD written;
    
        GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
        FillConsoleOutputCharacter(GetStdHandle(STD_OUTPUT_HANDLE), ' ',
                                                csbi.dwSize.X * csbi.dwSize.Y,
                                                target, &written);
        FillConsoleOutputAttribute(GetStdHandle(STD_OUTPUT_HANDLE), attribute,
                                                csbi.dwSize.X * csbi.dwSize.Y,
                                                target, &written);
    }
    
    void DruckSimpleText(int x, int y, char const *text)
    {
        COORD target = {x, y};
        DWORD written;
    
        WriteConsoleOutputCharacter(GetStdHandle(STD_OUTPUT_HANDLE), text,
                                                strlen(text),
                                                target, &written);
    }
    
    void SetCursorPosition(int x, int y)
    {
        COORD pos = {x, y};
    
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
    }
    
    int main()
    {
    	ClearScreen(FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN | BACKGROUND_BLUE);
    
    	SetCursorPosition(0, 0);
    
    	DruckSimpleText(5, 5, "Test - Ausgabe");
    }
    


  • Er hat da im Projekt, das er verlinkt hat, etwas von Resourcendateien stehen. Meist bedeutet das, er hat nicht die Win32-Console bei der Projektbildung eingestellt?

    MfG f.-th.



  • ... oder einfach:

    #include <windows.h>
    
    #include <iostream>
    
    using namespace std;
    
    void ClearScreen(WORD attribute = 7)
    {
        CONSOLE_SCREEN_BUFFER_INFO csbi;
        COORD target = {0, 0};
        DWORD written;
    
        GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
        FillConsoleOutputCharacter(GetStdHandle(STD_OUTPUT_HANDLE), ' ',
                                                csbi.dwSize.X * csbi.dwSize.Y,
                                                target, &written);
        FillConsoleOutputAttribute(GetStdHandle(STD_OUTPUT_HANDLE), attribute,
                                                csbi.dwSize.X * csbi.dwSize.Y,
                                                target, &written);
    }
    
    int main()
    {
    	ClearScreen(FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN | BACKGROUND_BLUE);
    	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN | BACKGROUND_BLUE);
    	cout << "test\n";
    }
    


  • Oh! Das was Belli mir gegeben hat als letztes ging aufeinmal! 😮

    Ja das ist das was ich gesucht habe! Danke nochmal für eure Mühe! 👍

    Doch die Frage stellt sich mir immer: Wieso dieser große Aufwand?
    Ist das nicht normalerweise eine kleinigkeit mit ein paar kurzen Handgriffen? 😕


Anmelden zum Antworten