1
我试过这种方式,但它不起作用 - 从getmaxyx
返回的值始终保持不变。如何使用Curses从调整大小的窗口获取窗口大小?
#!/usr/bin/env perl
use warnings;
use 5.012;
use Curses;
my $size_changed = 0;
$SIG{'WINCH'} = sub { $size_changed= 1; };
initscr();
my ($row, $col);
getmaxyx($row, $col);
addstr("begin: $row - $col\n");
refresh();
for (0 .. 19) {
addstr("-------------\n");
if ($size_changed) {
getmaxyx($row, $col);
addstr("new: $row - $col\n");
$size_changed = 0;
}
refresh();
sleep 1;
}
sleep 3;
endwin();
作为一个解决方法,而不是使用'$ SIG {WINCH}'我比较每一次在一个循环中旧的max_rows/max_cols与新MAX_ROWS/MAX_COLS。 – 2012-03-19 17:12:24
另请参见['Signals :: XSIG'](http://search.cpan.org/perldoc?Signals::XSIG),以便您和Curses可以共享SIGWINCH处理程序。 – mob 2012-03-19 18:57:09
检测调整大小事件的标准方法是从'getch'观察虚拟'KEY_RESIZE'事件。但是你没有阅读任何按键。 – cjm 2012-03-19 19:09:50