Книга: Разработка приложений в среде Linux. Второе издание
16.5.2. Размеры окна
16.5.2. Размеры окна
Существуют два запроса ioctl()
, которые, к сожалению, не были закодированы как часть интерфейса termios
, хотя и должны были. Размер tty, измеряемый строками и столбцами, должен управляться tcgetwinsize()
и tcsetwinsize()
, но, поскольку они не существуют, вместо этого следует использовать ioctl()
. Для запроса текущего размера и установки нового размера применяйте структуру struct winsize
.
#include <termios.h>
struct winsize {
unsigned short ws_row; /* количество строк */
unsigned short ws_col; /* количество столбцов */
unsigned short ws_xpixel; /* не используется */
unsigned short ws_ypixel; /* не используется */
};
Для запроса текущего размера используйте следующий вызов:
struct winsize ws;
ioctl(fd, TIOCGWINSZ, &ws);
Для установки нового размера заполните struct winsize
и предусмотрите такой вызов:
ioctl(fd, TIOCSWINSZ, &ws);
В конце этой главы представлен пример условий, при которых возникает потребность в установке нового размера окна.
При изменении размеров окна лидеру группы процессов переднего плана на данном tty передается сигнал SIGWINCH
. Ваш код может перехватить этот сигнал; используйте TIOCGWINSZ
для запроса нового размера и внесите в свою программу все необходимые изменения.
- Работа с окнами
- 8.2.2. Основные элементы окна Paint
- Перемещение по диалоговым окнам
- Перемещать файлы удобнее, если запустить два экземпляра Проводника и разместить их окна бок о бок. Можно ли это делать а...
- Я случайно удалил ярлык Свернуть все окна с панели быстрого запуска. Как вернуть его обратно?
- Прячемся от любопытных – быстро сворачиваем все открытые окна
- 9.5.5. Борьба с баннерами и всплывающими окнами
- Урок 1.3. Контекстное меню и диалоговые окна
- Урок 2.4. Окна папок
- Диалоговые окна
- Эффекты переключения между окнами
- Практическая работа 12. Работа с окнами папок