이 방법으로 시도했지만 작동하지 않습니다. 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