Ezen funkció eléréséhez is a Kernel32.dll függvényeire lesz szükségünk, így ezeket külsőként deklaráljuk a Win32 osztályunkban. A SetConsoleCursorPosition függvény segítségével tudjuk a kurzor pozícióját beállítani. Első paraméterben a konzol azonosítóját, másodikban a kurzor pozíciót kell megadnunk.
Szükségünk lesz még a GetConsoleScreenBufferInfo függvényre is, mellyel lekérdezhetjük a konzol ablak méretét.
Készítünk egy MoveCursor nevű függvényt, mely képes a konzol ablakban, a paramétereiben megadott x, y koordinátára állítani a kurzort.
Ehhez elsőként lekérdezzük az ablak méreteit, hogy megtudjuk mekkora lehet a legnagyobb x és y koordináta.
public static void MoveCursor(int x, int y)
{
CONSOLE_SCREEN_BUFFER_INFO strConsoleInfo = new CONSOLE_SCREEN_BUFFER_INFO();
GetConsoleScreenBufferInfo(hStdConsoleOutput, ref strConsoleInfo);
A beállítás előtt ellenőrizzük, hogy a kért x, y koordináta még belül van-e az ablakban, hiszen csak ekkor van értelme a beállításnak.
if (!(x >= strConsoleInfo.dwSize.x || x < 0 || y >= strConsoleInfo.dwSize.y || y < 0))
{
Ha ez a feltétel sikerül, akkor már csak a SetConsoleCursorPosition függvényt kell meghívnunk átadva a szükséges x, y koordinátát.
COORD Location;
Location.x = (short)x;
Location.y = (short)y;
SetConsoleCursorPosition(hStdConsoleOutput, Location);
}
}
Készítünk még egy WriteAt nevű függvényt is, mellyel egy megadott x, y koordinátára tudunk szöveget írni. Ehhez a már meglévő MoveCursor függvényünket használjuk fel és a Consol osztály Write függvényét.
public static void WriteAt(int x, int y, string text)
{
MoveCursor(x, y);
Console.Write(text);
}