Fragen zu Improved Console



  • Hallo
    Ich hätte noch 2 Fragen zu Improved Console:

    1. Ist es möglich nur Teile der Konsole zu löschen (clear) also mit Angaben der 2 Positionen zB und dazwischen wird dann gelöscht.
    2. Wie kann ich die Konsole wieder "markieren". Wenn ich con.hide(); con.show(); mache ist Konsole danach nicht mehr markiert und um eingaben zu machen muss sie erst wieder mit der Maus ausgewählt werden...con.restore funktioniert leider nicht.

    Danke für eure Hilfe
    Gruß Zaus



    Ich kenne keine Funktion, die das übernimmt...

    Schreibe dir eine Funktion, die den Bereich mit Leerzeichen füllt...

    Sieht ungefähr so aus (habs ausm Kopf ohne Garantie geschrieben^^):

    void clearEx(int x, int y, int w, int h)
    {
        //Jede Zeile durchlaufen
        for(int iy = y; iy < y+h; iy++)
        {
            // An Position springen
            gotoxy(x, iy);
    
            //Jede Spalte durchlaufen
            for(int ix = x; ix < x+w; ix++)
            {
                // Leerzeichen ausgeben
                cout << " ";
            }
        } 
    }
    

    Mit GetConsoleWindow() kannst du das Handle der Konsole herausfinden. Mit SetFocus() kannst du einem Fenster/Control den Fokus geben.

    SetFocus(GetConsoleWindow());
    


  • Das sieht mir sehr unperformant aus. Die IC unterstützt das so leider noch nicht, du kannst aber direkt die WinAPI verwenden. Mit FillConsoleOutputCharacter() wirst du das erledigen können (musst du allerdings für jede Zeile deines Rechtecks aufrufen).

    Warum wird dir beim Studieren von http://msdn.microsoft.com/en-us/library/ms682663(VS.85).aspx gleich auffallen 🙂

    MfG SideWinder



  • Das Löschen hab ich hinbekommen, das mit dem Fokus allerdings nicht.
    Weder

    SetFocus(GetConsoleWindow());
    

    noch

    ShowWindow(GetConsoleWindow(), SW_SHOW)
    

    haben etwas bewirkt.



  • Zaus schrieb:

    Das Löschen hab ich hinbekommen, das mit dem Fokus allerdings nicht.
    Weder

    SetFocus(GetConsoleWindow());
    

    noch

    ShowWindow(GetConsoleWindow(), SW_SHOW)
    

    haben etwas bewirkt.

    Möchtest du dich nicht eventuell bedanken?



  • Samyboy schrieb:

    Möchtest du dich nicht eventuell bedanken?

    Vielen Dank, hast mir sehr geholfen, desweiteren darfst du gerne einen Blick ins Ausgangsposting werfen.
    Wäre nett, wenn noch jemand ne Idee hätte wie ich die Konsole wieder markieren und in den Vordergrund holen kann.


Anmelden zum Antworten