1
私はこの方法で試してみましたが、動作しません。getmaxyx
の戻り値は常に同じです。リサイズされたウィンドウからウィンドウサイズを取得するには?
libcurses
は、ウィンドウのサイズが変更された可能性がある場合を検出するためにそれを使用したいとしているので、あなたの問題は、あなたが
$SIG{WINCH}
を破ったということだと思います最初の推測では、
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。 –
あなたと 'Curses'が' SIGWINCH'ハンドラを共有できる方法については、['Signals :: XSIG'](http://search.cpan.org/perldoc?Signals::XSIG)も参照してください。 – mob
サイズ変更イベントを検出する標準的な方法は、 'getch'から仮想' KEY_RESIZE'イベントを監視することです。しかし、あなたはどんなキーストロークも読んでいません。 – cjm