跳转到通过输入坐标定义的控制台屏幕位置

Jump to console screen position defined by entering coordinate

本文关键字:定义 控制台 屏幕 位置 坐标 输入      更新时间:2023-10-16

我有一个简单的控制台应用程序,使用Codeblocks c++ IDE创建。我想通过输入坐标将光标跳到任何屏幕位置。如何实现?

您可以使用 Windows Console API 中的函数。 为此,您只需要包含 windows.h 标头。

SetConsoleCursorPosition( HANDLE,COORD (应该可以解决问题。

查看Microsoft 文档中的文档。

下面是一个演示示例:

#include<iostream>
#include<windows.h>
#include<cstdio>
using namespace std;
void changeCursor( int columnPos, int rowPos )
{
HANDLE handle;      /// A HANDLE TO CONSOLE SCREEN BUFFER
/// COORD STRUCTURE CONTAINS THE COLUMN AND ROW
/// OF SCREEN BUFFER CHARACTER CELL
COORD coord;
coord.X = columnPos;
coord.Y = rowPos;
/// RETURNS A HANDLE TO THE SPECIFIED DEVICE.
handle = GetStdHandle(STD_OUTPUT_HANDLE);   /// STD_OUTPUT_HANDLE MEANS STANDARD
/// OUTPUT DEVICE(console screen buffer)
SetConsoleCursorPosition( handle,coord );   /// SETS CURSOR POSITION IN SPECIFIED
/// CONSOLE SCREEN BUFFER
}
int main()
{
int xCoord,yCoord;
cout<<"Lorem Ipsum is simply dummy text of nthe printing and typesetting industry.nLorem Ipsum has been the industry's standard ndummy text ever since the 1500.";
cout<<endl<<endl<<"Coordinates of Column and Row(zero indexed): ";
cin>>xCoord>>yCoord;
getchar();
changeCursor(xCoord,yCoord);        /// YOUR FUNCTION TO SET NEW CURSOR
getchar();          /// KEEP THE CONSOLE FROM TERMINATING
return 0;
}

输出:

Lorem Ipsum is simply dummy text of
the printing and typesetting industry.
Lor*e*m Ipsum has been the industry's standard
dummy text ever since the 1500.
Coordinates of Column and Row(zero indexed): 3 2

请注意,此处需要从左上角位置(即控制台屏幕的 (0,0( 位置(测量坐标。

X ,Y 值是字符位置,因为它们指向屏幕缓冲区字符单元格。

请参阅此处具有指定光标位置的示例输出。