如果我使用 newterm() 而不是 initscr(),如何更新 LINES 和 COLS?

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

使用 initscr() (创建了 stdscr)迁移我现有的代码.. ..使用 newterm() 进行多显示器使用。

我从未使用过 stdscr,但在它上面创建了其他 WINDOW。

问题只是交换函数意味着我不再有 stdscr 并且似乎无法找到更新 LINE 和 COLS 的方法。

我需要它们来构建其他 WINDOW 对象,这些对象在发生 keyresize 时不会正确重叠和收缩。

有什么想法吗?

linux ncurses
1个回答
0
投票

newterm
(就像
initscr
)设置全局值
stdscr
curscr
。 但这些只是指针。
newterm
的返回值是一个
SCREEN
指针(也是不透明的),您可以使用
set_term
在使用
newterm
初始化的屏幕之间切换。 当您切换屏幕时,
stdscr
curscr
的指针会更新。

LINES
COLS
也是特定于屏幕的全局值。更改
LINES
COLS
对curses库的内部行为影响很小。 这些全局值可供应用程序使用(或使用库函数进行修改)。 直接修改是不行的。

使用

wresize
更改现有窗口的大小。

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