C# - Konzol ablak tartalmának törlése

Konzol alkalmazások 4. rész

forráskód letöltése
Sorozatunk mostani részében egy olyan funkciót készítünk el, melyet felhasználva képesek leszünk arra, hogy a konzol ablak teljes területét egyetlen függvényhívással töröljük.
A törlést a FillConsoleOutputCharacter függvény felhasználásával végezzük el, mely képes arra, hogy egy megadott koordinátától kiindulva egy karaktert kiír annyiszor, amekkora számot megadunk.
A törléshez létrehozunk egy Clear nevű függvényt.
    public static void Clear()
    {
      int i = 0;
      COORD c;    
      c.x = 0;
      c.y = 0;      
      CONSOLE_SCREEN_BUFFER_INFO strConsoleInfo = new CONSOLE_SCREEN_BUFFER_INFO();
Első lépésként le kell kérdeznünk a konzol ablak méretét a GetConsoleScreenBufferInfo függvénnyel.
      GetConsoleScreenBufferInfo(hStdConsoleOutput, ref strConsoleInfo); 
Majd ezek után elvégezhetjük a törlést. Első paraméterként a konzol ablak azonosítóját, másodikként a kiírandó karaktert (mely a szóköz ASCII kódja), harmadikként az ismétlés számát (melyet a konzol ablak szélességéből és magasságából számítjuk, hogy a teljes ablak törölve legyen), negyedikként a kezdő koordinátát kell megadnunk. Végül az ötödik paraméter egy változó, melybe azt a számot kapjuk vissza, hogy ténylegesen hány karakter került kiírásra.
      FillConsoleOutputCharacter(hStdConsoleOutput, 32, strConsoleInfo.dwSize.x * strConsoleInfo.dwSize.y, c, ref i);
Következő lépésként a konzol ablak minden karakterére be kell állítanunk egy attribútumot is, mellyel az esetleges szín beállításokat törölhetjük. Ehhez a FillConsoleOutputAttribute függvényt használjuk, melynek paraméterezése megegyezik az előzővel, annyi különbséggel, hogy a második paraméterben kell megadnunk a beállítandó szín attribútumot, mely a törlés miatt most nulla lesz.
      FillConsoleOutputAttribute(hStdConsoleOutput, 0, strConsoleInfo.dwSize.x * strConsoleInfo.dwSize.y, c, ref i);    
Legvégső lépésként a kurzort a konzol ablak bal felső sarkába állítjuk.
      SetConsoleCursorPosition(hStdConsoleOutput, c);
    }

Konzol alkalmazások cikksorozat