Функция 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:

Просто проверьте на KEY_RESIZEи, если это произойдет, позвоните resize_term(0, 0), Вы можете увидеть несколько примеров этого в демоверсиях (в testcurs, rain и worm). is_termresized() может использоваться, если вы не проверяете ввод с клавиатуры.

resize_term() фактически это две разные функции - с нулями в качестве параметров, он реагирует на изменение размера, инициированное пользователем; с ненулевыми значениями он пытается реально изменить размер окна до заданного размера. Как правило, только одна или другая возможность (или ни одна) доступна на данной платформе. SDL позволяет оба.

Другие вопросы по тегам