1、打开VS2017,新建一个“Windows控制台应用程序”项目,然后将其命名为“ConsoleDemo8”;
2、在打开的“ConsoleDemo8.cpp”文件中,包含Windows.h头文件。然后,在main函数中调用system函数暂停程序执行。框架代码添加完毕后,调试执行程序。在睫撮槐攻弹出的控制台窗口中,你可以见到“请按任意键继续…”右侧闪烁的光标,那就是控制台光标,下一个字符将从光标处开始显示。打开控制台窗口属性,在“选项”页面中,可以设置光标大小,即光标所占用的字符单元格高度的百分比,从1~100;
![[控制台(8)] 设置控制台输出的光标位置[TZZ]](https://exp-picture.cdn.bcebos.com/359bee5e4a2379713c66e76d93196120a6cde3d0.jpg)
![[控制台(8)] 设置控制台输出的光标位置[TZZ]](https://exp-picture.cdn.bcebos.com/ff5c88d81819612061b67ddb70f202b374d7dfd0.jpg)
![[控制台(8)] 设置控制台输出的光标位置[TZZ]](https://exp-picture.cdn.bcebos.com/a68c126efbf202b3bface8ce30f4da5873dadbd0.jpg)
3、结束控制台程序,返回到main函数中,添加“获取控制台光标信息”的测试代码。然后调试运行程序。在这份测试代码中,通过Windows API函数GetConsoleCursorInfo获取标准输出缓冲区中的光标信息,然后将获取到的内容输出;
![[控制台(8)] 设置控制台输出的光标位置[TZZ]](https://exp-picture.cdn.bcebos.com/db196cdade49610f5a2ddcb1a56817e950e1d2d0.jpg)
4、在弹出的控制台窗口中,可以见到输出的控制台光标信息。光标高度占字符单元格的25%,并且处于显示状态。如果此时修改窗口属性中的光标大小,那么控制台中的光标高度将发生变化;
![[控制台(8)] 设置控制台输出的光标位置[TZZ]](https://exp-picture.cdn.bcebos.com/5917cb3da824d8e917a9cad3da598540112ac8d0.jpg)
5、结束控制台程序,返回到main函数中。继续添加“禁用控制台光标”的测试代码,然后调试运行程序。在Windows中,设置控制台输出缓存的光标信息,可以通过SetConsoleCursorInfo函数实现;
![[控制台(8)] 设置控制台输出的光标位置[TZZ]](https://exp-picture.cdn.bcebos.com/3b03be7aa010bc330a43450e92efa25f0d143fd1.jpg)
6、在弹出的控制台窗口中,你会发现之前见到过的光标已经消失了,表示代码执行成功;
![[控制台(8)] 设置控制台输出的光标位置[TZZ]](https://exp-picture.cdn.bcebos.com/d3c39889a146b7b11e820e08c77c34b33d4135d1.jpg)
7、结束控制台程序,返回到main函数中。继续增加“将光标设置为最高”的测试代码。然后调试运行程序。在弹出的控制台窗口中,你会发现光标已经占据了整个字符单元格的高度;
![[控制台(8)] 设置控制台输出的光标位置[TZZ]](https://exp-picture.cdn.bcebos.com/023cff37c97622bc86bebed2a05fd546049628d1.jpg)
![[控制台(8)] 设置控制台输出的光标位置[TZZ]](https://exp-picture.cdn.bcebos.com/b442d6d246fe474ec4ff420ab0ef354f51b81fd1.jpg)
8、结束控制台程序,返回到main函数中。继欹爸葛端续添加“设置光标插入位置”的测试程序。然后调试运行程序。这里需要注意,调用SetConsoleCursorPosition函数设置光标位置时,其坐标醐蛑臀谁位置采用笛卡尔坐标系,但是每个坐标值对应的则是缓冲区的字符单元格位置,并非窗口中显示采用的像素位置;
![[控制台(8)] 设置控制台输出的光标位置[TZZ]](https://exp-picture.cdn.bcebos.com/b57fb6db574afa329ce05d4254b2dc19cf2c14d1.jpg)
9、在弹出的控制台窗口中,你会发现输出的内容,出现在了(10, 10)字符单元格的位置。虽然打印的“请按任意键继续…”则从横坐标0的位置开始输出;
![[控制台(8)] 设置控制台输出的光标位置[TZZ]](https://exp-picture.cdn.bcebos.com/a1780d1fceecd3d97209837167995943050108d1.jpg)
10、结束控制台程序,返回到main函数中。可以通过Windows API函数Sleep(让代码暂停XXX毫秒再执行)和while循环,实现数字倒计时功能。测试代码编写完毕后,调试运行程序。在弹出的控制台中,你可以见到动态的变化的倒计时数字;
![[控制台(8)] 设置控制台输出的光标位置[TZZ]](https://exp-picture.cdn.bcebos.com/1f03436b04d14929bff448a663e5eceeacbc7ed1.jpg)
![[控制台(8)] 设置控制台输出的光标位置[TZZ]](https://exp-picture.cdn.bcebos.com/46315818dfdae43b14fa7394c457935652bb74d1.jpg)
11、结束控制台程序,返回到main函数中。继欹爸葛端续添加“动态清空屏幕内容”的测试代码。然后调试运行程序。在这份代码中,通过GetConsoleScreenBufferInfo函数得到当前控制台窗口的大小。然后通过双层for循环,不断的调整光标位置并输出一个由空格开始的字符蜗牛。之所以由空格开始,是为了在下次输出时,能够清空(覆盖)前一个单元格的内容;
![[控制台(8)] 设置控制台输出的光标位置[TZZ]](https://exp-picture.cdn.bcebos.com/65ba880b312105613ddf245c08aee8d7582a6ad1.jpg)
12、在弹出的控制台窗口中,你会见到一个不断从左边出现,然后移动到右边的字符蜗牛。当程序执行完毕后,会在控制台输出缓存的下一行输出一个蜗牛,并打印“请按任意键继续…”。之所以会多出一行,是因为当控制台中输出的内容超出行宽时,它会自动切换到下一行进行输出;
![[控制台(8)] 设置控制台输出的光标位置[TZZ]](https://exp-picture.cdn.bcebos.com/e1390a31dfb6326c141ae87a89532f63228560d1.jpg)
![[控制台(8)] 设置控制台输出的光标位置[TZZ]](https://exp-picture.cdn.bcebos.com/46a92de039723d03f5964f33bb486143d6d457d1.jpg)
13、至此,通过代码设置控制台中的光标位置的代码就介绍完毕了。如果您希望学到更多实用的编程知识,就请关注我吧!Enjoy!