我尝试了这种方法,但它不起作用 - getmaxyx
返回的值始终保持不变。
#!/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();
最佳答案
#!/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 ) {
sleep 2;
if ( $size_changed ) {
endwin();
refresh();
getmaxyx( $row, $col );
addstr( "new: $row - $col\n" );
$size_changed = 0;
}
}
sleep 3;
endwin();
^^^ 这对我有用。根据Writing Programs with NCURSES / Using NCURSES under XTERM你应该执行“endwin() 后跟刷新()”
关于perl - 如何使用 Curses 从调整大小的窗口中获取窗口大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9769723/