(MFC mit dem...) Clear Screen...????
-
Hi Leute
Ich hab da ein problem...ich brauche den Befehl zum löschen des bildschirms in VC++.NET für eine Consolen Anwendung....in VC++ 6.0 ging das noch wunderbar da ich eine eigene Header-datei dafür hatte...aber jetzt kann ich die header datei nicht einfügen da kommen andauern so fehlermeldungen ...entweder mache ich da was falsch oder der kann die header nicht lesen..
1.) Kann mir vielleicht jemand sagen wie der befehl für clear screen ist...
2.) oder vielleicht wie ich eine header datei in VC++.NET in mein projekt einfüge...da es ja nicht wie in der 6.0 version geht....In der header steht zB clrscr(); für clear screen und das hat wunderbar funktioniert in der 6.0 version...aber jetzt nicht mehr
THX
Soso
Hier als Beispiel meine header dateien also eine ist *.cpp und die andere *.h
Headerfile.cpp:
/* Hier folgen einige Funktionen, die man beim Programmieren am Textbildschirm von Borland gewöhnt ist, aber im MS fehlen void clrscr () löscht den Schirm, positioniert Cursor links oben void gotoxy (int x, int y) positioniert Cursor auf angegebene Spalte(1-..), Zeile(1-..) int wherex () gibt zurück, wo auf welcher Spalte (1-..) gerade der Cursor steht int wherey () gibt zurück, wo auf welcher Zeile (1-..) gerade der Cursor steht int wievielezeilen () gibt zurück, wieviele Zeilen der Schirm gross ist (meist 25) int wievielespalten () gibt zurück, wieviele Spalten der Schirm gross ist (meist 80) void textcolor(int farbcode) setzte die Textfarbe für die nachfolgenden Ausgaben void textbackground(int farbcode) setzte die Hintergrundfarbe für die nachfolgenden Ausgaben void delay (millisekunden); wartet die angegebene Zeit (nur für kurzeZeiträume sinnvoll) int random (int obergrenze) liefert eine Zufallszahl im Wertebereich von 0 bis obergrenze - 1 */ /* was aus der conio.h ist brauchbar int getch() // liest ein Zeichen bzw. besser eine Taste von der Tastatur // Ist auf der Taste ein Zeichen, so erhält man den Ascii Code // bei Spezialtasten erhält man 0 oder E= - man muss dann noch // einmal lesen um einen Code für die jeweilige Spezialtaste // (Funktionstasten, Cursortasten) zu erhalten int kbhit () // hat der Benutzer auf eine Taste gedrückt ? // Wenn man mit getch liest, dann wartet getch bis der // Benutzer eine Taste drückt - in der Zwischenzeit // kann das Programm nichts tun. kbhit wartet nicht sondern // schaut nur nach ob einen Taste gedrückt ist. Wenn ja // kann das Programm mit getch lesen, wenn nein kann man // z.b. etwas ausgeben und später nochmal mit kbhit abfragen void putch(ascci-code) // gibt ein Zeichen aus, Vorteil gegenüber printf ist, dass mehr // ascii codes darstellbar sind. */ #include <windows.h> #include <time.h> #include <stdlib.h> // diese Funktionen nutzen die recht mächtige Programmierfähigkeit // der WIN32 Console, die einem Anfänger nicht direkt zugemutet // werden kann HANDLE holeoutput () // Hilfsfunktion für die Ausgabe { // Variante 1, nehme den stdout return GetStdHandle (STD_OUTPUT_HANDLE); // Variante 2 - nehme immer die Console return CreateFile( "CONOUT$", GENERIC_WRITE | GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, 0L, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0L); } void clrscr ( ) { COORD coordScreen = { 0, 0 }; /* Struktur für Position am Schirm */ HANDLE hConsole; /* Win32 Fenster Zugriffshandle */ BOOL bSuccess; DWORD cCharsWritten; CONSOLE_SCREEN_BUFFER_INFO csbi; /* buffer info Struktur */ DWORD dwConSize; /* Zeichenzahl am Schirm */ hConsole = holeoutput (); bSuccess = GetConsoleScreenBufferInfo( hConsole, &csbi ); dwConSize = csbi.dwSize.X * csbi.dwSize.Y; // anz-spalten * anz-zeilen /* alles blanks */ bSuccess = FillConsoleOutputCharacter( hConsole, (TCHAR) ' ', dwConSize, coordScreen, &cCharsWritten ); bSuccess = GetConsoleScreenBufferInfo( hConsole, &csbi ); /* now set the buffer's attributes accordingly ?? wozu wohl */ bSuccess = FillConsoleOutputAttribute( hConsole, csbi.wAttributes, dwConSize, coordScreen, &cCharsWritten ); /* positioniere cursor auf (0, 0) */ bSuccess = SetConsoleCursorPosition( hConsole, coordScreen ); return; } int wherex ( ) { HANDLE hConsole; BOOL bSuccess; CONSOLE_SCREEN_BUFFER_INFO csbi; /* buffer info */ hConsole = holeoutput (); bSuccess = GetConsoleScreenBufferInfo( hConsole, &csbi ); return csbi.dwCursorPosition.X +1; // +1 weil geht von 0 weg } int wherey ( ) { HANDLE hConsole; BOOL bSuccess; CONSOLE_SCREEN_BUFFER_INFO csbi; /* buffer info */ hConsole = holeoutput (); bSuccess = GetConsoleScreenBufferInfo( hConsole, &csbi ); return csbi.dwCursorPosition.Y ; // +1 weil geht von 0 weg } int wievielespalten ( ) // 1-(80) { HANDLE hConsole; BOOL bSuccess; CONSOLE_SCREEN_BUFFER_INFO csbi; /* buffer info */ hConsole = holeoutput (); bSuccess = GetConsoleScreenBufferInfo( hConsole, &csbi ); return csbi.dwSize.X ; } int wievielezeilen ( ) // 1-(25) { HANDLE hConsole; BOOL bSuccess; CONSOLE_SCREEN_BUFFER_INFO csbi; /* buffer info */ hConsole = holeoutput (); bSuccess = GetConsoleScreenBufferInfo( hConsole, &csbi ); return csbi.dwSize.Y ; } void textcolor (int farbcode ) // Zahl 0 - 15 als Farbcode { HANDLE hConsole; BOOL bSuccess; // WORD ForeColor; WORD BackColor; WORD wAttributesOld; CONSOLE_SCREEN_BUFFER_INFO csbi; /* buffer info */ hConsole = holeoutput (); bSuccess = GetConsoleScreenBufferInfo( hConsole, &csbi ); wAttributesOld = csbi.wAttributes; // ForeColor = wAttributesOld % 16; // die rechten 4 bits BackColor = (wAttributesOld >> 4) % 16; // die 4 bits davor if (farbcode < 0 || farbcode > 15) farbcode = 0; SetConsoleTextAttribute( hConsole, (WORD) ( (BackColor << 4) | (WORD) farbcode) ); } void textbackground (int farbcode ) // Zahl 0 - 15 als Farbcode { HANDLE hConsole; BOOL bSuccess; WORD ForeColor ; // WORD BackColor ; WORD wAttributesOld; CONSOLE_SCREEN_BUFFER_INFO csbi; /* buffer info */ hConsole = holeoutput (); bSuccess = GetConsoleScreenBufferInfo( hConsole, &csbi ); wAttributesOld = csbi.wAttributes; ForeColor = wAttributesOld % 16; // die rechten 4 bits //BackColor = (wAttributesOld >> 4) % 16; // die 4 bits davor if (farbcode < 0 || farbcode > 15) farbcode = 0; SetConsoleTextAttribute( hConsole, (WORD) ( (farbcode << 4) | ForeColor) ); } void cursorsichtbar (int code ) // 0=unsichtbar, 1 = sichtbar { HANDLE hConsole; BOOL bSuccess; CONSOLE_CURSOR_INFO cci; // enthält dwSize (0-100) und bVisible hConsole = holeoutput (); bSuccess = GetConsoleCursorInfo( hConsole, &cci ); cci.bVisible = code; SetConsoleCursorInfo( hConsole, &cci ); } void gotoxy ( int spalte, int zeile) { HANDLE hConsole; BOOL bSuccess; COORD coordScreen ; /* Schirmkoordinatenstruktur mit X Y */ CONSOLE_SCREEN_BUFFER_INFO csbi; /* buffer info */ hConsole = holeoutput (); bSuccess = GetConsoleScreenBufferInfo( hConsole, &csbi ); spalte = spalte - 1; // anpassen an 0 bis .. if (spalte >= csbi.dwSize.X) spalte = csbi.dwSize.X - 1 ; if (spalte < 0) spalte = 0 ; zeile = zeile - 1; if (zeile >= csbi.dwSize.Y) zeile = csbi.dwSize.Y -1 ; if (zeile <0) zeile = 0; coordScreen.X = spalte; coordScreen.Y = zeile; bSuccess = SetConsoleCursorPosition( hConsole, coordScreen ); } void delay(int msec) { // wartet die angegebenen millisekunden long ticks1; ticks1 = clock(); // clocks liefert Zeit seit Start des Rechners // in der Einheit 1/CLOCKS_PER_SEC Sekunde msec = msec * CLOCKS_PER_SEC / 1000; // anpassen an compilermass ticks1 = ticks1 + msec; while (ticks1 > clock ()); // haut die Zeit aufwendig tot } int random (int obergrenze) { static int gestartet = 0; if (gestartet == 0 ) // nur beim 1. Aufruf { srand( (unsigned)time( NULL ) ); // starte Zufallszahlenkette gestartet = 1; // mit laufender Sek-zeit } if (obergrenze > 0) // falls Obergrenze return rand() % obergrenze; // limitiere die Zufallszahl else return rand (); // sonst die ganze retour }
Headerfile.h:
/* Hier folgen einige Funktionen, die man beim Programmieren am Textbildschirm von Borland gewöhnt ist, aber im MS fehlen void clrscr () löscht den Schirm, positioniert Cursor links oben void gotoxy (int x, int y) positioniert Cursor auf angegebene Spalte(1-..), Zeile(1-..) int wherex () gibt zurück, wo auf welcher Spalte (1-..) gerade der Cursor steht int wherey () gibt zurück, wo auf welcher Zeile (1-..) gerade der Cursor steht int wievielezeilen () gibt zurück, wieviele Zeilen der Schirm gross ist (meist 25) int wievielespalten () gibt zurück, wieviele Spalten der Schirm gross ist (meist 80) void textcolor(int farbcode) setzte die Textfarbe für die nachfolgenden Ausgaben void textbackground(int farbcode) setzte die Hintergrundfarbe für die nachfolgenden Ausgaben void delay (millisekunden); wartet die angegebene Zeit (nur für kurzeZeiträume sinnvoll) int random (int obergrenze) liefert eine Zufallszahl im Wertebereich von 0 bis obergrenze - 1 */ /* was aus der conio.h ist brauchbar int getch() // liest ein Zeichen bzw. besser eine Taste von der Tastatur // Ist auf der Taste ein Zeichen, so erhält man den Ascii Code // bei Spezialtasten erhält man 0 oder E= - man muss dann noch // einmal lesen um einen Code für die jeweilige Spezialtaste // (Funktionstasten, Cursortasten) zu erhalten int kbhit () // hat der Benutzer auf eine Taste gedrückt ? // Wenn man mit getch liest, dann wartet getch bis der // Benutzer eine Taste drückt - in der Zwischenzeit // kann das Programm nichts tun. kbhit wartet nicht sondern // schaut nur nach ob einen Taste gedrückt ist. Wenn ja // kann das Programm mit getch lesen, wenn nein kann man // z.b. etwas ausgeben und später nochmal mit kbhit abfragen void putch(ascci-code) // gibt ein Zeichen aus, Vorteil gegenüber printf ist, dass mehr // ascii codes darstellbar sind. */ void clrscr (); // löscht den Schirm int wherex () ; // in welcher Spalte steht der Cursor (1-80) int wherey () ; // in welcher Zeile steht der Cursor (1-25) int wievielespalten (); // wieviele Spalten hat der Schirm 1-(80) int wievielezeilen (); // wieviele Zeilen hat der Schirm 1-(25) void textcolor (int farbcode); // setze Textfarbe auf Farbcode (0-15) void textbackground (int farbcode); // setze Hintergrundfarbe (0 - 15) void cursorsichtbar (int code); // 0=unsichtbar, 1 = sichtbar void gotoxy ( int spalte, int zeile); // setze Cursor auf Spalte, Zeile (1-..) void delay(int msec); // warte msec Millisekunden int random (int obergrenze); // hole eine Zufallszahl (0 bis obergrenze -1)
Es sind ein paar mehr funktionen...aber dabei ist auch das clrscr();...
-
das ist 100% kein iso c++...
frag mal die leute aus dem msvcc forum, oder aus dem konsolenforum. marc++us improved console könnte auch nützlich sein
-
Ich würde mal ganz krass sagen N E I N das ist definitiv K E I N I S O C + +
Das ist bestandteil der WinAPI!
-
Naja also wenn ihr euch nicht entscheiden könnt, wäre ich schon dankbar wenn mir jemand sagen könnte wie ich die header in mein project einfügen kann...da ich mich in der neuen Version nicht so gut auskenne...
In der 6.0 Version gings glaub ichnoch über project--> einfügen von datei oder so ...habs leider schon vergessen..
THX Soso