21

如何找到 ncurses 应用程序的终端宽度和高度?

4

5 回答 5

25

void getmaxyx(WINDOW *win, int y, int x);我相信...

另外,这可能会有所帮助...

在C中获取终端宽度?

于 2009-11-28T08:19:46.317 回答
14

ncurses 应用程序通常处理SIGWINCH和使用ioctlwithTIOCGWINSZ来获取系统的屏幕尺寸概念。这可能会被环境变量LINESCOLUMNS(参见参考资料use_env)覆盖。

鉴于此, ncurses 全局变量LINES并在返回COLS时作为副作用更新(响应 a )以给出(代表整个终端的标准屏幕)的大小。wgetchKEY_RESIZESIGWINCHstdscr

您当然可以使用getmaxx,getmaxygetmaxyx来获得窗口 x 和 y 坐标的一个或两个限制。只有最后一个是标准的(和便携式的)。

进一步阅读:

于 2016-07-23T00:32:02.900 回答
2

我正在使用这段代码:

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);
于 2014-04-07T08:59:16.110 回答
1

使用SCR_Hand怎么样SCR_W

于 2009-11-28T10:26:28.197 回答
1

在 initscr() 之后,变量 COLS、LINES 被初始化为屏幕尺寸。

资料来源:NCURSES Programming HOWTO

我不确定他们是否会在调整大小时得到更新。

于 2016-07-27T15:41:37.950 回答