1

环境:

  • PDCurses 最新版本
  • 视窗 10
  • 视觉工作室 2015 更新 2

问题

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

这是 pdcurses 中的错误/限制吗?是否有特定于 Windows 的方法来获取此信息?

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

4

2 回答 2

2

阅读源码,

  • 和成员仅在创建窗口时设置(包括复制窗口)_maxx_maxyWINDOW
  • stdscr是一个窗口

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

resize_term(new_lines, new_cols);

并重新创建标准窗口,例如stdscr.

值得一提的是,PDCurses 提供了这些功能以与 ncurses 兼容:

于 2016-05-28T00:46:28.343 回答
1

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

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

于 2016-05-28T04:08:09.500 回答