gpt4 book ai didi

c++ - 如何重绘 ncurses 菜单

转载 作者:行者123 更新时间:2023-11-30 17:04:13 30 4
gpt4 key购买 nike

我正在开发一个基于 ncurses 的工具,该工具有 4 个平铺窗口,屏幕底部有一个命令栏。窗口形成一个 2x2 网格,如下所示:

+----+----------------+
| 1 | 2 |
+----+----------------+
| 3 | 4 |
| | |
| | |
| | |
+----+----------------+

左上角的大小是固定的,因此当应用程序调整大小时,宽度会发生 2 次变化,高度会发生 3 次变化,双向会发生 4 次变化。

我的重绘代码工作得很好,直到我开始在窗口 4 中放置菜单(使用 menu.h)。现在,如果我将窗口大小调整得太小,部分菜单将被切断,但是当您制作窗口时再次变大,它不会重新绘制被删除的内容。在重绘代码中执行 post_menu() 不会重绘它。

重新绘制菜单的正确方法是什么?我是否每次都必须丢弃它并从头开始重新创建它?我的代码中确实有逻辑,仅在必要时重新绘制(数据更改、窗口大小调整等),因此不会无缘无故地在每个周期创建一个新菜单,但这仍然看起来有点笨拙。必须有一种简单的方法来重新绘制您已经创建的菜单。它是什么?

最佳答案

重新创建结构是最简单的方法。

表单和菜单库使用您键入的键的抽象。该抽象不包括调整大小功能。

可以为菜单中的每个窗口运行wresize,例如menu.h中的这些行

  WINDOW        *win;                   /* Window containing menu          */
WINDOW *sub; /* Subwindow for menu display */
WINDOW *userwin; /* User's window */
WINDOW *usersub; /* User's subwindow */

但是要实现这一点需要对库进行一些研究。 ncurses-examples 中有一个调整表单大小的示例(名为cardfile),但没有类似的菜单示例

进一步阅读:

关于c++ - 如何重绘 ncurses 菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35898431/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com