Ncurses:如何在不丢失当前位置的情况下刷新菜单?

Ncurses: how to refresh a menu without losing current position?

如何在不丢失当前位置的情况下重新加载菜单中的数据?

例如,当用户 "selects" 一个项目并执行更改数据的操作时。 (更新项目、删除项目或向菜单添加新项目。)我想重新加载菜单,但仍将光标保持在刚刚选择的项目上。执行此操作的最佳方法是什么?


作为参考,这个问题看起来很接近,但我认为它没有涵盖 add/remove 问题:How to replace a string menu item in ncurses & C

这个问题看起来也很相似,但对我来说太具体了:Ncurses menu - remembering selection

如果您重建菜单,您的程序将必须跟踪之前的 "current" 项目,并在通过 getch 恢复读取之前找到它。 getch 函数刷新屏幕,您的程序为 getch 设置的位置成为明显的光标位置。

通常您会使用 item_index 询问菜单库当前项目是什么,并使用 set_current_item 告诉菜单库光标将位于哪个项目上,但也可以这样做您在屏幕上对 getch "anywhere" 的调用。同样,如果您重建菜单,该索引信息可能会过时。

没有一些具体的示例程序,只能提供一般性的建议。