public Kernel32ConsoleWindow(int width, int height, string title, ushort colors = Kernel32Console.DefaultColors.Background.BLACK | Kernel32Console.DefaultColors.Foreground.WHITE)
        {
            Width           = width;
            Height          = height;
            Title           = title;
            stdOutputHandle = Kernel32Console.GetStdHandle(Kernel32Console.Constants.STD_OUTPUT_HANDLE);

            consoleScreenBufferSizeCoords  = new Kernel32Console.COORD(Width, Height);
            consoleScreenBufferStartCoords = new Kernel32Console.COORD(0, 0);
            consoleScreenSizeRect          = new Kernel32Console.SMALL_RECT(0, 0, Width, Height);

            consoleScreenBufferInfoEx = Kernel32Console.CONSOLE_SCREEN_BUFFER_INFO_EX.Create();
            Kernel32Console.GetConsoleScreenBufferInfoEx(stdOutputHandle, ref consoleScreenBufferInfoEx);

            consoleScreenBufferInfoEx.dwSize               = consoleScreenBufferSizeCoords;
            consoleScreenBufferInfoEx.dwCursorPosition     = new Kernel32Console.COORD(0, 0);
            consoleScreenBufferInfoEx.srWindow             = consoleScreenSizeRect;
            consoleScreenBufferInfoEx.bFullscreenSupported = false;

            Kernel32Console.SetConsoleScreenBufferInfoEx(stdOutputHandle, ref consoleScreenBufferInfoEx);

            consoleScreenBuffer = new Kernel32Console.CHAR_INFO[Width * Height];
            var emptyChar = new Kernel32Console.CHAR_INFO(new Kernel32Console.CHAR_UNION(' '), colors);

            for (var i = 0; i < width * height; i++)
            {
                consoleScreenBuffer[i] = emptyChar;
            }

            Update();
        }
 public void SetCursor(int x, int y)
 {
     Kernel32Console.SetConsoleCursorPosition(stdOutputHandle, new Kernel32Console.COORD(x, y));
 }
 public void ShowCursor(bool showCursor)
 {
     Kernel32Console.ShowCursor(showCursor);
 }
 public void Update()
 {
     Kernel32Console.WriteConsoleOutput(stdOutputHandle, consoleScreenBuffer, consoleScreenBufferSizeCoords, consoleScreenBufferStartCoords, ref consoleScreenSizeRect);
 }