gotoxy()用户在c ++中定义的函数

时间:2014-01-27 07:27:36

标签: c++

我已经在我的课程中读到,gotxy()是一个预定义的函数,但它不适用于Microsoft Visual 2013.so我做了一些搜索,我得到了那段工作的代码,但我必须理解它。所以任何人都可以详细解释它。

void gotoxy(int x, int y)
{
HANDLE hConsoleOutput;
COORD dwCursorPosition;

cout.flush();
dwCursorPosition.X = x;
dwCursorPosition.Y = y;
hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hConsoleOutput, dwCursorPosition);
}

1 个答案:

答案 0 :(得分:4)

你的课程资料已经过时了大约30年,我认为,目标是DOS,甚至不是Windows 1.0。

无论如何,你现在拥有的功能是一个仍然适用于现代Windows系统的实现,即使它已经过时了大约20年。

第一行定义HANDLE hConsoleOutput;。它无法初始化变量,应该这样做:HANDLE hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);。稍后需要此句柄。

第二行定义坐标位置COORD dwCursorPosition;。同样的问题,它应该已经初始化:COORD dwCursorPosition = { x,y };

cout.flush()确保在调用之前的所有旧输出都写在旧的光标位置。

接下来的三个陈述是修复未初始化的变量,如果做得恰当,则不应该是必要的。最后,最后一次调用确实告诉了Windows下一步要打印的位置。