控制台窗口的光标的位置反映的是当前文本输入的插入位置,通过Windows API函数我们可以随意更改光标的位置,下面介绍这个控制光标位置的API函
- BOOL SetConsoleCursorPosition( //设置光标位置
- HANDLE hConsoleOutput, //句柄
- COORD dwCursorPosition //坐标
- ); //若函数调用成功则返回非0值
不仅仅是光标的位置,光标的信息我们也可以通过一些API函数来设置,下面介绍光标信息结构体已经获得和设置光标信息的API函数,如下:
- typedef struct _CONSOLE_CURSOR_INFO //光标信息结构体
- {
- DWORD dwSize; //光标尺寸大小,范围是1~100
- BOOL bVisible; //表示光标是否可见,true表示可见
- } CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO;
- BOOL GetConsoleCursorInfo( //获得光标信息
- HANDLE hConsoleOutput, //句柄
- PCONSOLE_CURSOR_INFO lpConsoleCursorInfo //光标信息,注意这是个指针类型
- );
- BOOL SetConsoleCursorInfo( //设置光标信息
- HANDLE hConsoleOutput, //句柄
- const CONSOLE_CURSOR_INFO *lpConsoleCursorInfo //光标信息
- );
下面的示例程序来演示以上函数的使用
- #include <stdio.h>
- #include <Windows.h>
- #include <conio.h>
- #include <stdlib.h>
- int main()
- {
- HANDLE handle_out = GetStdHandle(STD_OUTPUT_HANDLE); //获得标准输出设备句柄
- CONSOLE_CURSOR_INFO cci; //定义光标信息结构体
- GetConsoleCursorInfo(handle_out, &cci); //获得当前光标信息
- _getch();
- cci.dwSize = 1; //设置光标尺寸为1
- SetConsoleCursorInfo(handle_out, &cci);
- _getch();
- cci.dwSize = 50; //设置光标尺寸为50
- SetConsoleCursorInfo(handle_out, &cci);
- _getch();
- cci.dwSize = 100; //设置光标尺寸为100
- SetConsoleCursorInfo(handle_out, &cci);
- _getch();
- cci.bVisible = false; //设置光标为不可见
- SetConsoleCursorInfo(handle_out, &cci);
- _getch();
- return 0;
- }