PDCurses getmaxxy 函数总是 returns 相同的值

PDCurses getmaxxy function always returns the same values

环境:

问题

PDCurses 提供了一个函数getmaxxy 来获取屏幕的最大x 和y 坐标。这个 returns 在启动时正确的值,但是如果我用鼠标调整 window 的大小然后再次调用 getmaxxy,我会得到相同的值。

这是 pdcurses 中的 bug/limitation 吗?是否有 windows 获取此信息的特定方法?

我也试过这个 windows 特定的解决方案,它也总是 returns 启动值:Getting terminal size in c for windows?

正在阅读源代码,

  • WINDOW_maxx_maxy成员仅在创建window(包括复制window)时设置。
  • stdscr 是一个 window

如果您调整了屏幕大小,那么您应该使用 resize_term(从 ncurses 改编的函数)将新大小告诉 PDCurses,例如,

resize_term(new_lines, new_cols);

重新创建了标准windows,例如stdscr

对于它的价值,PDCurses 提供了这些功能以与 ncurses 兼容:

只需检查 KEY_RESIZE,如果出现,请调用 resize_term(0, 0)。您可以在演示中看到几个这样的示例(在 testcurs、rain 和 worm 中)。如果您不检查键盘输入,可以使用 is_termresized()

resize_term() 实际上是两个不同的函数——以零作为参数,它响应用户启动的调整大小;对于非零值,它会尝试实际将 window 的大小调整为给定的大小。通常在给定平台上只有一个或另一个功能(或两者都不可用)。 SDL 允许两者。