Функция getmaxxy PDCurses всегда возвращает одинаковые значения
Среда:
- PDCurses последняя версия
- Windows 10
- Visual Studio 2015, обновление 2
проблема
PDCurses предоставляет функцию getmaxxy
чтобы получить максимальные x и y координаты экрана. Это возвращает правильные значения при запуске, но если я изменю размер окна с помощью мыши, а затем вызову getmaxxy
я снова получаю те же значения.
Это ошибка / ограничение в pdcurses? Есть ли конкретный способ для Windows получить эту информацию?
Я также пробовал это решение для Windows, и он всегда возвращает значения запуска: Получение размера терминала в c для Windows?
2 ответа
Читая источник,
_maxx
а также_maxy
ЧленыWINDOW
устанавливаются только при создании окна (включая дублирование окна).stdscr
это окно
Если вы изменили размер экрана, то вы должны сообщить PDCurses о новом размере, используя resize_term
(функция адаптирована из ncurses), например,
resize_term(new_lines, new_cols);
и это воссоздает стандартные окна, такие как stdscr
,
Для чего стоит PDCurses предоставляет следующие функции для совместимости с ncurses:
- curses_version
- is_termresized (должен был быть is_term_resized)
- resize_term
- wresize
Просто проверьте на KEY_RESIZE
и, если это произойдет, позвоните resize_term(0, 0)
, Вы можете увидеть несколько примеров этого в демоверсиях (в testcurs, rain и worm). is_termresized()
может использоваться, если вы не проверяете ввод с клавиатуры.
resize_term()
фактически это две разные функции - с нулями в качестве параметров, он реагирует на изменение размера, инициированное пользователем; с ненулевыми значениями он пытается реально изменить размер окна до заданного размера. Как правило, только одна или другая возможность (или ни одна) доступна на данной платформе. SDL позволяет оба.