Textbereich in einer Zeile invertieren (Konsole)



  • Kurze Frage zur Möglichkeit, einen x Zeichen langen Bereich in einer Zeile zeitweilig zu invertieren. (Konsolenanwendung!)

    In einem Land vor unserer Zeit (PräWindowsLand) konnte man direkt in den Bildschirmspeicher schreiben und beispielsweise die Art der Darstellung von Zeichen auf dem Monitor umschalten. Moderne Windows-OSse mögen das nicht mehr, was auch nachvollziebar ist. Habe im Forum gesucht wie ein Mann, nichts brauchbares gefunden. Auch die www-Suche mit Herrn Google war nicht besser.
    Was ist nun Ziel meiner Bestrebungen? Stellt euch eine auf dem Monitor präsente Auflistung mit 3 Spalten vor, die immer nur in einem Wert verändert wird also relativ konstant bleibt. Es soll nur immer eine Zeile der Liste als ausgewählt erkennbar sein, indem dieser Bereich "gehighlightet" wird. Mit den Cursortasten kann der User den Balken nach oben oder unten bewegen, um seine Auswahl zu treffen.

    Plan B wäre, die aktive Zeile neu auszugeben, nachdem die Farbwerte für VG/BG ausgetauscht wurden. Wenn der Fokus bewegt wird, muss wieder der Normalwert gesetzt und die Zeile neu ausgegeben werden, dann das Ziel gleichermaßen invertieren...

    Gibt es eine Chance für Plan A

    // hier spielt die "Improved Console 5.0" eine gewisse Rolle
    ...
    void invert(int posx, int posy, int laenge)
    {
    gotoxy(posx, posy);
    // eine Funktion, die ab hier die nächsten x(=laenge) Zeichen invertiert
    }
    ...
    

    Würde mich über gute Ideen sehr freuen 😉



  • Molse schrieb:

    Es soll nur immer eine Zeile der Liste als ausgewählt erkennbar sein, indem dieser Bereich "gehighlightet" wird. Mit den Cursortasten kann der User den Balken nach oben oder unten bewegen, um seine Auswahl zu treffen.

    Sowas wie eine Menüauswahl also. Sieh mal hier:
    http://www.c-plusplus.net/forum/303169



  • Nein Belli, es ist keine Menüauswahl, nichtsdestotrotz ist der Verweis auf den Thread interessant für mich. Nur entspräche diese Lösung eher meinem Plan B.

    Der Kasus Knacktus ist, einen definierten Bereich zu invertieren ohne den eigentlichen Inhalt erneut ausgeben zu müssen. Kann natürlich sein, das sowas heutzutage nicht mehr geht.



  • Genau das wird dort gemacht. Die Funktion heißt sogar: invertText
    Die Definition ist im dritten Beitrag in dem Thread in der ersten dort angegebenen cpp-Datei ab Zeile 28.



  • Danke Belli, ich werde heute abend nach der Arbeit intensiver eintauchen. Melde mich dann auf jeden Fall noch einmal dazu.



  • Wie versprochen habe ich inzwischen intensiver als beim ersten mal nachgelesen. Musste feststellen, meine Wissensbasis reicht noch nicht aus, um jedes Detail so zu verstehen, dass ich es sofort einsetzen könnte. Nichtsdestotrotz danke ich dir für den Fingerzeig (und die Nötigung zum weiterlernen 😃 ).


Log in to reply