Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Escape-Sequenz zur Löschung des Bildschirms auf der Konsole?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
05.04.2015, 16:01 Uhr
Yadgar



Hi(gh)!

Nach längerer C++-Abstinenz hat es mich mal wieder gepackt... da ich zur Zeit bei meinem mindestens genauso C++-begeisterten Freund zu Besuch bin, versuchen wir uns gemeinsam an (erst einmal) kleinen Konsolenprogrammen mit Textmenüs, und zwar unter Bloodshed DEV-C++ (ich weiß, heutzutage nimmt man Orwell... aber... never change a running system!).

Dabei stellte ich fest, dass die Escapesequenz zum Löschen des Bildschirms auf der Konsole, die ich im vorigen Jahrhundert im Zusammenhang mit einem längst vergessenen C++-Compiler für MS-DOS ("RHIDE" oder so ähnlich, er lag dem 1998 erschienenen Buch "Programmieren in C++" von Breymann bei) gelernt hatte, nämlich:


Code:
\033[2J;



offensichtlich auch bei Einbindung von cstdlib von DEV-C++ nicht erkannt wird - in meinem Code steht


Code:
printf("\033[2J;");



angezeigt wird an dieser Stelle aber:

...ja so ein Mist aber auch, unter Linux könnte ich jetzt einfach markieren und den angezeigten Text kopieren, unter Windoof geht gar nichts! Ich will mein Linux wiederhaben!

Jedenfalls wird der Konsolenbildschirm nicht gelöscht und der Cursor auch nicht in der linken oberen Ecke positioniert...

Was mache ich falsch?

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.04.2015, 08:30 Uhr
Tommix



Hallo,
ich glaube das geht unter Windows so nicht mehr:
https://ssl.secure-hosts.de/www.fun-soft.de/showtopic.php?threadid=22142

Gruß,
Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.04.2015, 16:34 Uhr
~f.-th.
Gast


Hier mal etwas im Borland-Stil für Konsole unter Windows ab 2000:

Die Header Datei:

C++:
// borland-like Konsolen-Funktionen

#ifndef coniobor_h
#define coniobor_h

typedef short cord; // wert für Koordinaten
typedef const unsigned int Uint; // Farbwerte


enum color {BLACK, BLUE, GREEN, CYAN, RED, VIOLET, BROWN, LIGHTGREY,
    DARKGREY, LIGHTBLUE, LIGHTGREEN, LIGHTCYAN,
    LIGHTRED, LIGHTMAGENTA, YELLOW, WHITE};


void clrscr();    
void gotoxy(cord x, cord y);

int textcolor(Uint color);
int backgroundcolor(Uint color);
int consolecolor(int textcolor, int backgroundcolor);

int blackandwhite();

#endif



und der dazugehörige C-Quelltext:

C++:
// borland-like Konsolen-Funktionen

#include <windows.h>
#include "coniobor.h"

int ccolor = 0x80;

void clrscr()
{
    COORD coord;
    DWORD written;
    CONSOLE_SCREEN_BUFFER_INFO info;
    coord.X = coord.Y = 0;
    HANDLE std = GetStdHandle(STD_OUTPUT_HANDLE);
    GetConsoleScreenBufferInfo(std, &info);
    FillConsoleOutputCharacter(std,' ',info.dwSize.X*info.dwSize.Y,coord,&written);
    coord.X = coord.Y = 0;
    SetConsoleCursorPosition(std, coord);
}

void gotoxy(cord x, cord y)
{
    HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD pos;
    pos.X=x-1; // speichert X Position
    pos.Y=y-1; // speichert Y Position
    SetConsoleCursorPosition(hCon, pos); // Cursorposition

}

int textcolor(Uint color)
{
    HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
    ccolor = (ccolor & 11110000) + color;
    SetConsoleTextAttribute(hCon, ccolor);  
    return(ccolor);
}

int backgroundcolor(Uint color)
{
    HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
    ccolor = (ccolor & 00001111) + (color << 4);
    SetConsoleTextAttribute(hCon, ccolor);  
    return(ccolor);
}


int consolecolor(int textcolor, int backgroundcolor)
{
    HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
    ccolor = textcolor + (backgroundcolor << 4);
    SetConsoleTextAttribute(hCon, ccolor);  
    return(ccolor);
}

int blackandwhite()
{
    HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hCon, 0x0F);
    return 0;
}    



Ist zwar in pur C sollte aber für die genannten Zwecke reichen.

Irgendwo im Netz gibt es auch eine Variante, die das in C++ umsetzt.



Hoffe mal das das ohne Vorschau passt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
06.04.2015, 17:06 Uhr
~f.-th.
Gast


Hier noch etwas für C++ Quelltexte aus alter Zeit, die "mal eben" noch geändert werden sollen:
http://downloads.zdnet.com/product/2069-75985243/
Bildet die Borland-Compiler aus den 90ern für den Betrieb unter aktuellen Windows nach.

Hab damit für einen Kumpel vor ein paar Monaten den Borland-DOS-Quelltext für eine Hobby-Brauerei-Steuerung unter Windows Vista ans Laufen gebracht.


Es gibt da noch ein Projekt einer US-Hochschule mit dem gleichen Ziel aber einer anderen Umsetzung. Heisst glaub Quincy: http://quincy-2005.software.informer.com/1.3/

Kleine Änderungen des DOS-Zeit-Quelltextes sind meist erforderlich.


Das Ergebnis sollte dann laufen, hat mit aktuellen Vorstellungen und Möglichkeiten von C++ aber nur noch wenig gemeinsam.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: