如何使用 Curses 从调整大小的窗口获取窗口大小? [英] How to get with Curses the window-size from a resized window?
本文介绍了如何使用 Curses 从调整大小的窗口获取窗口大小?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我以这种方式尝试过,但它不起作用 - getmaxyx
的返回值始终保持不变.
I tried it this way, but it doesn't work - the returned values from getmaxyx
remain always the same.
#!/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() 后跟刷新()"
^^^ this worked for me. according to Writing Programs with NCURSES / Using NCURSES under XTERM you are suppose to do "endwin() followed by an refresh()"
这篇关于如何使用 Curses 从调整大小的窗口获取窗口大小?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文