ncurses 终端尺寸

问题描述 投票:0回答:6

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

c ncurses
6个回答
28
投票

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

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

在C中获取终端宽度?


17
投票

ncurses 应用程序通常处理

SIGWINCH
并使用
ioctl
TIOCGWINSZ
来获取系统的屏幕尺寸概念。 这可能会被环境变量
LINES
COLUMNS
覆盖(请参阅
use_env
)。

鉴于此,当 LINES

 返回 
COLS(响应 wgetch
)时,ncurses 全局变量 
KEY_RESIZE
SIGWINCH
 会作为副作用进行更新,以给出 
stdscr 的大小
(代表整个的标准屏幕终端)。

您当然可以使用

getmaxx
getmaxy
getmaxyx
来获取窗口 x 和 y 坐标的一个或两个限制。 只有最后一个是标准的(并且是便携式的)。

进一步阅读:


3
投票

我正在使用此代码:

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);

1
投票

使用

SCR_H
SCR_W
怎么样?


1
投票

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

来源:NCURSES 编程指南

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


0
投票

来自 ncurses 文档

9.4。示例中的其他内容

您还可以在上面的示例中看到,我使用了变量 COLS、LINES,它们在 initscr() 之后初始化为屏幕尺寸。它们对于查找屏幕尺寸和查找屏幕的中心坐标非常有用,如上所述。 getch() 函数照常从键盘获取按键,并根据按键执行相应的工作。这种类型的 switch-case 在任何基于 GUI 的程序中都很常见。

宏会在窗口大小调整时自动更新,因此您无需调用

refersh()

© www.soinside.com 2019 - 2024. All rights reserved.