diff --git a/src/ftxui/screen/terminal.cpp b/src/ftxui/screen/terminal.cpp index 9bbcc07..1505710 100644 --- a/src/ftxui/screen/terminal.cpp +++ b/src/ftxui/screen/terminal.cpp @@ -1,16 +1,31 @@ #include "ftxui/screen/terminal.hpp" #include + +#ifdef WIN32 +#define WIN32_LEAN_AND_MEAN +#define NOMINMAX +#include +#else #include #include +#endif #include namespace ftxui { Terminal::Dimensions Terminal::Size() { -#ifdef __EMSCRIPTEN__ +#if defined(__EMSCRIPTEN__) return Dimensions{80, 43}; +#elif defined(WIN32) + CONSOLE_SCREEN_BUFFER_INFO csbi; + int columns, rows; + + GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi); + columns = csbi.srWindow.Right - csbi.srWindow.Left + 1; + rows = csbi.srWindow.Bottom - csbi.srWindow.Top + 1; + return Dimensions{columns, rows}; #else winsize w; ioctl(STDOUT_FILENO, TIOCGWINSZ, &w);