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

时间:2015-12-24 08:16:10

标签: c ruby menu ncurses user-interaction

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

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

作为参考,此问题似乎非常接近,但我认为它不包含添加/删除问题:How to replace a string menu item in ncurses & C

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

1 个答案:

答案 0 :(得分:3)

如果您重建菜单,您的程序必须先跟踪“当前”项目的内容,并在通过getch恢复其读取之前找到该项目。 getch函数刷新屏幕,程序为getch设置的位置成为明显的光标位置。

通常你会使用item_index询问当前项目的菜单库,set_current_item告诉菜单库光标所在的项目,但是可以进行调用到屏幕上的getch“任意位置”。同样,如果重建菜单,则索引信息可能过时。

如果没有一些特定的样本程序,只能提供一般建议。