Wie kann ich Text/Zahlen in verschiedenen Farben ausgeben ?



  • Also, mit

    system("colorXX");
    

    kann ich Schrift und Hintergrund von allem verändern, aber was kann ich schreiben wenn ich den einen Text Rot und den Anderen in blau ausgeben will ? Hab im Netz nur beispiele für c++ gefunden.



  • Das hat mit Standard-C nichts zu tun. Das ist durch und durch Systemspezifisch.

    Da musst du mal in den anderen Unterforen ('WinAPI', 'Linux/Unix' oder 'DOS und Win32-Konsole') schauen. Da kommt die Frage öfter mal.



  • ach so, danke



  • schau dir mal http://www.c-plusplus.net/forum/280349?highlight=conat an
    darin gibt es eine Funktion textcolor(), schau dir in conat.cpp den aufbau
    der funktion an, dann sollte dir ev. ein licht aufgehen.



  • Also bei mir gehen da eher die Lichter aus.
    Ich habe es nicht ausprobiert, aber kann es sein, daß, wenn ich eine Textfarbe setze, und dann eine Hintergrundfarbe wähle, die Textfarbe wieder weg ist?
    Und wenn ich erst eine Hintergrundfarbe setze und dann textcolor mit einer der vordefinierten Farben aufrufe, ist die Hintergrundfarbe wieder weg?

    Wie kann ich also rote Schrift auf weißem Hintergrund ausgeben?
    Und wozu sind überhaupt die ganzen Farbdefinitionen; die Grundfarben rot, grün, blau sind bereits in windows.h definiert, es würde genügen, die daraus mischbaren Farben zu definieren ... und und und

    Edit:
    Okay, ich habe jetzt erst weitergelesen und gesehen, daß du die Frage dort schon selbst gestellt hast.
    Warum das so ist, ist doch offensichtlich, beide (Vorder- und Hintergrundfarbe) werden mit einem einzigen Wert in einer einzigen Funktion gesetzt. Wenn Du also blaue Schrift auf rotem Hintergrund ausgeben willst, mußt Du SetConsoleTextAttribute mit FOREGROUND_BLUE | BACKGROUND_RED aufrufen.
    Wenn Du die Werte getrennt voneinander setzen können willst, mußt Du zuerst feststellen, wie der jeweils andere gerade gesetzt ist. Also Du willst zB rote Schrift setzen, die Hintergrundfarbe nicht verändern, dann mußt Du erst mal feststellen, welche Hintergrundfarbe gesetzt ist, und die dann wieder mit der roten Vordergrundfarbe verodern, dann erst SetConsoleTextAttribute aufrufen ...



  • das ist etwas, was ich ausser acht gelassen hatte und kurz darauf ausgebessert habe... die farbe wird zwischen gespeichert, sprich grundeinstellung per globale struktur...

    struct CONSOLE_COLOR{
         Uint Foreground;
         Uint Background;
         int Setting; // angabe von Standard oder !Standard
    } Console_Color;
    


  • Mhm, jut ... Du könntest das allerdings Windows überlassen und die aktuellen Attribute jeweils via GetConsoleScreenBufferInfo holen, aber Du kannst es natürlich auch selbst verwalten.



  • ich verwalte das lieber selber, hab in dieser hinsicht, so banal es auch klingt,
    einfach zu wenig vertrauen in Windows =b


Anmelden zum Antworten