gpt4 book ai didi

c - C 控制台底部的输入栏

转载 作者:太空狗 更新时间:2023-10-29 16:28:40 26 4
gpt4 key购买 nike

窗口底部

一些应用程序如 vim、mutt、aptitude 包含

  • 用于输出的顶部窗口部分和
  • 用于用户输入或状态显示的底部部分。

(假设有一个子进程输出,另一个子进程接收用户输入。目的是允许在您键入输入或查看状态的同时更新输出。)

Actions  Undo  Package  Resolver  Search  Options  Views  Help
C-T: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs



|
|
|
|
|
┌─────────────┐ |
│Loading cache│ |
└─────────────┘ |
|
|
|
|
|
|
|
--------------------------------------------------------------------------- |
Initialising package states 100% |

+-------------------------------------------------------+
| some output here |
| |
| |
| |
| |
| |
|-------------------------------------------------------+
|:input here |
+-------------------------------------------------------+

Ncurses tutorial不提这个显然是可能的。

在 StackOverflow 或网络搜索引擎上查询“c print to {window,screen,terminal,console} bottom”没有帮助。

这可以用 C 编程方式完成吗?

丢弃输入

虽然下面的一些解决方案可以将角色移动到给定位置,但存在一个问题,即可能需要丢弃用户输入而不是将其留在屏幕上。与 vim 的情况一样,键入“:w”并按 Enter 不会在屏幕上留下“:w”。

更新。这是在这里找到的:How to delete text after getstr() c++ ncurses

窗口焦点——问题中 Unresolved 部分

当您在窗口底部输入内容并且顶部的文本发生变化时,我们看到将焦点移回底部的问题。截至 12 月 29 日,解决方案中没有这一点。


更新 1. 只是尝试

  • 记住之前的光标位置,然后
  • 显示输出,然后
  • 恢复原状

不是一个简单的解决方案:因为这些是不同的进程,尝试检索光标位置不会影响其他进程执行期间发生的更改。

例如,如果父项接受输入,则子项不知道光标位置如何变化,并且在控制台的另一部分执行一行输出后无法恢复光标位置。

实现这个将涉及一些进程间通信,如果有其他解决方案,它们可能是更可取的。

相关

最佳答案

使用标准库,没有办法做到这一点;正如您已经建议的那样,使用 ncurses 很容易;我想this tutorial很好地解释了它。

关于c - C 控制台底部的输入栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8667194/

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