c语⾔光标移动
1.引⼊
作为⼀个C语⾔⼊门者,刚开始编写程序时,都使⽤控制台程序。在控制台中,完成了⼀个⼜⼀个程序。渐渐发现控制台不⽅便了。控制台貌似只能,从上到下,从左到右的进⾏输出。如果进⾏页⾯设计就会发现,想在光标所处位置的上⽅添加⼀些内容,该怎么办呢?
2.解决⽅案
能否解决这类问题呢?答案是当然的。
直接添加如下的⾃定义函数。然后再需要光标移动时,直接调⽤就可以实现光标的移动。
void goto_xy(int x, int y)//定位光标位置到指定坐标
{
HANDLE hOut;
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos = { x,y };
SetConsoleCursorPosition(hOut, pos);
}
ps 1:添加这个⾃定义函数,必须要声明Windows.h的头⽂件
ps 2:使⽤时把它当做⼀个⾃定义函数,可以直接调⽤,传⼊的参数为相应的坐标
ps 3:使⽤这个函数时,不会清除屏幕中相关的内容
ps 4:光标移动后,再次输⼊时,如果原来位置有⽂字,会被覆盖掉
3.浅析光标移动函数的原理
a.句柄(HANDLE)
在⽰例程序中HANDLE就是句柄数据类型。可以把对象的句柄赋给它。
b.API函数
Ps :我们刚刚讲到过,句柄不是指针,对进程不可见,只能由操作系统来进⾏操作。⽽这种操作就要使⽤API函数。
Ps :⽇常使⽤API的⼏率很⼩,所以API不⽤系统的去学,在需要的时候去查API帮助就⾜够了。
-
>在⽰例程序中GetStdHandle()就是⼀个API函数。
它的作⽤是从⼀个特定的标准设备(标准输⼊、标准输出或标准错误)中取得⼀个句柄
这⾥的句柄也可以理解为指光标停留位置的信息。
值含义
STD_INPUT_HANDLE标准输⼊的句柄
STD_OUTPUT_HANDLE标准输出的句柄
STD_ERROR_HANDLE标准错误的句柄
GetStdHandle()的⼏种参数
c.COORD
COORD是Windows API中定义的⼀种结构,表⽰⼀个字符在控制台屏幕上的坐标。
typedef struct _COORD
{
自定义函数怎么用c语言SHORT X;
SHORT Y;
} COORD;
COORD是⼀个结构体,表⽰⼀个坐标。定义包含在Windows.h的头⽂件⾥。
d.SetConsoleCursorPosition()
SetConsoleCursorPosition是⼀个实现光标的位置控制的计算机函数。
它的两个参数为(光标句柄,COORD的结构体)
作⽤是将光标句柄,移动到COORD指向的位置。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论