使用 C++将文本光标移动到屏幕中不可见的行

Move text cursor to lines that are not visible in screen using C++

本文关键字:屏幕 C++ 文本 光标 移动 使用      更新时间:2023-10-16

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

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

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

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

其中,"4"表示行(或行以便更好地理解(,"20"表示列(或行上的光标位置(。