Как узнать ширину терминала и высоту приложения ncurses?
void getmaxyx(WINDOW *win, int y, int x); я верю ...
void getmaxyx(WINDOW *win, int y, int x);
также, это может помочь ...
Получение ширины терминала в C?
ncurses-приложения обычно обрабатывают SIGWINCH и используют ioctl с TIOCGWINSZ, чтобы получить представление системы о размере экрана. Это может быть переопределено переменными среды LINES и COLUMNS (см. use_env).
SIGWINCH
ioctl
TIOCGWINSZ
LINES
COLUMNS
use_env
Учитывая, что глобальные переменные ncurses LINES и COLS обновляются как побочный эффект, когда wgetch возвращает KEY_RESIZE (в ответ на SIGWINCH), чтобы задать размер stdscr (стандартный экран, представляющий весь терминал).
COLS
wgetch
KEY_RESIZE
stdscr
Вы, конечно, можете использовать getmaxx, getmaxy и getmaxyx, чтобы получить один или оба ограничения для x- и ординаты окна. Только последний является стандартным (и переносным).
getmaxx
getmaxy
getmaxyx
Дополнительное чтение:
is_term_resized
resize_term
resizeterm
Я использую этот код:
struct winsize size; if (ioctl(0, TIOCGWINSZ, (char *) &size) < 0) printf("TIOCGWINSZ error"); printf("%d rows, %d columns\n", size.ws_row, size.ws_col);
переменные COLS, LINES инициализируются до размеров экрана после initscr ().
Источник: NCURSES Программирование HOWTO
Я не уверен, обновляются ли они при изменении размера.
Как насчет использования SCR_H и SCR_W?
SCR_H
SCR_W