У меня есть программа ncurses с несколькими дочерними окнами, действующими как столбцы. Каждое дочернее окно имеет фиксированную ширину и высоту окна родительского терминала.
Однако я обнаружил, что если ширина терминала уменьшается, то одно из окон теряет свою фиксированную ширину и, кажется, «переполняет» свои ранее установленные границы, используя всю оставшуюся ширину терминала.
Это сложно объяснить, поэтому я сделал небольшой гиф, показывающий проблему:
![pls help](https://i.stack.imgur.com/28ico.gif)
Это код, который я использовал для вышеупомянутого:
#include <ncurses.h>
int main() {
WINDOW * winA, * winB;
int i = 0, width = 30;
initscr();
// Suppress stdout
noecho();
// Enable keypad
keypad(stdscr, true);
// interrupt, quit, suspend, and flow control characters are all passed through uninterpreted
raw();
winA = newwin(0, width, 0, 0);
winB = newwin(0, width, 0, width);
timeout(50);
while(getch() != 'q') {
i = width * getmaxy(stdscr);
werase(winA);
werase(winB);
while (i--) {
waddstr(winA, "0");
waddstr(winB, "1");
}
wnoutrefresh(stdscr);
wnoutrefresh(winA);
wnoutrefresh(winB);
doupdate();
}
endwin();
return 0;
}
Вот еще один скриншот, показывающий проблему в моей настоящей программе. Терминал слева правильный, тот, что справа показывает результат после изменения размера окна и вызова этой проблемы:
![enter image description here](https://i.stack.imgur.com/HMfc1.png)
Как я могу предотвратить потерю окон фиксированной ширины при изменении размера терминала на небольшую ширину?