【问题标题】:Move text cursor to lines that are not visible in screen using C++使用 C++ 将文本光标移动到屏幕上不可见的行
【发布时间】:2020-09-09 17:19:45
【问题描述】:

我目前正在编写一个运行优化例程的 C++ 控制台应用程序。它并行运行多个进程,并且由于需要几个小时才能完成,所以我创建了一种监视器来跟踪进程的演变。我通过在屏幕上打印表格来实现这一点,每次更改流程步骤时,文本光标都会移动到与该流程相关的行,并且较旧的文本会被较新的文本覆盖。 为了在表格行中移动,我使用“\n”将文本光标向下移动一行,使用 ESC 字符“\033[F”将光标向上移动一行。

问题在于,有时表格的行数大于适合屏幕的行数,因此有些行保持隐藏状态,需要滚动屏幕才能看到它们。当应用程序向上或向下移动文本光标时,它不能移动到隐藏的行,分别在第一条或最后一条可见行处停止。我想知道是否有某种方式可以访问超出可见屏幕区域的行。

【问题讨论】:

  • 查看ncurses 库。
  • 考虑一个合适的 GUI :)

标签: c++ terminal console


【解决方案1】:

对于 Windows,请在 <Windows.h> 下查看此内容,

HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hStdout, { 20, 4 });

其中,“4”指的是行(或行以便更好地理解),“20”指的是列(或行上的光标位置)。

【讨论】:

    猜你喜欢
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    相关资源
    最近更新 更多