(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


Anmelden zum Antworten