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" 的调用。同样,如果您重建菜单,该索引信息可能会过时。
没有一些具体的示例程序,只能提供一般性的建议。
如何在不丢失当前位置的情况下重新加载菜单中的数据?
例如,当用户 "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" 的调用。同样,如果您重建菜单,该索引信息可能会过时。
没有一些具体的示例程序,只能提供一般性的建议。