PDCurses getmaxxy函数始终返回相同的值

时间:2016-05-27 18:00:55

标签: c++ console ncurses pdcurses

环境:

  • PDCurses最新版本
  • Windows 10
  • Visual Studio 2015 Update 2

问题

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

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

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

2 个答案:

答案 0 :(得分:2)

阅读来源,

  • 仅在创建窗口时设置_maxx的{​​{1}}和_maxy成员(包括复制窗口)。
  • WINDOW是一个窗口

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

resize_term

重新创建标准窗口,例如resize_term(new_lines, new_cols);

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

答案 1 :(得分:1)

只需检查view.php,如果发生,请致电KEY_RESIZE。你可以在演示中看到几个这样的例子(在testcurs,rain和worm中)。如果您没有检查键盘输入,可以使用resize_term(0, 0)

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