Seite 1 von 1

Funktionsbibliothek für Commandline-Programme (CMD) gesucht

Verfasst: 27.06.2009 13:36
von Kaltstart
Um meine Command-Line-Programme etwas 'aufzupäppeln' möchte ich zukünftig gerne mit der Grafischen Console arbeiten. (EnableGraphicalConsole(1))

Früher gab es da für DOS-Programme Funktionsbibliotheken mit denen man z.B: Fenster 'zeichnen' konnte:

#inclucde( 'Funktionsbibliothek_Rahmen.inc' )

Code: Alles auswählen

ZeichneFläche( Zeile, Spalte, Breite, Länge, Farbe, Schatten)
oder

Code: Alles auswählen

ZeichneHintergrund( Zeile, Spalte, Breite, Länge, Farbe)

und dann hatte man eine 'Schattenrahmen' oder ein Menü in welchen man via ConsoleLocate (24,12) und PrintN() Text plazieren kann.

Kennt jemand eine Funktionsbibliothek im Quelltext in der solche grafischen Spielereien (mit ASCII-Zeichen) bereits umgesetzt sind? (Gerne auch andere Sprachdialekte, da es im Grunde nur wieder um den Aufbau der 'Schleifen' und Steuercodes geht.)

Gruss
Kaltstart

Verfasst: 27.06.2009 13:50
von KeyKon
Und was Spricht dagegen richtige Windows zu verwenden^^?

Verfasst: 27.06.2009 14:05
von ZeHa
Er will Command-Line-Programme schreiben. Wenn einer wissen will, wo er Briefumschläge kaufen kann, fragst Du dann auch "was spricht dagegen, das Telefon zu verwenden?" :roll:

@ Kaltstart: es gibt eine Library namens "curses", ich wüßte zwar nicht daß davon eine PB-Anbindung existiert, aber vielleicht läßt sich das ja leicht wrappen (kenne mich mit dem Wrappen nicht so aus, aber hier gibt's einige im Forum, die das können).

Verfasst: 27.06.2009 14:38
von Kaeru Gaman
solche Layout-Funktionen für die Grafische Konsole lassen sich recht einfach selber realisieren.

Rahmen und Flächen sind da wirklich easy.

etwas schwieriger wird ein Schatten, der vorherigen Text durchscheinen läßt,
der muss vorhandene Information nehmen und nur die Farbe verändern.

und es gab auch Bibliotheken, die richtige fenster auf Textmode emuliert haben,
da wird das ganze noch anspruchsvoller.

die von dir benannten Funktionen sind wohl stufe1 maximal stufe2.
bei einem Fensterhändling wäre eigenständiges drüberzeichnen von Flächen und Hintergründen nicht mehr zulässig.

Verfasst: 27.06.2009 22:44
von Kaltstart
@ZeHa:
Ganz genau. Bin halt einfach ein alter 'Konsolensack'.
Brauche kein Grafik-Klimbim wenn eine Aufgabe schnell über die Kommandozeile gehen kann. Und gerade da sehe ich in PureBasic eine große Stärke.
(Ich liebe z.B. Horst Schaeffer's DELAGE32: http://home.mnet-online.de/horst.muc/wbat32d.htm)

Werd mal nach 'curses' googeln...
Danke.

@Kaeru Gaman:
Kaeru Gaman hat geschrieben: etwas schwieriger wird ein Schatten, der vorherigen Text durchscheinen läßt,
der muss vorhandene Information nehmen und nur die Farbe verändern.
Die Schatten werden einfach duch Vordergrundfarbe auf 'schwarzer Balken' realisiert. Also keine wirklichen Schatten sondern nur Pseudo.
Wir reden von 'einfachen' ASCII-Boxen

Wir reden auch nicht von wirklichem Fensternhandling sondern von 'Malen auf Bildschirm'. Vielleicht kennst Du noch die 'alten' Ghost-(Imager)-Versionen vor Version 7. Die waren im Grunde auch DOS-Programme haben aber ausgesehen als ob sie in Fenstern laufen.


Problem sind die (mir nicht bekannten) ASCII-Zeichen.
Habe experimentiert mit 'copy-and-paste' und diversen Sonderzeichen über ALT+<Nummer>.

Um es besser zu verdeutlichen: habe mal kurz gegoogelt und folgende Seite gefunden
http://www.apollosoft.de/ASCII/indexde.htm
dort sieht man deutlich die Sonderzeichen für die Boxen (7. Zeile in den Beispiel-Fonts)

Evtl. ist ein Ansatz, daß man irgendwie den Font in der Console aktivieren kann und dann die Zeichen PrintN'ted. Auf jeden Fall bekomm ich die 'Ecken' und 'Striche' nicht hin.

Gruss
Kaltstart

Verfasst: 27.06.2009 22:44
von Kurzer
Hallo Kaltstart,
ich habe in den frühen '90ern einige Consolenprogramme in "PowerBasic" erstellt und mir dafür ein "Standard-Include" geschrieben, das mir die Oberflächengestaltung erleichterte.

Darin enthalten sind Befehle zum Erzeugen von Fenstern, Ja/Nein-Dialogen, selbstdefinierbaren Fragedialogen, Rechtecken, Textausgabe in einen rechteckigen Bereich usw. mit oder ohne Schatten und mit 6 verschiedenen grafischen Fensterstyles.

Ferner Routinen zum erstellen von Stringeingabefeldern und numerischen Eingabefeldern inkl. der zugehörigen Cursor- und Editierfunktionen. Routinen zum Prüfen von Mausklicks innerhalb von rechteckigen Breichen und eine Mauscursorroutine die quasi den Eventloop darstellt (allerdings auf Tastaturbasis, denn für die Mausunterstützung wurde ein Programm benutzt, das die Mausbewegungen in Cursorbewegungen umwandelte).

Außerdem gibt es Prozeduren zum Buffern von Hintergründen, die es ermöglichen mehrere Fenster oder Dialoge übereinander darzustellen und den verdeckten Hintergrund mit einem einzigen RestoreBefehl wiederherzustellen.

Es ist wie gesagt kein PureBasic sondern PowerBasic, aber ich würde mich freuen, wenn diese alten Routinen Dir trotzdem weiterhelfen würden. Die hab ich schon fast wieder vergsssen. ;)

Code: Alles auswählen

REM ----------------------------------------------------------------
REM --- WINIT: INITROUTINE --- WCLEAR: ALLE VARIABLEN L™SCHEN ------
REM ----------------------------------------------------------------

WINIT:
REM Variablen f

Verfasst: 28.06.2009 04:08
von mk-soft
Habe damals noch mit Pascal in Textmode gearbeitet. Um Speicherplatz zu Sparen habe ich meine Fenstertechnik so geschrieben das der Grafikkarten speicher zur Pufferung der der untergelagerten Fenster nutzte.

War noch richtig interessant eigene Routinen für Eingabe und Ausgabefelder zu schreiben mit der gesamten Auswertung der Tastaturcodes.

Lang ist her 8)

Verfasst: 28.06.2009 08:33
von horst
mk-soft hat geschrieben:Lang ist her 8)
Ich habe immer noch meine alten DOS-Tools auf meiner Website, u.a. WBAT, mit dem man Menüs und Dialogboxen in Batch-Abläufen zaubern kann, auch mit Fenster-Schatten etc.. Die Demo läuft sogar im Fenster unter XP (Quick-Edit muss abgeschaltet sein).

Verfasst: 28.06.2009 10:55
von ZeHa
horst hat geschrieben:Ich habe immer noch meine alten DOS-Tools auf meiner Website, u.a. WBAT, mit dem man Menüs und Dialogboxen in Batch-Abläufen zaubern kann
Das ist echt fett :allright:
Schade daß ich das grad nirgendwo brauche, aber echt beeindruckend!

Verfasst: 28.06.2009 13:23
von Kaeru Gaman
Kaltstart hat geschrieben:Problem sind die (mir nicht bekannten) ASCII-Zeichen.
Habe experimentiert mit 'copy-and-paste' und diversen Sonderzeichen über ALT+<Nummer>.
PureBasic -> Help -> Referenz-Handbuch -> Zusätzliche Informationen -> ASCII-Codes mit Zeichen

dort die zweite Tabelle: DOS erweiterte Zeichen

da findest du die Grafikzeichen für die Console.