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