【发布时间】:2021-04-25 23:10:27
【问题描述】:
我正在为 C++ 开发一个 TUI(文本用户界面)库,并且我有一个用于检测控制台窗口大小的函数。我是否可以检测到窗口调整大小?如果它可以与任何终端模拟器一起使用,我会更喜欢,但如果重要的话,我使用的是 Ubuntu Budgie 20.10,而我的终端模拟器是 Tilix。
【问题讨论】:
我正在为 C++ 开发一个 TUI(文本用户界面)库,并且我有一个用于检测控制台窗口大小的函数。我是否可以检测到窗口调整大小?如果它可以与任何终端模拟器一起使用,我会更喜欢,但如果重要的话,我使用的是 Ubuntu Budgie 20.10,而我的终端模拟器是 Tilix。
【问题讨论】:
您可以set up a signal handler for the SIGWINCH signal,只要终端大小发生变化,您就会收到此信号。请注意,与所有信号处理程序一样,信号处理程序中的任何代码都必须是信号安全的。
如果你使用curses库,你会得到一个KEY_RESIZE键,然后检查COLS和LINES。
【讨论】:
我通过不断检查屏幕尺寸找到了一种方法。如果屏幕尺寸发生变化,则会记录下来并重新绘制屏幕。
【讨论】: