Farben verändern mit C++ im cmd Fenster



  • 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? 😕



  • Das sind doch nur ein paar Handgriffe?! Nach

    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | 
    FOREGROUND_BLUE | FOREGROUND_GREEN | BACKGROUND_BLUE);
    

    werden alle Ausgaben wie gewünscht dargestellt.
    Die Funktion ClearScreen dient nur dazu, einmal den Bildschirm zu löschen (mit der gewünschten Hintergrundfarbe).



  • Damit habe ich auch nicht dich gemeint. 😉



  • Muss noch hinzufügen das deine Schrift nicht weiß ist sondern grau! 😛



  • Programmier-Idiot schrieb:

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

    Wenn du damit mich meinst:
    CoreAPI ist eig. für viel mehr gemacht.Die Farbgebung wird da für viel mehr verwendet als für "bloßen text"

    Ich arbeite gerade an ner neuen version deswegen entschuldige ich mich dafür das es nicht funktioniert hat, normalerweise sollte das nicht vorkommen.

    zurück zum aufwand:Du kannst z.B. Buttons in die Console einbauen oder eigene Fenster.Das ganze ntürlich nur auf ASCII/Textbasis, doch es sieht in der console echt nice aus.Du kannst es dir z.B. wie im bios menü vorstellen. 😉



  • Programmier-Idiot schrieb:

    Muss noch hinzufügen das deine Schrift nicht weiß ist sondern grau! 😛

    Dann setz noch zusätzlich das Flag intensiv.



  • Okay! Trotzdem dankeschön! 🙂


Anmelden zum Antworten