próbuję obsłużyć sygnał zmiany rozmiaru (SIGWINCH)Nie można określić końcową wielkość z ncurses
void Server::resizeSignalHandler(int a)
{
signal(SIGWINCH, SIG_IGN);
endwin();
initscr();
refresh();
clear();
int x,y;
getmaxyx(stdscr, y, x);
wmove(upScreen, 0, 0);
wmove(downScreen, y/2, 0);
wresize(upScreen, y/2, x);
wresize(downScreen, y/2, x);
wclear(upScreen);
wclear(downScreen);
waddstr(upScreen, "test1");
waddstr(downScreen, "test2");
wrefresh(upScreen);
wrefresh(downScreen);
refresh();
signal(SIGWINCH, Server::resizeSignalHandler);
}
Server::Server()
{
//ncurses screen initialization
initscr();
if (!upScreen) {
upScreen = newwin(0, 0, 1, 1);
}
if (!downScreen) {
downScreen = newwin(0, 0, 1, 1);
}
//adjusting screen when user resize terminal
signal(SIGWINCH, Server::resizeSignalHandler);
//configuring screens
Server::resizeSignalHandler(0);
waddstr(Server::upScreen, "lalfasdfsafd as");
waddstr(downScreen, "supreme!");
wrefresh(Server::upScreen);
wrefresh(downScreen);
}
Kiedy debugowania tego kodu, w resizeSignalHandler var x, y były zawsze takie same (wielkość nie uległa zmianie). Próbowałem również określić rozmiar za pomocą ioctl, ale nic się nie zmieniło.
zorientowali się, że wiele osób przede mną miał ten problem http://www.mail-archive.com/[email protected]/msg11253.html Czasem rozwiązał ten (Zmiana/etc/profile; O (sic!)), Ale czasami nie. Czy istnieje alternatywa dla terminalu mac os x, może ncurses jest dedykowany dla xterm i podobnych.
Można dokonać OSX termin zachowuje się jak xterm więc to nie jest problem. Czy naprawdę testujesz w terminalu lub w fałszywym terminie XCode? – Geoffroy
Nie można go przetestować w xcode. W terminalu. – badeleux