mikrocontroller.net

Forum: PC-Programmierung Win32-Konsole


Autor: Patrick Dohmen (oldbug) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen!

Weis zufällig jemand, wie/ob ich die ANSI-Steuerzeichen in einer
Win32-Konsole per simplen 'printf' nutzen kann?

Optimistisch wie ich war habe ich folgendes probiert:
#include <stdio.h>

int
main(void)
{
    /*
     * Clear screen and go to home position
     */
    printf("\x1[2J\x1b[H");
    return 0;
}

...das kommt aber völlig "uninterpretiert" auf dem Bildschirm an.

Hat da jemand eine Idee?
Danke...

Autor: Patrick Dohmen (oldbug) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hups, das printf sieht natürlich so aus:
printf("\x1b[2J\x1b[H");

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gar nicht. Ein Äquivalent zum "ansi.sys" aus der DOS-Zeit gibt es
unter Windows nicht.

Zur Cursorsteuerung und anderen Dingen solltest Du die in der Win32-API
vorhandenen Funktionen verwenden; hier zwei Einstiegspunkte in die
zugehörige Dokumentation:

http://msdn.microsoft.com/library/default.asp?url=...
http://msdn.microsoft.com/library/default.asp?url=...

Mir ist, um ehrlich zu sein, auch schleierhaft, warum dieses Fossil aus
der IT-Steinzeit, in der noch echte Terminals an seriellen
Schnittstellen hingen, immer noch am leben ist ... in der *nix-Ecke
gibt es ja noch schlimmere Varianten davon (termcap), die IMHO auch
völlig entbehrlich sind.
Naja.

Wie auch immer; viel Erfolg!

Autor: René König (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und wenn Du Dich nicht selber mit den API-Funktionen herumschlagen
willst, fügst Du einfach dieses C-File Deinem Projekt hinzu:
http://www.tbkoenig.de/files/conioex/CONIOEX.ZIP

Autor: Patrick Dohmen (oldbug) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rufus:

Danke, die MSDN habe ich dann auch kurz darauf gefunden, aber was da
für ein simples Bildschirmlöschen gemacht wird, finde ich ein wenig arg
übertrieben. Was solls... :)

Warum ANSI-Sequenzen? Nun, ich möchte meine Konsolapplikation einfach
ein wenig übersichtlicher machen. Und ich möchte bei der Konsole
bleiben, denn die Funktionalität steht im Vordergrund, nicht das
Entwerfen von irgendwelchen Fensterchen :-)

René:

Danke, werds mir mal anschauen.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mir ist schon klar, warum Du eine Möglichkeit zur Ausgabesteuerung
suchst, das war nicht der Punkt meiner (auch gar nicht an Dich
gerichteten) Kritik.

Renés Code ist ein Wrapper um die zugegebenermaßen arg umständliche
Konsolen-I/O-API von Microsoft.
Praktisch. Sowas sollte MS oder auch andere Compilerhersteller ihren
Compilern von vornherein mitgeben.

Auch von mir ein Dank an René.

Autor: Patrick Dohmen (oldbug) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, Mißverständnis beseitigt ;)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.